public virtual IVolSurface RollSurface(DateTime newOrigin) { _suppressVarianceErrors = true; var newMaturities = Expiries.Where(x => x > newOrigin).ToArray(); var newVols = new double[newMaturities.Length][]; var newATMs = newMaturities.Select(m => GetForwardATMVol(newOrigin, m)).ToArray(); var oldATMs = newMaturities.Select(m => GetForwardATMVol(OriginDate, m)).ToArray(); var numDropped = Expiries.Length - newMaturities.Length; for (var i = 0; i < newMaturities.Length; i++) { newVols[i] = new double[Strikes.Length]; for (var j = 0; j < Strikes.Length; j++) { newVols[i][j] = Volatilities[i + numDropped][j] / oldATMs[i] * newATMs[i]; } } return(new GridVolSurface(newOrigin, Strikes, newMaturities, newVols, StrikeType, StrikeInterpolatorType, TimeInterpolatorType, TimeBasis, PillarLabels) { AssetId = AssetId, Currency = Currency, Name = Name, }); }
public override IVolSurface RollSurface(DateTime newOrigin) { var newMaturities = Expiries.Where(x => x > newOrigin).ToArray(); var newVols = new double[newMaturities.Length][]; var newATMs = newMaturities.Select(m => GetForwardATMVol(newOrigin, m)).ToArray(); var newRRs = new double[newMaturities.Length][]; var newBFs = new double[newMaturities.Length][]; var numDropped = Expiries.Length - newMaturities.Length; var newFwds = Forwards.Skip(numDropped).ToArray(); var newLabels = PillarLabels.Skip(numDropped).ToArray(); for (var i = 0; i < newMaturities.Length; i++) { newRRs[i] = Riskies[i + numDropped]; newBFs[i] = Flies[i + numDropped]; } return(new RiskyFlySurface(newOrigin, newATMs, newMaturities, WingDeltas, newRRs, newBFs, newFwds, WingQuoteType, AtmVolType, StrikeInterpolatorType, TimeInterpolatorType, newLabels) { AssetId = AssetId, Currency = Currency, Name = Name, }); }
public IActionResult Add_expiry_details(string item_name, string Expiry_date) { Expiries x = new Expiries() { Item_name = item_name, Date_created = DateTime.Now.ToString("dd/mm/yyyy"), Expiry_date = Expiry_date }; _context.Add(x); _context.SaveChanges(); return(Redirect("~/home/expiries")); }
public override IVolSurface RollSurface(DateTime newOrigin) { //_suppressVarianceErrors = true; var newMaturities = Expiries.Where(x => x > newOrigin).ToArray(); var newVols = new double[newMaturities.Length][]; var newATMs = newMaturities.Select(m => GetForwardATMVol(newOrigin, m)).ToArray(); //var newATMs = new double[newMaturities.Length]; var newRRs = new double[newMaturities.Length][]; var newBFs = new double[newMaturities.Length][]; var numDropped = Expiries.Length - newMaturities.Length; var newFwds = Forwards.Skip(numDropped).ToArray(); var newLabels = PillarLabels.Skip(numDropped).ToArray(); for (var i = 0; i < newMaturities.Length; i++) { newRRs[i] = Riskies[i + numDropped]; newBFs[i] = Flies[i + numDropped]; //newATMs[i] = GetVolForDeltaStrike(0.5, newMaturities[i], newFwds[i]); } if (newATMs.Length == 0) { return new ConstantVolSurface(OriginDate, 0.32) { Name = Name, AssetId = AssetId, Currency = Currency, } } ; return(new RiskyFlySurface(newOrigin, newATMs, newMaturities, WingDeltas, newRRs, newBFs, newFwds, WingQuoteType, AtmVolType, StrikeInterpolatorType, TimeInterpolatorType, newLabels) { AssetId = AssetId, Currency = Currency, Name = Name, }); }