Пример #1
0
        static public double CalcStrike(
            InitialTerm.InitialParameter param,
            double forward,
            double volatility,
            InitialTerm.DeltaType deltaType,
            InitialTerm.VolatilityType volatilityType)
        {
            switch (volatilityType)
            {
            case InitialTerm.VolatilityType.ATM:
                return(CalcAtmStrike(param, forward, volatility, deltaType));

            case InitialTerm.VolatilityType.MS25Call:
                return(CalcInvCdf(
                           param, volatility, forward, 0.25, Type, deltaType));

            case InitialTerm.VolatilityType.MS25Put:
                return(CalcInvCdf(
                           param, volatility, forward, -0.25, Type, deltaType));

            case InitialTerm.VolatilityType.MS10Call:
                return(CalcInvCdf(
                           param, volatility, forward, 0.1, Type, deltaType));

            case InitialTerm.VolatilityType.MS10Put:
                return(CalcInvCdf(
                           param, volatility, forward, -0.1, Type, deltaType));

            default:
                return(0);
            }
        }
Пример #2
0
        static public InitialTerm.CallPutType CallOrPut(InitialTerm.VolatilityType volatilityType)
        {
            var type = InitialTerm.CallPutType.put;

            if (volatilityType == InitialTerm.VolatilityType.MS10Put ||
                volatilityType == InitialTerm.VolatilityType.MS25Put)
            {
                type = InitialTerm.CallPutType.put;
            }
            else
            {
                type = InitialTerm.CallPutType.call;
            }

            return(type);
        }
Пример #3
0
        public static double Volatility(InitialTerm.InitialParameter param, InitialTerm.VolatilityType volatilityType)
        {
            double volatility = 0.0;

            if (volatilityType == InitialTerm.VolatilityType.ATM)
            {
                volatility = param.volATM;
            }
            else if (volatilityType == InitialTerm.VolatilityType.MS25Call ||
                     volatilityType == InitialTerm.VolatilityType.MS25Put)
            {
                volatility = param.volATM + param.volMS25;
            }
            else if (volatilityType == InitialTerm.VolatilityType.MS10Call ||
                     volatilityType == InitialTerm.VolatilityType.MS10Put)
            {
                volatility = param.volATM + param.volMS10;
            }
            return(volatility);
        }