public static IPriceCurve GetPriceCurve(this TO_PriceCurve transportObject, ICurrencyProvider currencyProvider, ICalendarProvider calendarProvider) { if (transportObject.ConstantPriceCurve != null) { return new ConstantPriceCurve(transportObject.ConstantPriceCurve.Price, transportObject.ConstantPriceCurve.BuildDate, currencyProvider) { Currency = currencyProvider.GetCurrencySafe(transportObject.ConstantPriceCurve.Currency), AssetId = transportObject.ConstantPriceCurve.AssetId, Name = transportObject.ConstantPriceCurve.Name, } } ; if (transportObject.BasicPriceCurve != null) { return(new BasicPriceCurve(transportObject.BasicPriceCurve, currencyProvider)); } if (transportObject.BasisPriceCurve != null) { return(new BasisPriceCurve(transportObject.BasisPriceCurve, currencyProvider, calendarProvider)); } if (transportObject.ContangoPriceCurve != null) { return(new ContangoPriceCurve(transportObject.ContangoPriceCurve, currencyProvider)); } throw new Exception("Unable to build price curve"); }
public PriceCurve(TO_PriceCurve transportObject, ICurrencyProvider currencyProvider) : this(transportObject.BuildDate, transportObject.PillarDates, transportObject.Prices, transportObject.CurveType, currencyProvider, transportObject.PillarLabels) { Currency = currencyProvider.GetCurrency(transportObject.Currency); CollateralSpec = transportObject.CollateralSpec; }