public static List <double> PriceSetting(InitialTerm.InitialParameter param)
        {
            var priceList = new List <double>();
            var forward   = ForwardCalculator.CalcForwardRate(param);

            foreach (InitialTerm.VolatilityType volatilityType
                     in Enum.GetValues(typeof(InitialTerm.VolatilityType)))
            {
                var type       = JudgeMaterial.JudgeOfCallPut.CallOrPut(volatilityType);
                var volatility = JudgeMaterial.JudgeOfVolatility.Volatility(param, volatilityType);
                var strike     = StrikrCalcultor.CalcStrike(param, forward, volatility, param.deltaType, volatilityType);
                var d1         = DFuncCalculator.CalcDValue(param, volatility, param.tau, forward, strike);
                var d2         = d1 - volatility * Math.Sqrt(param.tau);
                priceList.Add(FlyAdjustment.PriceCalculator.CalcOptionPrice(param, forward, strike, d1, d2, type));
            }
            return(priceList);
        }
        public static List <double> StrikeSetting(InitialTerm.InitialParameter param)
        {
            var strikeList = new List <double>();
            var forward    = ForwardCalculator.CalcForwardRate(param);

            foreach (InitialTerm.VolatilityType volatilityType
                     in Enum.GetValues(typeof(InitialTerm.VolatilityType)))
            {
                var volatility = JudgeMaterial.JudgeOfVolatility.Volatility(param, volatilityType);
                strikeList.Add(StrikrCalcultor.CalcStrike(
                                   param,
                                   forward,
                                   volatility,
                                   param.deltaType,
                                   volatilityType));
            }
            return(strikeList);
        }
Beispiel #3
0
        public static double CalcInvCdf(
            InitialTerm.InitialParameter param,
            double volatility,
            double forward,
            double delta,
            InitialTerm.CallPutType type,
            InitialTerm.DeltaType deltaType)
        {
            Volatility = volatility;
            Forward    = forward;
            DeltaType  = deltaType;
            Number     = delta;

            var strikeCalculator = new StrikrCalcultor(param);

            return(UseBisection.Calc(
                       strikeCalculator.DeltaFunctionOfStrike,
                       0.5 * param.spotRate,
                       2.0 * param.spotRate));
        }