public double NPV(Trade trade, SimMarket simMarket) { double npv = 0.0; try { double fx = simMarket.FxSpot(trade.NpvCurrency() + _baseCcyCode).link.value(); double numeraire = simMarket.Numeraire(); npv = trade.Instrument().NPV() * fx / numeraire; } catch (Exception ex) { //ALOG("Failed to price trade " << trade->id() << " : " << e.what()); npv = 0; } return(npv); }
public ValuationEngine(Date today, DateGrid dg, SimMarket simMarket) { _today = today; _dg = dg; _simMarket = simMarket; }
public override void Calculate(Trade trade, int tradeIndex, SimMarket simMarket, Date date, int dateIndex) { NPV(trade, simMarket); }
public override void CalculateT0(Trade trade, int tradeIndex, SimMarket simMarket) { NPV(trade, simMarket); }
public virtual void CalculateT0(Trade trade, int tradeIndex, SimMarket simMarket) { throw new NotImplementedException(); }