Beispiel #1
0
        private double GetVolForAbsoluteStrike(double strike, IInterpolator1D interp)
        {
            var cp = strike < 0 ? OptionType.Put : OptionType.Call;
            Func <double, double> testFunc = (deltaK =>
            {
                var vol = interp.Interpolate(-deltaK);
                var absK = AbsoluteStrikefromDeltaKAnalytic(_fwd, deltaK, 0, _tExp, vol);
                return(absK - strike);
            });

            var solvedStrike = -Brent.BrentsMethodSolve(testFunc, -0.999999999, -0.000000001, 1e-8);

            return(interp.Interpolate(solvedStrike));
        }