public static double ConvertCcy(this IMarketCondition market, Date date, double amount, CurrencyCode fromCcy, CurrencyCode toCcy) { if (fromCcy == toCcy) { return(amount); } return(amount * market.GetFxRate(date, fromCcy, toCcy)); }
public override IPricingResult Calculate(FxOption fxOption, IMarketCondition market, PricingRequest request) { var newMarket = market.UpdateCondition( new UpdateMktConditionPack <IYieldCurve>(x => x.DividendCurves, market.FgnDiscountCurve.Value), new UpdateMktConditionPack <double>(x => x.SpotPrices.Value.Values.First(), market.GetFxRate(GetSpotDate(market.ValuationDate, fxOption), fxOption.DomCcy, fxOption.FgnCcy)) ); return(new AnalyticalVanillaEuropeanOptionEngine().Calculate(fxOption, newMarket, request)); }