Engine
Engine copied to clipboard
CHF-In-EUR convergence problem
When progressing with my upgrade from 1.6 to 1.11., I've come across another problem, this time this starts already to show up in 1.7.
Starting with version 1.7., ORE complains about
ALERT [2024-Feb-14 17:04:45.138401] (...ata\todaysmarket.cpp:903) : error while building node DiscountCurve(CHF,Yield/CHF/CHF-IN-EUR) in configuration default: yield curve building failed for curve CHF-IN-EUR on date 2024-02-13: convergence not reached after 99 iterations; last improvement 0.000531637, required accuracy 1e-12
ALERT [2024-Feb-14 17:04:45.140109] (...ata\todaysmarket.cpp:915) : StructuredErrorMessage { "errorType":"Curve", "curveId":"Yield/CHF/CHF-IN-EUR", "exceptionType":"Failed to Build Curve", "exceptionMessage":"yield curve building failed for curve CHF-IN-EUR on date 2024-02-13: convergence not reached after 99 iterations; last improvement 0.000531637, required accuracy 1e-12"}
This was no problem in 1.6, but 1.7 started to complain. Judging from the documentation, there were no additions to Tolerance and BootstrapConfig for curveconfig in 1.7, so the defaults (I only have specified Tolerance in the curve) should be the same.
<YieldCurve>
<CurveId>CHF-IN-EUR</CurveId>
<CurveDescription>CHF collateralized in EUR discount curve</CurveDescription>
<Currency>CHF</Currency>
<DiscountCurve />
<Segments>
<CrossCurrency>
<Type>FX Forward</Type>
<Quotes>
<Quote>FXFWD/RATE/EUR/CHF/1D</Quote>
<Quote>FXFWD/RATE/EUR/CHF/1W</Quote>
<Quote>FXFWD/RATE/EUR/CHF/2W</Quote>
<Quote>FXFWD/RATE/EUR/CHF/3W</Quote>
<Quote>FXFWD/RATE/EUR/CHF/1M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/2M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/3M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/4M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/5M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/6M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/7M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/8M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/9M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/10M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/11M</Quote>
<Quote>FXFWD/RATE/EUR/CHF/1Y</Quote>
</Quotes>
<Conventions>EUR-CHF-FX-CONVENTIONS</Conventions>
<DiscountCurve>EUR1D</DiscountCurve>
<SpotRate>FX/RATE/EUR/CHF</SpotRate>
</CrossCurrency>
<CrossCurrency>
<Type>Cross Currency Basis Swap</Type>
<Quotes>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/2Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/3Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/4Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/5Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/7Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/10Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/15Y</Quote>
<Quote>CC_BASIS_SWAP/BASIS_SPREAD/EUR/3M/CHF/3M/20Y</Quote>
</Quotes>
<Conventions>EUR-CHF-XCCY-BASIS-CONVENTIONS</Conventions>
<DiscountCurve>EUR1D</DiscountCurve>
<SpotRate>FX/RATE/EUR/CHF</SpotRate>
<ProjectionCurveDomestic>CHF3M</ProjectionCurveDomestic>
<ProjectionCurveForeign>EUR3M</ProjectionCurveForeign>
</CrossCurrency>
</Segments>
<InterpolationVariable>Discount</InterpolationVariable>
<InterpolationMethod>FinancialCubic</InterpolationMethod>
<YieldCurveDayCounter>A365</YieldCurveDayCounter>
<Tolerance>0.00000000000100</Tolerance>
</YieldCurve>
After changing the InterpolationMethod to LogLinear, the alert is gone. I wonder if there happened anything to the FinancialCubic method?