Business Logic for Futures Rolling

Top  Previous  Next

Assume we have:

-Two identical purchase and sales contracts:
oS0456: pricing against Mar-2014 + 77 USD/MT premium
oP0123: pricing against Mar-2014 + 77 USD/MT premium
-Today’s prices
oMar-2014  = 501.50 USD/MT
oMay-2014 = 500.00 USD/MT

 

We roll both contracts from Mar-2014 to May-2014

 

Business logic:

In both cases the premium will change from 77 to 78.05

The idea is that rolling does not affect the total price

So:

oif we directly price against Mar-2014 the total price would in both contracts be      501.50 + 77.00 = 578.50
oif we roll to and price against May-2014 the total price would in both contracts be 500.00 + 78.50 = 578.50

 

The way this is calculated and presented on the Risk tab and in the allocations of futures is:

1.You enter a rolling Mar-May on both contracts
a.You enter a price in the rolling, positive or negative
b.Add this price to the original premium for the rolled-from period, to calculate the adjusted premium for this rolling
So if the number is negative the premium is lower
Note that the price entered in the example is +1.05 for both purchase and a sale!
2.Agiblocks creates a rolling requirement in FCM for this
a.For Sale S0456: a rolling requirement to Buy March and Sell May
b.For Purchase P0123: a rolling requirement to Sell March and Buy May
3.At some point futures are allocated to the rolling requirement
a.E.g. for Sales S0456 we allocate Buy Mar at 501.50 and Sell May at 500.00
b.E.g. for Purchase P0123 we allocated Sell Mar at 501.50 and Buy May at 500.00
4.Agiblocks calculates now 2 numbers for this allocated rolling:
a.RollingPrice = FromPeriodPrice – ToPeriodPrice
This number will be shown under the Risk tab as the futures price.
Note that in the example it is again +1.05 for both purchase and a sale!
b.RollingResult = SellPrice – BuyPrice
This number will only be used later when calculating the P&L over the contracts
Note that in the example this is -1.05 for the Sale and +1.05 for the Purchase
c.Of course the number here could differ from the number in step 1, e.g. 1.03 instead of 1.05