I’m trying to adapt your example CalibrationZeroRateUsd2OisFuturesIrs for the GBP curve but I get the error :IllegalArgumentException: Array of x-values must be sorted and unique. I presume this is due the tenors of the Curve Group Definition not being ordered but I can’t see what the issue is. Is it the OIS discount curve or the Swaps curve? The curve group definition is shown below.
CurveGroupDefinition{name=GBP-DSCON-LIBOR6M, entries=[CurveGroupEntry{curveName=GBP-DSCON-OIS, discountCurrencies=[GBP], indices=[GBP-SONIA]}, CurveGroupEntry{curveName=GBP-LIBOR6M-IRS, discountCurrencies=[], indices=[GBP-LIBOR-6M]}], curveDefinitions=[InterpolatedNodalCurveDefinition{name=GBP-DSCON-OIS, xValueType=YearFraction, yValueType=ZeroRate, dayCount=Act/365F, nodes=[TermDepositCurveNode{template=TermDepositTemplate{depositPeriod=P1D, convention=GBP-Dep}, rateId=QuoteId{standardId=CALIBRATION~GBP-ON, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1D, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=6M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-6M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=6M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=9M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-9M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=9M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=4Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-4Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=4Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=5Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-5Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=5Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=7Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-7Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=7Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=10Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-10Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=10Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=15Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-15Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=15Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=20Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-20Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=20Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=30Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-30Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=30Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}], interpolator=NaturalCubicSpline, extrapolatorLeft=Flat, extrapolatorRight=Flat}, InterpolatedNodalCurveDefinition{name=GBP-LIBOR6M-IRS, xValueType=YearFraction, yValueType=ZeroRate, dayCount=Act/365F, nodes=[IborFixingDepositCurveNode{template=IborFixingDepositTemplate{depositPeriod=P6M, convention=GBP-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-Fixing-3M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=6M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=1, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED1, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=2, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED2, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=3, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED3, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=1Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-1Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=2Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-2Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=3Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-3Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=4Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-4Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=4Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=5Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-5Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=5Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=7Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-7Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=7Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=10Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-10Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=10Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=12Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-12Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=12Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=15Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-15Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=15Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=20Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-20Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=20Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=25Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-25Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=25Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=30Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-30Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=30Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}], interpolator=NaturalCubicSpline, extrapolatorLeft=Flat, extrapolatorRight=Flat}], seasonalityDefinitions={}, computeJacobian=true, computePvSensitivityToMarketQuote=false}
ImmutableMarketData{valuationDate=2017-05-03, values={QuoteId{standardId=CALIBRATION~GBP-OIS-1M, fieldName=MarketValue, observableSource=None}=0.002124, QuoteId{standardId=CALIBRATION~GBP-OIS-7Y, fieldName=MarketValue, observableSource=None}=0.00656, QuoteId{standardId=CALIBRATION~GBP-OIS-2W, fieldName=MarketValue, observableSource=None}=0.002117, QuoteId{standardId=CALIBRATION~GBP-OIS-4Y, fieldName=MarketValue, observableSource=None}=0.004269, QuoteId{standardId=CALIBRATION~GBP-IRS6M-10Y, fieldName=MarketValue, observableSource=None}=0.01155, QuoteId{standardId=CALIBRATION~GBP-OIS-2Y, fieldName=MarketValue, observableSource=None}=0.002899, QuoteId{standardId=CALIBRATION~GBP-IRS6M-30Y, fieldName=MarketValue, observableSource=None}=0.014039999999999999, QuoteId{standardId=CALIBRATION~GBP-Fixing-3M, fieldName=MarketValue, observableSource=None}=0.0032180999999999998, QuoteId{standardId=CALIBRATION~GBP-IRS6M-3Y, fieldName=MarketValue, observableSource=None}=0.00638, QuoteId{standardId=CALIBRATION~GBP-OIS-15Y, fieldName=MarketValue, observableSource=None}=0.01098, QuoteId{standardId=CALIBRATION~GBP-IRS6M-1Y, fieldName=MarketValue, observableSource=None}=0.00498, QuoteId{standardId=CALIBRATION~GBP-OIS-6M, fieldName=MarketValue, observableSource=None}=0.002182, QuoteId{standardId=CALIBRATION~GBP-IRS6M-20Y, fieldName=MarketValue, observableSource=None}=0.01426, QuoteId{standardId=CALIBRATION~GBP-IRS6M-15Y, fieldName=MarketValue, observableSource=None}=0.01361, QuoteId{standardId=CALIBRATION~GBP-IRS6M-5Y, fieldName=MarketValue, observableSource=None}=0.007980000000000001, QuoteId{standardId=CALIBRATION~GBP-OIS-2M, fieldName=MarketValue, observableSource=None}=0.0021260000000000003, QuoteId{standardId=CALIBRATION~GBP-OIS-30Y, fieldName=MarketValue, observableSource=None}=0.012115, QuoteId{standardId=CALIBRATION~GBP-IRS6M-7Y, fieldName=MarketValue, observableSource=None}=0.009555000000000001, QuoteId{standardId=CALIBRATION~GBP-OIS-3W, fieldName=MarketValue, observableSource=None}=0.00211, QuoteId{standardId=CALIBRATION~GBP-ED1, fieldName=MarketValue, observableSource=None}=0.99665, QuoteId{standardId=CALIBRATION~GBP-ED2, fieldName=MarketValue, observableSource=None}=0.9963, QuoteId{standardId=CALIBRATION~GBP-OIS-3Y, fieldName=MarketValue, observableSource=None}=0.0035730000000000002, QuoteId{standardId=CALIBRATION~GBP-IRS6M-25Y, fieldName=MarketValue, observableSource=None}=0.014199999999999999, QuoteId{standardId=CALIBRATION~GBP-OIS-1W, fieldName=MarketValue, observableSource=None}=0.00211, QuoteId{standardId=CALIBRATION~GBP-OIS-5Y, fieldName=MarketValue, observableSource=None}=0.0050219999999999996, QuoteId{standardId=CALIBRATION~GBP-OIS-1Y, fieldName=MarketValue, observableSource=None}=0.002376, QuoteId{standardId=CALIBRATION~GBP-ED3, fieldName=MarketValue, observableSource=None}=0.996, QuoteId{standardId=CALIBRATION~GBP-OIS-10Y, fieldName=MarketValue, observableSource=None}=0.008658, QuoteId{standardId=CALIBRATION~GBP-ON, fieldName=MarketValue, observableSource=None}=0.001663, QuoteId{standardId=CALIBRATION~GBP-OIS-9M, fieldName=MarketValue, observableSource=None}=0.002286, QuoteId{standardId=CALIBRATION~GBP-OIS-20Y, fieldName=MarketValue, observableSource=None}=0.011974, QuoteId{standardId=CALIBRATION~GBP-IRS6M-4Y, fieldName=MarketValue, observableSource=None}=0.007169999999999999, QuoteId{standardId=CALIBRATION~GBP-IRS6M-12Y, fieldName=MarketValue, observableSource=None}=0.0126, QuoteId{standardId=CALIBRATION~GBP-OIS-3M, fieldName=MarketValue, observableSource=None}=0.0021260000000000003, QuoteId{standardId=CALIBRATION~GBP-IRS6M-2Y, fieldName=MarketValue, observableSource=None}=0.005615}, timeSeries={}}
Curve not built on 3-May-2017 due to java.lang.IllegalArgumentException: Array of x-values must be sorted and unique
About to compute curve for 4-May-2017
CurveGroupDefinition{name=GBP-DSCON-LIBOR6M, entries=[CurveGroupEntry{curveName=GBP-DSCON-OIS, discountCurrencies=[GBP], indices=[GBP-SONIA]}, CurveGroupEntry{curveName=GBP-LIBOR6M-IRS, discountCurrencies=[], indices=[GBP-LIBOR-6M]}], curveDefinitions=[InterpolatedNodalCurveDefinition{name=GBP-DSCON-OIS, xValueType=YearFraction, yValueType=ZeroRate, dayCount=Act/365F, nodes=[TermDepositCurveNode{template=TermDepositTemplate{depositPeriod=P1D, convention=GBP-Dep}, rateId=QuoteId{standardId=CALIBRATION~GBP-ON, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1D, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3W, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3W, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3W, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=6M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-6M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=6M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=9M, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-9M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=9M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=1Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-1Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=2Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-2Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=3Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-3Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=4Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-4Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=4Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=5Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-5Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=5Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=7Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-7Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=7Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=10Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-10Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=10Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=15Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-15Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=15Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=20Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-20Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=20Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedOvernightSwapCurveNode{template=FixedOvernightSwapTemplate{periodToStart=P0D, tenor=30Y, convention=GBP-FIXED-1Y-SONIA-OIS}, rateId=QuoteId{standardId=CALIBRATION~GBP-OIS-30Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=30Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}], interpolator=NaturalCubicSpline, extrapolatorLeft=Flat, extrapolatorRight=Flat}, InterpolatedNodalCurveDefinition{name=GBP-LIBOR6M-IRS, xValueType=YearFraction, yValueType=ZeroRate, dayCount=Act/365F, nodes=[IborFixingDepositCurveNode{template=IborFixingDepositTemplate{depositPeriod=P6M, convention=GBP-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-Fixing-3M, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=6M, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=1, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED1, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=2, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED2, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, IborFutureCurveNode{template=RelativeIborFutureTemplate{minimumPeriod=P7D, sequenceNumber=3, convention=GBP-LIBOR-6M-Quarterly-IMM}, rateId=QuoteId{standardId=CALIBRATION~GBP-ED3, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=1Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-1Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=1Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=2Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-2Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=2Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=3Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-3Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=3Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=4Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-4Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=4Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=5Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-5Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=5Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=7Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-7Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=7Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=10Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-10Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=10Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=12Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-12Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=12Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=15Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-15Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=15Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=20Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-20Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=20Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=25Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-25Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=25Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}, FixedIborSwapCurveNode{template=FixedIborSwapTemplate{periodToStart=P0D, tenor=30Y, convention=GBP-FIXED-6M-LIBOR-6M}, rateId=QuoteId{standardId=CALIBRATION~GBP-IRS6M-30Y, fieldName=MarketValue, observableSource=None}, additionalSpread=0.0, label=30Y, date=CurveNodeDate{type=End, date=null}, dateOrder=CurveNodeDateOrder{minGapInDays=1, action=Exception}}], interpolator=NaturalCubicSpline, extrapolatorLeft=Flat, extrapolatorRight=Flat}], seasonalityDefinitions={}, computeJacobian=true, computePvSensitivityToMarketQuote=false}