Basis Swap PV01 diffrent than Bloomberg


#1

Hi,

We have a swap trades and got different results than expected.
The values we are getting for a fixed-float trade are pretty much the same
This is what we got using the fpml parser : PV01CalibratedSum :180
Expected (using bloomberg terminal) : -6.17
Any idea what went wrong here?

FpML:
<swap> <productType>InterestRate:IRSwap:Basis</productType> <swapStream id="floatingLeg1"> <payerPartyReference href="party1"/> <receiverPartyReference href="party2"/> <calculationPeriodDates id="payCalcDates"> <effectiveDate> <unadjustedDate>2016-10-24</unadjustedDate> <dateAdjustments> <businessDayConvention>NONE</businessDayConvention> </dateAdjustments> </effectiveDate> <terminationDate> <unadjustedDate>2023-10-24</unadjustedDate> <dateAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </dateAdjustments> </terminationDate> <calculationPeriodDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </calculationPeriodDatesAdjustments> <calculationPeriodFrequency> <periodMultiplier>1</periodMultiplier> <period>M</period> <rollConvention>24</rollConvention> </calculationPeriodFrequency> </calculationPeriodDates> <paymentDates> <calculationPeriodDatesReference href="payCalcDates"/> <paymentFrequency> <periodMultiplier>3</periodMultiplier> <period>M</period> </paymentFrequency> <payRelativeTo>CalculationPeriodEndDate</payRelativeTo> <paymentDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </paymentDatesAdjustments> </paymentDates> <resetDates id="payResetDates"> <calculationPeriodDatesReference href="payCalcDates"/> <resetRelativeTo>CalculationPeriodStartDate</resetRelativeTo> <fixingDates> <periodMultiplier>-2</periodMultiplier> <period>D</period> <dayType>Business</dayType> <businessDayConvention>NONE</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> <dateRelativeTo href="payResetDates"/> </fixingDates> <resetFrequency> <periodMultiplier>1</periodMultiplier> <period>M</period> </resetFrequency> <resetDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </resetDatesAdjustments> </resetDates> <calculationPeriodAmount> <calculation> <notionalSchedule id="payNotionalSchedule"> <notionalStepSchedule> <initialValue>10000000</initialValue> <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217-2001-08-15">USD</currency> </notionalStepSchedule> </notionalSchedule> <floatingRateCalculation> <floatingRateIndex floatingRateIndexScheme="http://www.fpml.org/coding-scheme/floating-rate-index">USD-LIBOR-BBA</floatingRateIndex> <indexTenor> <periodMultiplier>1</periodMultiplier> <period>M</period> </indexTenor> <spreadSchedule> <initialValue>0.0017155792</initialValue> </spreadSchedule> </floatingRateCalculation> <dayCountFraction dayCountFractionScheme="http://www.fpml.org/coding-scheme/day-count-fraction">ACT/360</dayCountFraction> </calculation> </calculationPeriodAmount> </swapStream> <swapStream id="floatingLeg2"> <payerPartyReference href="party2"/> <receiverPartyReference href="party1"/> <calculationPeriodDates id="recCalcDates"> <effectiveDate> <unadjustedDate>2016-10-24</unadjustedDate> <dateAdjustments> <businessDayConvention>NONE</businessDayConvention> </dateAdjustments> </effectiveDate> <terminationDate> <unadjustedDate>2023-10-24</unadjustedDate> <dateAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </dateAdjustments> </terminationDate> <calculationPeriodDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </calculationPeriodDatesAdjustments> <calculationPeriodFrequency> <periodMultiplier>3</periodMultiplier> <period>M</period> <rollConvention>24</rollConvention> </calculationPeriodFrequency> </calculationPeriodDates> <paymentDates> <calculationPeriodDatesReference href="recCalcDates"/> <paymentFrequency> <periodMultiplier>3</periodMultiplier> <period>M</period> </paymentFrequency> <payRelativeTo>CalculationPeriodEndDate</payRelativeTo> <paymentDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </paymentDatesAdjustments> </paymentDates> <resetDates id="recResetDates"> <calculationPeriodDatesReference href="recCalcDates"/> <resetRelativeTo>CalculationPeriodStartDate</resetRelativeTo> <fixingDates> <periodMultiplier>-2</periodMultiplier> <period>D</period> <dayType>Business</dayType> <businessDayConvention>NONE</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> <dateRelativeTo href="recResetDates"/> </fixingDates> <resetFrequency> <periodMultiplier>3</periodMultiplier> <period>M</period> </resetFrequency> <resetDatesAdjustments> <businessDayConvention>MODFOLLOWING</businessDayConvention> <businessCenters> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">NYFD</businessCenter> <businessCenter businessCenterScheme="http://www.fpml.org/coding-scheme/business-center">GBLO</businessCenter> </businessCenters> </resetDatesAdjustments> </resetDates> <calculationPeriodAmount> <calculation> <notionalSchedule id="receiveNotionalSchedule"> <notionalStepSchedule> <initialValue>10000000</initialValue> <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217-2001-08-15">USD</currency> </notionalStepSchedule> </notionalSchedule> <floatingRateCalculation> <floatingRateIndex floatingRateIndexScheme="http://www.fpml.org/coding-scheme/floating-rate-index">USD-LIBOR-BBA</floatingRateIndex> <indexTenor> <periodMultiplier>3</periodMultiplier> <period>M</period> </indexTenor> </floatingRateCalculation> <dayCountFraction dayCountFractionScheme="http://www.fpml.org/coding-scheme/day-count-fraction">ACT/360</dayCountFraction> </calculation> </calculationPeriodAmount> </swapStream> </swap>


#2

As per our community support policy, we can’t really get into the details of trying to match our numbers to an external system. The code is open source, so if you feel there is a problem, you are able to debug through to identify where the numbers diverge.


#3

When I priced the same basis swap in Treasuryview, then I got PV01 = 2.81 and NPV = -12 229.13
I calculated PV01 = NPV_up1bp - NPV_market. I suppose OpenGamma does this way as well.
I remember that Bloomberg calculates DV01 = (NPV_down10bps - NPV_up10bps) / 20.
This shouldn’t still explain the difference between OpenGamma and Bloomberg. You could also try comparing the simplest vanilla fixed-floating swap with default conventions. There are USD3M and USD1M needed pricing that product. Did you give these curves as an input in OpenGamma?


#4

Yes, we provide both curves to OpenGamma.


#5

For the record, Strata uses Algorithmic Differentiation, see these links.