public static MoneynessProvider DivAdjusted(double spot, DividendQuote[] dividends, DiscountCurve discountCurve, ITimeMeasure time) { return(new DivAdjustedMoneyness(spot, new AffineDivCurveUtils(dividends, discountCurve, time))); }
public AssetForwardCurve(double spot, DividendQuote[] dividends, DiscountCurve assetFinancingCurve, ITimeMeasure time) { Contract.Requires(EnumerableUtils.IsSorted(dividends.Select(div => div.Date))); this.time = time; Spot = spot; divCurveUtils = new AffineDivCurveUtils(dividends, assetFinancingCurve, time); }
public ProductDiscount(DiscountCurve discount1, DiscountCurve discount2, FinancingId financing) : base(discount1.RefDate, financing) { if (discount1.RefDate != discount2.RefDate) throw new Exception("ProductDiscount : incompatible ref date !"); this.discount1 = discount1; this.discount2 = discount2; }
public AssetMarket(AssetId asset, DateTime refDate, ITimeMeasure time, double spot, DiscountCurve riskFreeDiscount, DiscountCurve repoCurve, DividendQuote[] dividends, VolatilityMatrix volMatrix) { Time = time; Spot = spot; RiskFreeDiscount = riskFreeDiscount; RepoCurve = repoCurve; Dividends = dividends; VolMatrix = volMatrix; RefDate = refDate; Asset = asset; if (refDate != repoCurve.RefDate || refDate != time.RefDate) { throw new Exception("AssetMarket : incompatible ref date !"); } }
public AssetForwardCurve Forward(DiscountCurve cashFinancingCurve) { var assetFinancingCurve = AssetFinancingCurve(cashFinancingCurve); return(new AssetForwardCurve(Spot, Dividends, assetFinancingCurve, Time)); }
public DiscountCurve AssetFinancingCurve(DiscountCurve cashFinancingCurve) { return(DiscountCurve.Product(RepoCurve, cashFinancingCurve, FinancingId.AssetCollat(Asset))); }
public static DiscountCurve Product(DiscountCurve discount1, DiscountCurve discount2, FinancingId financing) { return new ProductDiscount(discount1, discount2, financing); }