/// <summary> /// Removes the expiry. /// </summary> /// <param name="expiry">The expiry.</param> public void RemoveExpiry(ForwardExpiry expiry) { ForwardExpiry matchedExpiry = ForwardExpiryHelper.FindExpiry(expiry.ExpiryDate, expiry.FwdPrice, expiry.InterestRate, _expiries); if (matchedExpiry == null) { _expiries.Remove(matchedExpiry); } if (_rawExpiryDates.Contains(expiry.ExpiryDate)) { _rawExpiryDates.Remove(expiry.ExpiryDate); _expiries.Remove(expiry); } }
public void TestFitter() { var stock = TestDataHelper.GetStock("AGK"); Assert.AreEqual("AGK", stock.Name); Stock stockObject = TestHelper.CreateStock(stock); stockObject.VolatilitySurface.Calibrate(); decimal spot = stockObject.Spot; var fwdexp = ForwardExpiryHelper.FindExpiry(new DateTime(2016, 9, 9), stockObject.VolatilitySurface.NodalExpiries.ToList()); int i = -1; var str = StrikeHelper.FindStrikeWithPrice(1404, new List <Strike>(fwdexp.Strikes), out i); Assert.AreNotEqual(i, -1); double fwd = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.AtmForward, 7); double cc = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.CallCurve, 7); double vc = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.CurrentVol, 7); double dc = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.DnCutoff, 7); double dsr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.Dsr, 7); double pc = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.PutCurve, 7); double reffwd = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.RefFwd, 7); double refvol = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.RefVol, 7); double scr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.Scr, 7); double sr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.SlopeRef, 7); double ssr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.Ssr, 7); double uc = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.UpCutoff, 7); double usr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.Usr, 7); double vcr = Math.Round(fwdexp.Strikes[i].InterpModel.WingParams.Vcr, 7); Assert.AreNotEqual(spot, 0); Assert.AreEqual(fwd, 1682); Assert.AreEqual(cc, 0.0705147); Assert.AreEqual(vc, 0.2933592); Assert.AreEqual(dc, Math.Round(-0.5 - Math.Log(Convert.ToDouble(fwdexp.FwdPrice / spot))), 7); Assert.AreEqual(uc, Math.Round(0.5 - Math.Log(Convert.ToDouble(fwdexp.FwdPrice / spot))), 7); Assert.AreEqual(dsr, 0.20); Assert.AreEqual(pc, 0.0025281); Assert.AreEqual(reffwd, 1682); Assert.AreEqual(refvol, vc); Assert.AreEqual(scr, 0); Assert.AreEqual(sr, -0.0565697); Assert.AreEqual(ssr, 100); Assert.AreEqual(usr, 0.20); Assert.AreEqual(vcr, 0.0); }
/// <summary> /// Adds the expiry. /// </summary> /// <param name="expiry">The expiry.</param> public void AddExpiry(ForwardExpiry expiry) { ForwardExpiryHelper.AddExpiry(expiry, _expiries); _rawExpiryDates.Add(expiry.ExpiryDate); }