Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CHF-In-EUR convergence problem #221

Open
rkapl123 opened this issue Feb 14, 2024 · 1 comment
Open

CHF-In-EUR convergence problem #221

rkapl123 opened this issue Feb 14, 2024 · 1 comment

Comments

@rkapl123
Copy link
Contributor

rkapl123 commented Feb 14, 2024

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
Copy link
Contributor Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant