public override double MarkToMarket(DateTime mtmSettlement, double mtmRate, Position position) { var certificateDeposit = new CertificateDeposit(this.Principal, this.Rate, this.DayCountBasis, mtmSettlement, this.Maturity, this.Settlement, mtmRate); CalculatePV(); certificateDeposit.CalculatePV(); return(position == Position.Long ? certificateDeposit.PV - this.PV : this.PV - certificateDeposit.PV); }
static void Main() { var cashflowPricer = new CashflowPricer(); cashflowPricer.Calculate(); Console.WriteLine(cashflowPricer); var bondPricer = new BondPricer(); bondPricer.Calculate(); Console.WriteLine(bondPricer); var yieldCurve = new YieldCurve(); yieldCurve.BootstrapSpotYields(); Console.WriteLine(yieldCurve); var depositCertificate = new CertificateDeposit(); depositCertificate.Calculate(); Console.WriteLine(depositCertificate); var discountPaper = new DiscountPaper(); discountPaper.Calculate(); Console.WriteLine(discountPaper); var fixedDeposit = new FixedDeposit(); fixedDeposit.Calculate(); Console.WriteLine(fixedDeposit); var fxQuote = new FXQuote(); Console.WriteLine(fxQuote); Console.ReadKey(); }