Ejemplo n.º 1
0
        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,
            });
        }
Ejemplo n.º 2
0
        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,
            });
        }
Ejemplo n.º 3
0
        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"));
        }
Ejemplo n.º 4
0
        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,
            });
        }