You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(60) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(18) |
Feb
(4) |
Mar
(6) |
Apr
(2) |
May
|
Jun
(12) |
Jul
(48) |
Aug
(6) |
Sep
(3) |
Oct
(24) |
Nov
(15) |
Dec
(18) |
| 2002 |
Jan
(39) |
Feb
(12) |
Mar
(80) |
Apr
(72) |
May
(46) |
Jun
(27) |
Jul
(23) |
Aug
(34) |
Sep
(65) |
Oct
(71) |
Nov
(19) |
Dec
(14) |
| 2003 |
Jan
(44) |
Feb
(59) |
Mar
(18) |
Apr
(62) |
May
(54) |
Jun
(27) |
Jul
(46) |
Aug
(15) |
Sep
(44) |
Oct
(36) |
Nov
(19) |
Dec
(12) |
| 2004 |
Jan
(26) |
Feb
(33) |
Mar
(47) |
Apr
(63) |
May
(36) |
Jun
(65) |
Jul
(80) |
Aug
(163) |
Sep
(65) |
Oct
(39) |
Nov
(36) |
Dec
(39) |
| 2005 |
Jan
(97) |
Feb
(78) |
Mar
(64) |
Apr
(64) |
May
(48) |
Jun
(55) |
Jul
(89) |
Aug
(57) |
Sep
(51) |
Oct
(111) |
Nov
(86) |
Dec
(76) |
| 2006 |
Jan
(84) |
Feb
(103) |
Mar
(143) |
Apr
(92) |
May
(55) |
Jun
(58) |
Jul
(71) |
Aug
(57) |
Sep
(74) |
Oct
(59) |
Nov
(8) |
Dec
(32) |
| 2007 |
Jan
(60) |
Feb
(40) |
Mar
(50) |
Apr
(26) |
May
(61) |
Jun
(120) |
Jul
(119) |
Aug
(48) |
Sep
(121) |
Oct
(66) |
Nov
(103) |
Dec
(43) |
| 2008 |
Jan
(60) |
Feb
(109) |
Mar
(92) |
Apr
(106) |
May
(82) |
Jun
(59) |
Jul
(67) |
Aug
(118) |
Sep
(131) |
Oct
(56) |
Nov
(37) |
Dec
(69) |
| 2009 |
Jan
(75) |
Feb
(76) |
Mar
(103) |
Apr
(78) |
May
(61) |
Jun
(35) |
Jul
(66) |
Aug
(69) |
Sep
(166) |
Oct
(46) |
Nov
(72) |
Dec
(65) |
| 2010 |
Jan
(48) |
Feb
(57) |
Mar
(93) |
Apr
(85) |
May
(123) |
Jun
(82) |
Jul
(98) |
Aug
(121) |
Sep
(146) |
Oct
(86) |
Nov
(72) |
Dec
(34) |
| 2011 |
Jan
(96) |
Feb
(55) |
Mar
(73) |
Apr
(57) |
May
(33) |
Jun
(74) |
Jul
(89) |
Aug
(71) |
Sep
(103) |
Oct
(76) |
Nov
(52) |
Dec
(61) |
| 2012 |
Jan
(48) |
Feb
(54) |
Mar
(78) |
Apr
(60) |
May
(75) |
Jun
(59) |
Jul
(33) |
Aug
(66) |
Sep
(43) |
Oct
(46) |
Nov
(75) |
Dec
(51) |
| 2013 |
Jan
(112) |
Feb
(72) |
Mar
(49) |
Apr
(48) |
May
(42) |
Jun
(44) |
Jul
(80) |
Aug
(19) |
Sep
(33) |
Oct
(37) |
Nov
(38) |
Dec
(98) |
| 2014 |
Jan
(113) |
Feb
(93) |
Mar
(49) |
Apr
(106) |
May
(97) |
Jun
(155) |
Jul
(87) |
Aug
(127) |
Sep
(85) |
Oct
(48) |
Nov
(41) |
Dec
(37) |
| 2015 |
Jan
(34) |
Feb
(50) |
Mar
(104) |
Apr
(80) |
May
(82) |
Jun
(66) |
Jul
(41) |
Aug
(84) |
Sep
(37) |
Oct
(65) |
Nov
(83) |
Dec
(52) |
| 2016 |
Jan
(68) |
Feb
(35) |
Mar
(42) |
Apr
(35) |
May
(54) |
Jun
(75) |
Jul
(45) |
Aug
(52) |
Sep
(60) |
Oct
(52) |
Nov
(36) |
Dec
(64) |
| 2017 |
Jan
(92) |
Feb
(59) |
Mar
(35) |
Apr
(53) |
May
(83) |
Jun
(43) |
Jul
(65) |
Aug
(68) |
Sep
(46) |
Oct
(75) |
Nov
(40) |
Dec
(49) |
| 2018 |
Jan
(68) |
Feb
(54) |
Mar
(48) |
Apr
(58) |
May
(51) |
Jun
(44) |
Jul
(40) |
Aug
(68) |
Sep
(35) |
Oct
(15) |
Nov
(7) |
Dec
(37) |
| 2019 |
Jan
(43) |
Feb
(7) |
Mar
(22) |
Apr
(21) |
May
(31) |
Jun
(39) |
Jul
(73) |
Aug
(45) |
Sep
(47) |
Oct
(89) |
Nov
(19) |
Dec
(69) |
| 2020 |
Jan
(52) |
Feb
(63) |
Mar
(45) |
Apr
(59) |
May
(42) |
Jun
(57) |
Jul
(30) |
Aug
(29) |
Sep
(75) |
Oct
(64) |
Nov
(96) |
Dec
(22) |
| 2021 |
Jan
(14) |
Feb
(24) |
Mar
(35) |
Apr
(58) |
May
(36) |
Jun
(15) |
Jul
(18) |
Aug
(31) |
Sep
(30) |
Oct
(33) |
Nov
(27) |
Dec
(16) |
| 2022 |
Jan
(35) |
Feb
(22) |
Mar
(14) |
Apr
(20) |
May
(44) |
Jun
(53) |
Jul
(25) |
Aug
(56) |
Sep
(11) |
Oct
(47) |
Nov
(22) |
Dec
(36) |
| 2023 |
Jan
(30) |
Feb
(17) |
Mar
(31) |
Apr
(48) |
May
(31) |
Jun
(7) |
Jul
(25) |
Aug
(26) |
Sep
(61) |
Oct
(66) |
Nov
(19) |
Dec
(21) |
| 2024 |
Jan
(37) |
Feb
(29) |
Mar
(26) |
Apr
(26) |
May
(34) |
Jun
(9) |
Jul
(27) |
Aug
(13) |
Sep
(15) |
Oct
(25) |
Nov
(13) |
Dec
(8) |
| 2025 |
Jan
(13) |
Feb
(1) |
Mar
(16) |
Apr
(17) |
May
(8) |
Jun
(6) |
Jul
(9) |
Aug
|
Sep
(6) |
Oct
(15) |
Nov
(6) |
Dec
|
| 2026 |
Jan
(6) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Luigi B. <lui...@gm...> - 2026-01-13 08:37:19
|
QuantLib 1.41 is available for download at < https://www.quantlib.org/download.shtml>; precompiled binaries are also available from PyPI and NuGet for Python and C# respectively. The list of changes for this release is at < https://github.com/lballabio/QuantLib/releases/tag/v1.41>. If you have any problems with this release, please report them here on the QuantLib mailing list (<qua...@li...>) or open a GitHub issue at <https://github.com/lballabio/quantlib/issues>. |
|
From: Luigi B. <lui...@gm...> - 2026-01-07 08:26:42
|
Hi all, a release candidate for QuantLib 1.41 is available at < https://github.com/lballabio/QuantLib/releases/tag/v1.41-rc>. Python wheels are also available at < https://test.pypi.org/project/QuantLib/1.41rc0/>, and a C# NuGet package is at <https://int.nugettest.org/packages/QuantLib/1.41.0-rc>. If you have some time, please try it out and report any issues on GitHub (or here on the mailing list). Thanks! Luigi |
|
From: Kenji O. <for...@gm...> - 2026-01-05 10:14:00
|
Hi Luigi, Thank you very much for the clarification. I was not aware of ql.CustomRegion, but after creating a CustomRegion for Japan and passing it to the ZeroInflationIndex constructor, everything worked as expected. I really appreciate your help. By the way, I am based in Japan and have published a book here related to QuantLib-Python. Its ISBN-13 is *978-4320096530*. Thank you again for your support. Best regards, Kenji Ogawa 2026年1月5日(月) 17:36 Luigi Ballabio <lui...@gm...>: > Hi, > ql.Japan() is a calendar, not an instance of Region. You can create a > region for Japan using the ql.CustomRegion class. Once you pass that to > the ZeroInflationIndex constructor, it should work. > > Hope this helps, > Luigi > > > On Sun, Jan 4, 2026 at 1:33 AM Kenji Ogawa <for...@gm...> wrote: > >> Hi there, >> >> I am unable to construct a ZeroInflationIndex from Python using QuantLib >> version 1.40 and the current constructor. >> >> The following Python code fails on my side: >> >> import QuantLib as ql >> jpCPI = ql.ZeroInflationIndex( >> "Japan CPI", >> ql.Japan(), >> False, >> ql.Monthly, >> ql.Period(3, ql.Months), >> ql.JPYCurrency() >> ) >> >> Could you please point me to the specific place where this should be >> fixed? >> >> Regards, Kenji >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users >> > |
|
From: Luigi B. <lui...@gm...> - 2026-01-05 08:37:05
|
Hi,
ql.Japan() is a calendar, not an instance of Region. You can create a
region for Japan using the ql.CustomRegion class. Once you pass that to
the ZeroInflationIndex constructor, it should work.
Hope this helps,
Luigi
On Sun, Jan 4, 2026 at 1:33 AM Kenji Ogawa <for...@gm...> wrote:
> Hi there,
>
> I am unable to construct a ZeroInflationIndex from Python using QuantLib
> version 1.40 and the current constructor.
>
> The following Python code fails on my side:
>
> import QuantLib as ql
> jpCPI = ql.ZeroInflationIndex(
> "Japan CPI",
> ql.Japan(),
> False,
> ql.Monthly,
> ql.Period(3, ql.Months),
> ql.JPYCurrency()
> )
>
> Could you please point me to the specific place where this should be fixed?
>
> Regards, Kenji
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Kenji O. <for...@gm...> - 2026-01-04 11:22:30
|
Thank you for your suggestion.
My intention is to evaluate a Japanese inflation-linked bond using the
constructor of ql.CPIBond, which I find very powerful and convenient.
In order to do so, I need to construct a ZeroInflationIndex for Japan.
However, with my current setup, I am unable to successfully create the
Japanese CPI index, as shown below.
I am not questioning the CPI figures themselves; rather, I am trying to
understand the correct way to construct the ZeroInflationIndex in
QuantLib-python for this use case.
I would appreciate it if you could clarify whether my usage of the
ZeroInflationIndex constructor is incorrect, or if there is a known issue
or limitation in the current implementation. Any guidance would be very
helpful.
Kenji
<< my code >>
import QuantLib as ql
print(ql.__version__)
yieldHDL = ql.YieldTermStructureHandle(
ql.FlatForward(
ql.Date(1, ql.January, 2024),
0.02,
ql.Actual365Fixed() ))
jpCPI = ql.ZeroInflationIndex(
"Japan CPI",
ql.Japan(),
False,
ql.Monthly,
ql.Period(3, ql.Months),
ql.JPYCurrency(),
yieldHDL
)
1.40
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_10428\3520687904.py in ?()
7 ql.Date(1, ql.January, 2024),
8 0.02,
9 ql.Actual365Fixed() ))
10
---> 11 jpCPI = ql.ZeroInflationIndex(
12 "Japan CPI",
13 ql.Japan(),
14 False,
e:\local\anaconda3\Lib\site-packages\QuantLib\QuantLib.py in ?(self, *args)
23445 def __init__(self, *args):
23446 r"""__init__(ZeroInflationIndex self, std::string const &
familyName, Region region, bool revised, Frequency frequency, Period
availabilityLag, Currency currency, ZeroInflationTermStructureHandle h={})
-> ZeroInflationIndex"""
> 23447 _QuantLib.ZeroInflationIndex_swiginit(self,
_QuantLib.new_ZeroInflationIndex(*args))
TypeError: Wrong number or type of arguments for overloaded function
'new_ZeroInflationIndex'.
Possible C/C++ prototypes are:
ZeroInflationIndex::ZeroInflationIndex(std::string const &,Region const
&,bool,Frequency,Period const &,Currency const &,Handle<
ZeroInflationTermStructure > const &)
ZeroInflationIndex::ZeroInflationIndex(std::string const &,Region const
&,bool,Frequency,Period const &,Currency const &)
2026年1月4日(日) 10:10 dandalerovivaciously <dan...@gm...>:
> +Qua...@li...
> <Qua...@li...>
>
> On Sun, Jan 4, 2026 at 10:08 AM dandalerovivaciously <
> dan...@gm...> wrote:
>
>> Ogawa san,
>>
>> Why are you creating your own inflation Index, you dont trust the CPI
>> figures published?
>>
>> Try the following:
>>
>> import QuantLib as ql
>>
>> # Create the term structure first (you'll need to provide your inflation
>> data)
>> # For demonstration, I'll create a flat forward curve
>> today = ql.Date(1, ql.January, 2024)
>> ql.Settings.instance().evaluationDate = today
>>
>> # Create a flat forward term structure for CPI
>> rate = 0.02 # 2% inflation
>> observationLag = ql.Period(3, ql.Months)
>> cpiTermStructure = ql.FlatForward(
>> today,
>> rate,
>> ql.ActualActual(),
>> ql.Continuous
>> )
>>
>> # Create the ZeroInflationIndex
>> jpCPI = ql.ZeroInflationIndex(
>> "Japan CPI", # family name
>> ql.Japan(), # region
>> False, # revised
>> ql.Monthly, # frequency
>> observationLag, # availability lag
>> ql.JPYCurrency(), # currency
>> cpiTermStructure # term structure (required parameter)
>> )
>>
>> print(f"Created ZeroInflationIndex: {jpCPI.name()}")
>>
>>
>>
>>
>>
>> or this:
>>
>>
>> import QuantLib as ql
>>
>> # Create CPI fixing data
>> cpi_fixings = {
>> ql.Date(1, 1, 2023): 100.0,
>> ql.Date(1, 2, 2023): 100.2,
>> ql.Date(1, 3, 2023): 100.5,
>> # Add more historical data
>> }
>>
>> # Create term structure with interpolated data
>> today = ql.Date(1, ql.January, 2024)
>> ql.Settings.instance().evaluationDate = today
>>
>> # Create dates and rates for term structure
>> dates = [ql.Date(1, 1, 2023), ql.Date(1, 1, 2025), ql.Date(1, 1, 2030)]
>> rates = [0.02, 0.025, 0.03] # Inflation rates
>>
>> # Create interpolated term structure
>> cpiTermStructure = ql.ZeroInflationCurve(
>> today,
>> dates,
>> rates,
>> ql.ActualActual(),
>> ql.Japan(),
>> ql.Monthly,
>> ql.Period(3, ql.Months),
>> ql.Linear()
>> )
>>
>> # Create the index
>> jpCPI = ql.ZeroInflationIndex(
>> "Japan CPI",
>> ql.Japan(),
>> False,
>> ql.Monthly,
>> ql.Period(3, ql.Months),
>> ql.JPYCurrency(),
>> cpiTermStructure
>> )
>>
>> # Add historical fixings
>> for date, fixing in cpi_fixings.items():
>> jpCPI.addFixing(date, fixing)
>>
>> print(f"ZeroInflationIndex created successfully")
>> print(f"Evaluation date: {today}")
>> print(f"Index has term structure: {jpCPI.zeroInflationTermStructure() is
>> not None}")
>>
>>
>>
>>
>>
>>
>>
>>
|
|
From: Kenji O. <for...@gm...> - 2026-01-04 00:32:56
|
Hi there,
I am unable to construct a ZeroInflationIndex from Python using QuantLib
version 1.40 and the current constructor.
The following Python code fails on my side:
import QuantLib as ql
jpCPI = ql.ZeroInflationIndex(
"Japan CPI",
ql.Japan(),
False,
ql.Monthly,
ql.Period(3, ql.Months),
ql.JPYCurrency()
)
Could you please point me to the specific place where this should be fixed?
Regards, Kenji
|
|
From: Lichters, R. <Rol...@ls...> - 2025-11-17 15:05:14
|
CORPORATE Hi Brian, indeed, you can build that using QuantLib components. Our take is in ORE, https://github.com/OpenSourceRisk/Engine using the scripted trade framework, see example https://github.com/OpenSourceRisk/Engine/tree/master/Examples/ScriptedTrade, that has an equity accumulator. Best wishes, Roland From: Luigi Ballabio <lui...@gm...> Date: Monday, 17 November 2025 at 15:18 To: Brian Smith <bri...@gm...> Cc: QuantLib Users <qua...@li...> Subject: Re: [Quantlib-users] Derivative pricing using Quantlib *** EXTERNAL EMAIL *** Hello Brian, first of all, apologies for the delay. No, equity accumulators are not supported directly. In C++, it should be possible to build something using the Monte Carlo framework; see chapter 6 in Implementing QuantLib, or the corresponding posts at <https://www.implementingquantlib.com/posts/implementing-quantlib.html<https://www.implementingquantlib.com/posts/implementing-quantlib.html>>. Hope this helps, Luigi On Thu, Oct 23, 2025 at 12:50 PM Brian Smith <bri...@gm...<mailto:bri...@gm...>> wrote: Hi, I wonder if Quantlib has any function or method to price Equity Accumulator derivative pricing? Any guidance would be greatly appreciated. Thanks and regards, _______________________________________________ QuantLib-users mailing list Qua...@li...<mailto:Qua...@li...> https://lists.sourceforge.net/lists/listinfo/quantlib-users<https://lists.sourceforge.net/lists/listinfo/quantlib-users> ------------------------------------------------------------------------------------------------------------ Please read these warnings and restrictions: This e-mail transmission is strictly confidential and intended solely for the ordinary user of the e-mail address to which it was addressed. It may contain legally privileged and/or CONFIDENTIAL information. The unauthorised use, disclosure, distribution and/or copying of this e-mail or any information it contains is prohibited and could, in certain circumstances, constitute a criminal offence. If you have received this e-mail in error or are not an intended recipient please inform London Stock Exchange Group (“LSEG”) immediately by return e-mail or telephone 020 7797 1000. LSEG may collect, process and retain your personal information for its business purposes. For more information please see our Privacy Policy. We advise that in keeping with good computing practice the recipient of this e-mail should ensure that it is virus free. We do not accept responsibility for any virus that may be transferred by way of this e-mail. E-mail may be susceptible to data corruption, interception and unauthorised amendment, and we do not accept liability for any such corruption, interception or amendment or any consequences thereof. Calls to London Stock Exchange Group may be recorded to enable LSEG to carry out its regulatory responsibilities. For more details on the LSEG group of companies click here London Stock Exchange Group plc 10 Paternoster Square London EC4M 7LS Registered in England and Wales No 05369106 ------------------------------------------------------------------------------------------------------------ |
|
From: Luigi B. <lui...@gm...> - 2025-11-17 14:17:08
|
Hello Brian,
first of all, apologies for the delay. No, equity accumulators are not
supported directly. In C++, it should be possible to build something using
the Monte Carlo framework; see chapter 6 in Implementing QuantLib, or the
corresponding posts at <
https://www.implementingquantlib.com/posts/implementing-quantlib.html>.
Hope this helps,
Luigi
On Thu, Oct 23, 2025 at 12:50 PM Brian Smith <bri...@gm...>
wrote:
> Hi,
>
> I wonder if Quantlib has any function or method to price Equity
> Accumulator derivative pricing?
>
> Any guidance would be greatly appreciated.
>
> Thanks and regards,
>
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Luigi B. <lui...@gm...> - 2025-11-07 14:18:33
|
Hello Ben,
you can use InterpolatedPiecewiseForwardSpreadedTermStructure (it's
exported in Python as PiecewiseForwardSpreadedTermStructure using
backward-flat interpolation between spread nodes
and PiecewiseLinearForwardSpreadedTermStructure using linear interpolation.)
Luigi
On Wed, Nov 5, 2025 at 12:29 AM Ben Watson <ben...@ma...>
wrote:
> HiHi,
>
> I think the answer to this already, but just want to check if there is an
> alternative
>
>
> In the code below we are adding a constant spread to the forward curve.
> However we have a term structure of spreads - is there a native Quantlib
> way of adding the term structure of spreads?
>
> ql.ForwardSpreadedTermStructure(YieldTermStructure, spread)
> crv = ql.FlatForward(ql.Date(10,1,2020),0.04875825,ql.Actual365Fixed())
> yts = ql.YieldTermStructureHandle(crv)
> spread = ql.QuoteHandle(ql.SimpleQuote(0.005))
> ql.ForwardSpreadedTermStructure(yts, spread)
>
> No big deal to write our own, but just wanted to check if there is
> something in the box to do this?
>
> Ben
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Ben W. <ben...@ma...> - 2025-11-04 23:29:23
|
HiHi, I think the answer to this already, but just want to check if there is an alternative In the code below we are adding a constant spread to the forward curve. However we have a term structure of spreads - is there a native Quantlib way of adding the term structure of spreads? ql.ForwardSpreadedTermStructure(YieldTermStructure, spread) crv = ql.FlatForward(ql.Date(10,1,2020),0.04875825,ql.Actual365Fixed()) yts = ql.YieldTermStructureHandle(crv) spread = ql.QuoteHandle(ql.SimpleQuote(0.005)) ql.ForwardSpreadedTermStructure(yts, spread) No big deal to write our own, but just wanted to check if there is something in the box to do this? Ben |
|
From: Luca B. <luc...@gm...> - 2025-11-02 18:32:16
|
Hi Kenji, I will double check tmrw with some colleagues more knowledgeable about xVA but this is how I see it: I think the market has separated the concept of PV and xVA. Currently, the market standard is for everyone (banks, corps, clearing houses…) to calculate the clean price aka “risk free” price using SOFT, STR for discounting. This is to provide a “standard” for everyone without considering cpt or funding risk. Note: most xIBOR do not even exist anymore, but for instance EURIBOR is used for forecasting the leg cash-flows if the swap is an old EURIBOR swap… for discounting industry still uses STR. At this point, xVA should enter the picture to account for the difference btw the clean price (RFR discounted) and the uncollateralized one, so this should in practice be the transition: (Old) IBOR-discounting —> (New) RFR-discounting + FVA charge. The FVA, in my opinion, should account for what you depicts as CVA, as it accounts for the fact that banks have to fund this uncollateralized trade at this higher funding costs, not at RFR. (Old) Price = PV(Cash_Flows, Discounted @ IBOR) (New) Price = PV(Cash_Flows, Discounted @ RFR) + FVA + CVA/DVA This allows the costs to be more granular. All in all, the final price for the same swap btw a bank and a corporation will be different due to the fact that the bank applies xVA on top of the standard RFR, while the corporation does not. I hope this helps a bit. Best, /Luca > On 1 Nov 2025, at 13.11, Kenji Ogawa <for...@gm...> wrote: > > Hi Luca, > > As I understand it, for ordinary corporations, swaps are typically discounted using an IBOR-based curve, and collateral is not posted. In such cases, valuation adjustments like CVA naturally account for the associated counterparty risks. Therefore, using an IBOR discount curve seems to be the normal configuration for non-interbank entities. > > Regards, > Kenji > > > 2025年10月28日(火) 17:38 Luca Begatti <luc...@gm... <mailto:luc...@gm...>>: > Hi, > > I believe the change you're observing is related to the transition to the €STR rate (the RFR for the Euro area) since January 2022. €STR is considered less susceptible to manipulation compared to the previous EONIA (Euribor for the Euro area). > > Therefore, I assume that new contracts and recently developed libraries employing discounting methods should use €STR. Contracts initiated before 2022 would still be based on EONIA, but newer ones should not. > > Given this, QuantLib must have been updated to use the €STR rate for discounting due to this shift. > > Do you have a specific case or trade in mind that we could examine? > > Best regards, > Luca > > > On Tue, 28 Oct 2025, 01:31 Kenji Ogawa, <for...@gm... <mailto:for...@gm...>> wrote: > Hi, > In today’s market, discount curves are based on RFRs such as the T+0 ESTR curve, so QuantLib’s current specification still produces correct results. > However, if the discount curve is set to an Euribor curve, the calculation becomes meaningless, which I don’t think is a desirable design. I hope this will be revised in future updates. > > Thank you very much for your prompt response. - Kenji > > > 2025年10月28日(火) 7:05 Aaron De la Rosa <aar...@gm... <mailto:aar...@gm...>>: > Hello Kenji > > Python code fixed. Check out the attachment. Open it using Visual Studio Code. > > Regards > > Aaron > From: Kenji Ogawa <for...@gm... <mailto:for...@gm...>> > Sent: Monday, October 27, 2025 9:37 AM > To: Aaron De la Rosa <aar...@gm... <mailto:aar...@gm...>> > Cc: Qua...@li... <mailto:Qua...@li...> <Qua...@li... <mailto:Qua...@li...>> > Subject: Re: [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 1/29/27 (Settlement Days Issue) > > Hello, > Please find attached the Jupyter Notebook code. > > When the parameters are set as " settleCRV, settleBND = 1, 2 ", the calculations run correctly. However, changing them to " settleCRV, settleBND = 2, 2 " produces abnormal results. > > It appears that the curve date needs to be set one day earlier than the bond settlement date. > > regards, > Kenji > > > > 2025年10月28日(火) 0:14 Aaron De la Rosa <aar...@gm... <mailto:aar...@gm...>>: > Could you share the entire code. So, I can fix it. > > Regard > > Aaron > From: Kenji Ogawa <for...@gm... <mailto:for...@gm...>> > Sent: Sunday, October 26, 2025 6:34 PM > To: Qua...@li... <mailto:Qua...@li...> <Qua...@li... <mailto:Qua...@li...>> > Subject: [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 1/29/27 (Settlement Days Issue) > > Below is the code that calculates the asset swap for IBM 1.25 1/29/27, traded on April 25, 2024, at a price of 93.95. > > When using settleDS = 3, the results are correct: > legNPV1 = 95.179 and fairSPD = 0.359%. > > However, when using settleDS = 2, the calculation produces abnormal results: > legNPV1 = 100.926 and fairSPD = -1.81%. > > Since the bond should settle on T+2, this discrepancy is problematic. > Could someone please help fix this error? > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... <mailto:Qua...@li...> > https://lists.sourceforge.net/lists/listinfo/quantlib-users <https://lists.sourceforge.net/lists/listinfo/quantlib-users> |
|
From: Kenji O. <for...@gm...> - 2025-11-01 12:11:59
|
Hi Luca, As I understand it, for ordinary corporations, swaps are typically discounted using an IBOR-based curve, and collateral is not posted. In such cases, valuation adjustments like CVA naturally account for the associated counterparty risks. Therefore, using an IBOR discount curve seems to be the normal configuration for non-interbank entities. Regards, Kenji 2025年10月28日(火) 17:38 Luca Begatti <luc...@gm...>: > Hi, > > I believe the change you're observing is related to the transition to the > €STR rate (the RFR for the Euro area) since January 2022. €STR is > considered less susceptible to manipulation compared to the previous EONIA > (Euribor for the Euro area). > > Therefore, I assume that new contracts and recently developed libraries > employing discounting methods should use €STR. Contracts initiated before > 2022 would still be based on EONIA, but newer ones should not. > > Given this, QuantLib must have been updated to use the €STR rate for > discounting due to this shift. > > Do you have a specific case or trade in mind that we could examine? > > Best regards, > Luca > > > On Tue, 28 Oct 2025, 01:31 Kenji Ogawa, <for...@gm...> wrote: > >> Hi, >> In today’s market, discount curves are based on RFRs such as the T+0 ESTR >> curve, so QuantLib’s current specification still produces correct results. >> However, if the discount curve is set to an Euribor curve, the >> calculation becomes meaningless, which I don’t think is a desirable design. >> I hope this will be revised in future updates. >> >> Thank you very much for your prompt response. - Kenji >> >> >> 2025年10月28日(火) 7:05 Aaron De la Rosa <aar...@gm...>: >> >>> Hello Kenji >>> >>> Python code fixed. Check out the attachment. Open it using Visual Studio >>> Code. >>> >>> Regards >>> >>> Aaron >>> ------------------------------ >>> *From:* Kenji Ogawa <for...@gm...> >>> *Sent:* Monday, October 27, 2025 9:37 AM >>> *To:* Aaron De la Rosa <aar...@gm...> >>> *Cc:* Qua...@li... < >>> Qua...@li...> >>> *Subject:* Re: [Quantlib-users] Asset Swap Calculation Error with IBM >>> 1.25 1/29/27 (Settlement Days Issue) >>> >>> Hello, >>> Please find attached the Jupyter Notebook code. >>> >>> When the parameters are set as " settleCRV, settleBND = 1, 2 ", the >>> calculations run correctly. However, changing them to " settleCRV, >>> settleBND = 2, 2 " produces abnormal results. >>> >>> It appears that the curve date needs to be set one day earlier than the >>> bond settlement date. >>> >>> regards, >>> Kenji >>> >>> >>> >>> 2025年10月28日(火) 0:14 Aaron De la Rosa <aar...@gm...>: >>> >>> Could you share the entire code. So, I can fix it. >>> >>> Regard >>> >>> Aaron >>> ------------------------------ >>> *From:* Kenji Ogawa <for...@gm...> >>> *Sent:* Sunday, October 26, 2025 6:34 PM >>> *To:* Qua...@li... < >>> Qua...@li...> >>> *Subject:* [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 >>> 1/29/27 (Settlement Days Issue) >>> >>> >>> Below is the code that calculates the asset swap for *IBM 1.25 1/29/27*, >>> traded on *April 25, 2024*, at a price of *93.95*. >>> >>> When using settleDS = 3, the results are correct: >>> legNPV1 = 95.179 and fairSPD = 0.359%. >>> >>> However, when using settleDS = 2, the calculation produces abnormal >>> results: >>> legNPV1 = 100.926 and fairSPD = -1.81%. >>> >>> Since the bond should settle on *T+2*, this discrepancy is problematic. >>> Could someone please help fix this error? >>> >>> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users >> > |
|
From: Luca B. <luc...@gm...> - 2025-10-31 10:31:22
|
Hi Luigi, Thanks for your suggestion. I was able to solve the issue by adjusting the deployment target in Xcode. Here’s how I did it: 1. I selected the "Bonds" example in the *Project Navigator* > *Targets*. 2. In the *Build Settings* for "Bonds," I searched for "Deployment Target." 3. I then changed the **macOS Deployment Target** setting from "13.1" to "12.0." I assume the default "13.1" was automatically set because the developer who built this part might have had macOS 13.1 installed at the time. Thanks again for your help! Best, Luca On Fri, 31 Oct 2025, 10:37 Luigi Ballabio, <lui...@gm...> wrote: > Hi, I'm not really sure where that requirement comes from. May you try > using the command line instead of Xcode, as in > https://www.quantlib.org/install/macosx.shtml ? > > Luigi > > > > On Thu, Oct 30, 2025 at 12:25 AM Luca Begatti <luc...@gm...> > wrote: > >> Hi, >> >> I have successfully forked, cloned and build the QuantLib library on >> Xcode and I wanted to try to run the “Bonds” example, but I have >> encountered this: >> >> *"xxx’s MacBook Pro runs macOS 12.7.6, which is lower than Bonds’s >> minimum deployment target of 13.1. Change your project’s minimum deployment >> target or upgrade Luca’s MacBook Pro’s version of macOS.**”* >> >> My laptop is quite old and Apple does not allow me to update MacOS >> anymore. Is there a way to solve this other than upgrading to a newer >> laptop/Mac? >> >> Thanks >> /Luca >> >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users >> > |
|
From: Luigi B. <lui...@gm...> - 2025-10-31 09:37:23
|
Hi, I'm not really sure where that requirement comes from. May you try using the command line instead of Xcode, as in https://www.quantlib.org/install/macosx.shtml ? Luigi On Thu, Oct 30, 2025 at 12:25 AM Luca Begatti <luc...@gm...> wrote: > Hi, > > I have successfully forked, cloned and build the QuantLib library on Xcode > and I wanted to try to run the “Bonds” example, but I have encountered this: > > *"xxx’s MacBook Pro runs macOS 12.7.6, which is lower than Bonds’s minimum > deployment target of 13.1. Change your project’s minimum deployment target > or upgrade Luca’s MacBook Pro’s version of macOS.**”* > > My laptop is quite old and Apple does not allow me to update MacOS > anymore. Is there a way to solve this other than upgrading to a newer > laptop/Mac? > > Thanks > /Luca > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Luca B. <luc...@gm...> - 2025-10-29 23:25:28
|
Hi, I have successfully forked, cloned and build the QuantLib library on Xcode and I wanted to try to run the “Bonds” example, but I have encountered this: "xxx’s MacBook Pro runs macOS 12.7.6, which is lower than Bonds’s minimum deployment target of 13.1. Change your project’s minimum deployment target or upgrade Luca’s MacBook Pro’s version of macOS.” My laptop is quite old and Apple does not allow me to update MacOS anymore. Is there a way to solve this other than upgrading to a newer laptop/Mac? Thanks /Luca |
|
From: Kenji O. <for...@gm...> - 2025-10-28 00:30:02
|
Hi, In today’s market, discount curves are based on RFRs such as the T+0 ESTR curve, so QuantLib’s current specification still produces correct results. However, if the discount curve is set to an Euribor curve, the calculation becomes meaningless, which I don’t think is a desirable design. I hope this will be revised in future updates. Thank you very much for your prompt response. - Kenji 2025年10月28日(火) 7:05 Aaron De la Rosa <aar...@gm...>: > Hello Kenji > > Python code fixed. Check out the attachment. Open it using Visual Studio > Code. > > Regards > > Aaron > ------------------------------ > *From:* Kenji Ogawa <for...@gm...> > *Sent:* Monday, October 27, 2025 9:37 AM > *To:* Aaron De la Rosa <aar...@gm...> > *Cc:* Qua...@li... < > Qua...@li...> > *Subject:* Re: [Quantlib-users] Asset Swap Calculation Error with IBM > 1.25 1/29/27 (Settlement Days Issue) > > Hello, > Please find attached the Jupyter Notebook code. > > When the parameters are set as " settleCRV, settleBND = 1, 2 ", the > calculations run correctly. However, changing them to " settleCRV, > settleBND = 2, 2 " produces abnormal results. > > It appears that the curve date needs to be set one day earlier than the > bond settlement date. > > regards, > Kenji > > > > 2025年10月28日(火) 0:14 Aaron De la Rosa <aar...@gm...>: > > Could you share the entire code. So, I can fix it. > > Regard > > Aaron > ------------------------------ > *From:* Kenji Ogawa <for...@gm...> > *Sent:* Sunday, October 26, 2025 6:34 PM > *To:* Qua...@li... < > Qua...@li...> > *Subject:* [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 > 1/29/27 (Settlement Days Issue) > > > Below is the code that calculates the asset swap for *IBM 1.25 1/29/27*, > traded on *April 25, 2024*, at a price of *93.95*. > > When using settleDS = 3, the results are correct: > legNPV1 = 95.179 and fairSPD = 0.359%. > > However, when using settleDS = 2, the calculation produces abnormal > results: > legNPV1 = 100.926 and fairSPD = -1.81%. > > Since the bond should settle on *T+2*, this discrepancy is problematic. > Could someone please help fix this error? > > |
|
From: Aaron De la R. <aar...@gm...> - 2025-10-27 20:07:31
|
OK. Let me check it out. I'll be back later. ________________________________ From: Kenji Ogawa <for...@gm...> Sent: Monday, October 27, 2025 9:37 AM To: Aaron De la Rosa <aar...@gm...> Cc: Qua...@li... <Qua...@li...> Subject: Re: [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 1/29/27 (Settlement Days Issue) Hello, Please find attached the Jupyter Notebook code. When the parameters are set as " settleCRV, settleBND = 1, 2 ", the calculations run correctly. However, changing them to " settleCRV, settleBND = 2, 2 " produces abnormal results. It appears that the curve date needs to be set one day earlier than the bond settlement date. regards, Kenji 2025年10月28日(火) 0:14 Aaron De la Rosa <aar...@gm...<mailto:aar...@gm...>>: Could you share the entire code. So, I can fix it. Regard Aaron ________________________________ From: Kenji Ogawa <for...@gm...<mailto:for...@gm...>> Sent: Sunday, October 26, 2025 6:34 PM To: Qua...@li...<mailto:Qua...@li...> <Qua...@li...<mailto:Qua...@li...>> Subject: [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 1/29/27 (Settlement Days Issue) Below is the code that calculates the asset swap for IBM 1.25 1/29/27, traded on April 25, 2024, at a price of 93.95. When using settleDS = 3, the results are correct: legNPV1 = 95.179 and fairSPD = 0.359%. However, when using settleDS = 2, the calculation produces abnormal results: legNPV1 = 100.926 and fairSPD = -1.81%. Since the bond should settle on T+2, this discrepancy is problematic. Could someone please help fix this error? |
|
From: Kenji O. <for...@gm...> - 2025-10-27 15:38:07
|
Hello, Please find attached the Jupyter Notebook code. When the parameters are set as " settleCRV, settleBND = 1, 2 ", the calculations run correctly. However, changing them to " settleCRV, settleBND = 2, 2 " produces abnormal results. It appears that the curve date needs to be set one day earlier than the bond settlement date. regards, Kenji 2025年10月28日(火) 0:14 Aaron De la Rosa <aar...@gm...>: > Could you share the entire code. So, I can fix it. > > Regard > > Aaron > ------------------------------ > *From:* Kenji Ogawa <for...@gm...> > *Sent:* Sunday, October 26, 2025 6:34 PM > *To:* Qua...@li... < > Qua...@li...> > *Subject:* [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 > 1/29/27 (Settlement Days Issue) > > > Below is the code that calculates the asset swap for *IBM 1.25 1/29/27*, > traded on *April 25, 2024*, at a price of *93.95*. > > When using settleDS = 3, the results are correct: > legNPV1 = 95.179 and fairSPD = 0.359%. > > However, when using settleDS = 2, the calculation produces abnormal > results: > legNPV1 = 100.926 and fairSPD = -1.81%. > > Since the bond should settle on *T+2*, this discrepancy is problematic. > Could someone please help fix this error? > > |
|
From: Aaron De la R. <aar...@gm...> - 2025-10-27 15:14:36
|
Could you share the entire code. So, I can fix it.
Regard
Aaron
________________________________
From: Kenji Ogawa <for...@gm...>
Sent: Sunday, October 26, 2025 6:34 PM
To: Qua...@li... <Qua...@li...>
Subject: [Quantlib-users] Asset Swap Calculation Error with IBM 1.25 1/29/27 (Settlement Days Issue)
Below is the code that calculates the asset swap for IBM 1.25 1/29/27, traded on April 25, 2024, at a price of 93.95.
When using settleDS = 3, the results are correct:
legNPV1 = 95.179 and fairSPD = 0.359%.
However, when using settleDS = 2, the calculation produces abnormal results:
legNPV1 = 100.926 and fairSPD = -1.81%.
Since the bond should settle on T+2, this discrepancy is problematic.
Could someone please help fix this error?
# =====================================================
# Asset swaps - IBM 1.25, Jan 2027
import QuantLib as ql; import pandas as pd; import numpy as np
settleDS = 2
tradeDT = ql.Date(25,4,2024)
settleDT = ql.TARGET().advance(tradeDT, settleDS, ql.Days)
ql.Settings.instance().evaluationDate = tradeDT
# my abbreviation
calEU = ql.TARGET()
dc30 = ql.Thirty360(ql.Thirty360.BondBasis)
dcAAb = ql.ActualActual(ql.ActualActual.Bond)
unADJ = ql.Unadjusted
dtGENb = ql.DateGeneration.Backward
EoMf = False
def sqHDL(xx): return ql.QuoteHandle(ql.SimpleQuote(xx))
# Euribor curve data
crvDATA = [('depo', '6m', 3.825), ('asOBJ', '1y', 3.7), ('asOBJ', '18m', 3.512),
('asOBJ', '2y', 3.378), ('asOBJ', '3y', 3.186), ('asOBJ', '4y', 3.067)]
# Euribor Index
ebCrvHDL = ql.RelinkableYieldTermStructureHandle()
ebrIX = ql.Euribor(ql.Period("6M"), ebCrvHDL)
# Swap Curve
cHelper, ebParRT = [], []
for knd, tnr, rt in crvDATA:
if knd == 'depo': cHelper.append(ql.DepositRateHelper(sqHDL(rt/100),ebrIX))
if knd == 'asOBJ': cHelper.append(ql.SwapRateHelper( sqHDL(rt/100),
ql.Period(tnr), calEU, ql.Annual, ql.ModifiedFollowing, dc30, ebrIX))
ebCrvOBJ = ql.PiecewiseLogLinearDiscount(2, calEU, cHelper, ql.Actual360())
ebCrvHDL.linkTo(ebCrvOBJ)
# bond
effDT, matDT = ql.Date(31,1,2019), ql.Date(29,1,2027)
faceAMT, cpnLST, clnPRC = 100.0, [0.0125], 93.95
bondSCD = ql.Schedule(effDT, matDT, ql.Period(ql.Annual), calEU, unADJ,unADJ, dtGENb, EoMf)
bondOBJ = ql.FixedRateBond(settleDS, faceAMT, bondSCD, cpnLST, dcAAb)
# asset swap
payFix, isPar = True, True
crdSPRD, fltSCH = 35/10000, ql.Schedule()
asOBJ = ql.AssetSwap(payFix,bondOBJ,clnPRC,ebrIX,crdSPRD,fltSCH,ebrIX.dayCounter(),isPar)
asOBJ.setPricingEngine(ql.DiscountingSwapEngine(ebCrvHDL))
print(f' NPV:{asOBJ.NPV(): 10.6f} \n'
f'legNPV0:{asOBJ.legNPV(0): 10.6f} \n'
f'legNPV1:{asOBJ.legNPV(1): 10.6f} \n'
f'fairSPD:{asOBJ.fairSpread(): 10.6%}')
# =====================================================
|
|
From: Luigi B. <lui...@gm...> - 2025-10-27 09:45:09
|
Hello Amine,
currently we're creating bindings to Python, C#, Java and R. We're
using SWIG, which means we're limited to what SWIG supports: some languages
(including Rust, unfortunately) are not supported, and other languages are
supported but don't provide all the features QuantLib requires (e.g.,
support for smart pointers).
Luigi
On Fri, Oct 24, 2025 at 5:23 PM Amine Ifri <ami...@gm...> wrote:
> Hi all,
>
> I was wondering if the C++ library can be used via bindings from languages
> other than Python. Specifically, has anyone ever created bindings for use
> with Rust programming language.
>
> Thanks,
> Amine Ifri
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Kenji O. <for...@gm...> - 2025-10-27 00:34:39
|
Below is the code that calculates the asset swap for *IBM 1.25 1/29/27*,
traded on *April 25, 2024*, at a price of *93.95*.
When using settleDS = 3, the results are correct:
legNPV1 = 95.179 and fairSPD = 0.359%.
However, when using settleDS = 2, the calculation produces abnormal results:
legNPV1 = 100.926 and fairSPD = -1.81%.
Since the bond should settle on *T+2*, this discrepancy is problematic.
Could someone please help fix this error?
# =====================================================
# Asset swaps - IBM 1.25, Jan 2027
import QuantLib as ql; import pandas as pd; import numpy as np
settleDS = 2
tradeDT = ql.Date(25,4,2024)
settleDT = ql.TARGET().advance(tradeDT, settleDS, ql.Days)
ql.Settings.instance().evaluationDate = tradeDT
# my abbreviation
calEU = ql.TARGET()
dc30 = ql.Thirty360(ql.Thirty360.BondBasis)
dcAAb = ql.ActualActual(ql.ActualActual.Bond)
unADJ = ql.Unadjusted
dtGENb = ql.DateGeneration.Backward
EoMf = False
def sqHDL(xx): return ql.QuoteHandle(ql.SimpleQuote(xx))
# Euribor curve data
crvDATA = [('depo', '6m', 3.825), ('asOBJ', '1y', 3.7), ('asOBJ', '18m',
3.512),
('asOBJ', '2y', 3.378), ('asOBJ', '3y', 3.186), ('asOBJ', '4y',
3.067)]
# Euribor Index
ebCrvHDL = ql.RelinkableYieldTermStructureHandle()
ebrIX = ql.Euribor(ql.Period("6M"), ebCrvHDL)
# Swap Curve
cHelper, ebParRT = [], []
for knd, tnr, rt in crvDATA:
if knd == 'depo': cHelper.append(ql.DepositRateHelper(sqHDL(rt/100),
ebrIX))
if knd == 'asOBJ': cHelper.append(ql.SwapRateHelper( sqHDL(rt/100),
ql.Period(tnr), calEU, ql.Annual, ql.ModifiedFollowing, dc30,
ebrIX))
ebCrvOBJ = ql.PiecewiseLogLinearDiscount(2, calEU, cHelper, ql.Actual360())
ebCrvHDL.linkTo(ebCrvOBJ)
# bond
effDT, matDT = ql.Date(31,1,2019), ql.Date(29,1,2027)
faceAMT, cpnLST, clnPRC = 100.0, [0.0125], 93.95
bondSCD = ql.Schedule(effDT, matDT, ql.Period(ql.Annual), calEU, unADJ,unADJ,
dtGENb, EoMf)
bondOBJ = ql.FixedRateBond(settleDS, faceAMT, bondSCD, cpnLST, dcAAb)
# asset swap
payFix, isPar = True, True
crdSPRD, fltSCH = 35/10000, ql.Schedule()
asOBJ = ql.AssetSwap(payFix,bondOBJ,clnPRC,ebrIX,crdSPRD,fltSCH,ebrIX.
dayCounter(),isPar)
asOBJ.setPricingEngine(ql.DiscountingSwapEngine(ebCrvHDL))
print(f' NPV:{asOBJ.NPV(): 10.6f} \n'
f'legNPV0:{asOBJ.legNPV(0): 10.6f} \n'
f'legNPV1:{asOBJ.legNPV(1): 10.6f} \n'
f'fairSPD:{asOBJ.fairSpread(): 10.6%}')
# =====================================================
|
|
From: Amine I. <ami...@gm...> - 2025-10-24 15:22:56
|
Hi all, I was wondering if the C++ library can be used via bindings from languages other than Python. Specifically, has anyone ever created bindings for use with Rust programming language. Thanks, Amine Ifri |
|
From: Brian S. <bri...@gm...> - 2025-10-23 10:50:19
|
Hi, I wonder if Quantlib has any function or method to price Equity Accumulator derivative pricing? Any guidance would be greatly appreciated. Thanks and regards, |
|
From: Luigi B. <lui...@gm...> - 2025-10-14 07:11:39
|
QuantLib 1.40 is available for download at < https://www.quantlib.org/download.shtml>; precompiled binaries are also available from PyPI and NuGet for Python and C# respectively. The list of changes for this release is at < https://github.com/lballabio/QuantLib/releases/tag/v1.40>. If you have any problems with this release, please report them here on the QuantLib mailing list (<qua...@li...>) or open a GitHub issue at <https://github.com/lballabio/quantlib/issues>. |
|
From: <vee...@gm...> - 2025-10-03 23:01:58
|
Hello all, First time writing this mailing list and as such it's my first time facing the ql API with the goal of having to integrate with its internals. I've tried the LLM route and have scoured the examples here: rkapl123.github.io/QLAnnotatedSource/. Neither approach has led to the necessary certainty i need to proceed; i need a path that's guaranteed to work if i work at it long enough. i really fear hacking away at a flawed approach that eats up time only to have to start over, so to speak, weeks later. So I ask for feedback on any one of the following hopefully relevant questions: *1. Architecture:* The paper underpinning the modelling challenge is linked below (download is available if you search). The approach maintains tree recombination by interpolating option values at dividend dates. Should I: - Create a custom Lattice class that overrides rollback()? - Modify a BinomialEngine subclass? - Or implement a completely separate DiscretizedAsset subclass? Which approach best fits QuantLib's design philosophy? *2. Technical Integration:* For the V-N method, at each dividend date during backward induction, I need to: - Store option values at all tree nodes at time t_D - Interpolate to find values at s-D(s) for each node s - Continue rollback with interpolated values Where in QuantLib's class hierarchy is the appropriate interception point? Should I override rollback(), partialRollback(), preAdjustValuesImpl(), or postAdjustValuesImpl() *3. Practical Experience:* If there is any source code out there you know of which you believe provides reliable answers to any one of the questions above, id greatly appreciate your letting me know. So far my searches haven't returned anything i can be sure is guaranteed to be helpful. My guess is one should inherit from DiscretizedAsset and take special care to implement the postAdjustValuesImpl virtual method. In this case one would have to populate an associated stock lattice, whose values would be exogenously filled, and not as it were, through some composition of a BlackScholesMertonProcess and a BinomialTree. Thanks in advance for your time and help. Veeken peper url: https://doi.org/10.1080/13504860600563077 |