Beispiel #1
0
        private double GetFirstDerivativeToStrike(double t, double k)
        {
            double forwardPrice  = PriceBump.BumpForward(k);
            double backwardPrice = PriceBump.BumpBackward(k);

            return((ImpliedVol.GetValue(t, forwardPrice) - ImpliedVol.GetValue(t, backwardPrice)) / (forwardPrice - backwardPrice));
        }
Beispiel #2
0
        private double GetSecondDerivativeToStrike(double t, double k)
        {
            // there is possibility that the bump sizes are different between forward and backward.
            // we use the minimum of them to calculate the second order derivative.
            double bumpsize = PriceBump.MinBump(k);

            return((ImpliedVol.GetValue(t, k + bumpsize) + ImpliedVol.GetValue(t, k - bumpsize) - 2 * ImpliedVol.GetValue(t, k)) /
                   (bumpsize * bumpsize));
        }
Beispiel #3
0
        private double MaxY()
        {
            var solidMaxY = ImpliedVol.MaxY();

            return(PriceBump.BumpForwardInverse(solidMaxY));
        }
Beispiel #4
0
        private double MinY()
        {
            var solidMinY = ImpliedVol.MinY();

            return(PriceBump.BumpBackwardInverse(solidMinY));
        }