Engine icon indicating copy to clipboard operation
Engine copied to clipboard

CHF-In-EUR convergence problem

Open rkapl123 opened this issue 1 year ago • 1 comments

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>

rkapl123 avatar Feb 14 '24 16:02 rkapl123

After changing the InterpolationMethod to LogLinear, the alert is gone. I wonder if there happened anything to the FinancialCubic method?

rkapl123 avatar Feb 15 '24 07:02 rkapl123