public double CalculateParRate(IFundingModel model) { var discountCurve = model.Curves[CashDiscountCurve]; var SpotRate = model.GetFxRate(SpotDate, MetalCCY, CashCCY); var t = SpotDate.CalculateYearFraction(DeliveryDate, Basis); var fwd = model.GetFxRate(DeliveryDate, MetalCCY, CashCCY); var ctgo = (fwd / SpotRate - 1.0) / t; return(ctgo); }
public double Pv(IFundingModel model, bool updateState) { var discountCurve = model.Curves[CashDiscountCurve]; var SpotRate = model.GetFxRate(SpotDate, MetalCCY, CashCCY); var t = SpotDate.CalculateYearFraction(DeliveryDate, Basis); var strike = SpotRate * (1.0 + ContangoRate * t); var fwd = model.GetFxRate(DeliveryDate, MetalCCY, CashCCY); var FV = (fwd - strike) * MetalQuantity; var PV = discountCurve.Pv(FV, DeliveryDate); return(PV); }
public double SuggestPillarValue(IFundingModel model) { var discountCurve = model.Curves[CashDiscountCurve]; var SpotRate = model.GetFxRate(SpotDate, MetalCCY, CashCCY); var t = SpotDate.CalculateYearFraction(DeliveryDate, Basis); var fwd = SpotRate * (1.0 + ContangoRate * t); var fxr = fwd / SpotRate; var df1 = discountCurve.GetDf(SpotDate, PillarDate); var df2 = df1 / fxr; var rate = -System.Math.Log(df2) / t; return(rate); }
private double GetFwd(DateTime fwdDate, double contango) { var t = SpotDate.CalculateYearFraction(fwdDate, Basis); return(Spot * (1.0 + contango * t)); }
void ReleaseDesignerOutlets() { if (Activity != null) { Activity.Dispose(); Activity = null; } if (CurrencyPair != null) { CurrencyPair.Dispose(); CurrencyPair = null; } if (Executing != null) { Executing.Dispose(); Executing = null; } if (LeftSideAction != null) { LeftSideAction.Dispose(); LeftSideAction = null; } if (LeftSideBigNumber != null) { LeftSideBigNumber.Dispose(); LeftSideBigNumber = null; } if (LeftSideButton != null) { LeftSideButton.Dispose(); LeftSideButton = null; } if (LeftSideNumber != null) { LeftSideNumber.Dispose(); LeftSideNumber = null; } if (LeftSidePips != null) { LeftSidePips.Dispose(); LeftSidePips = null; } if (Notional != null) { Notional.Dispose(); Notional = null; } if (NotionalCCY != null) { NotionalCCY.Dispose(); NotionalCCY = null; } if (PriceMovementDown != null) { PriceMovementDown.Dispose(); PriceMovementDown = null; } if (PriceMovementUp != null) { PriceMovementUp.Dispose(); PriceMovementUp = null; } if (RightSideAction != null) { RightSideAction.Dispose(); RightSideAction = null; } if (RightSideBigNumber != null) { RightSideBigNumber.Dispose(); RightSideBigNumber = null; } if (RightSideButton != null) { RightSideButton.Dispose(); RightSideButton = null; } if (RightSideNumber != null) { RightSideNumber.Dispose(); RightSideNumber = null; } if (RightSidePips != null) { RightSidePips.Dispose(); RightSidePips = null; } if (SpotDate != null) { SpotDate.Dispose(); SpotDate = null; } if (Spread != null) { Spread.Dispose(); Spread = null; } }