Опционы - страница 5

 

Набросал индикатор расчета теоретической цены опциона.

Не уверен что все формулы правильные. Кто разбирается в математике проверьте пожалуйста.

 
Sergey Chalyshev:

Конечно спред надо учитывать. 

Можно и по теоретической цене тестировать, но это очень грубо получится. Всё по тому же, что спроса и предложения может не быть в реале. 

Поэтому для более точного тестирования, приближенного к реалу, нужна полная история котировок со всеми страйками и дырами.

Можно историческую волатильность и в улыбку вывернуть, надо подумать.

Если сможете вывернуть правдоподобно то дайте знать, думаю всем пригодится)

По формулам:

  // private:
        private static double Erf(double x)
        {
            // constants
            double a1 = 0.254829592;
            double a2 = -0.284496736;
            double a3 = 1.421413741;
            double a4 = -1.453152027;
            double a5 = 1.061405429;
            double p = 0.3275911;

            // Save the sign of x
            int sign = 1;
            if (x < 0)
                sign = -1;
            x = Math.Abs(x);

            // A&S formula 7.1.26
            double t = 1.0 / (1.0 + p * x);
            double y = 1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * Math.Exp(-x * x);

            return (sign * y);
        }

        public static double d1(InitalOptionData data)
        {
            return (Math.Log(data.S / data.K) + (data.r - data.q + Math.Pow(data.IV, 2) / 2) * data.T) / (data.IV * Math.Sqrt(data.T));
        }
        public static double d2(InitalOptionData data)
        {
            return d1(data) - data.IV * Math.Sqrt(data.T);
        }
        public static double N(double d)
        {
            return Erf((Math.Sqrt(2) * d) / 2) / 2 + 0.5;
        }
        public static double p(double d)
        {
            return 1 / Math.Sqrt(2 * Math.PI) * Math.Exp(-Math.Pow(d, 2) / 2);
        }
        private double Call(InitalOptionData data)
        {
            return data.S * Math.Exp(-data.q * data.T) * N(d1(data)) - data.K * Math.Exp(-data.r * data.T) * N(d2(data));
        }
        private double Put(InitalOptionData data)
        {
            return data.K * Math.Exp(-data.r * data.T) * N(-d2(data)) - data.S * Math.Exp(-data.q * data.T) * N(-d1(data));
        }

Это на шарпе если что.

 

Вопрос!

Может ли зарабатывать "дельта-хеджер"?

У меня уже сложилось своё мнение по этому вопросу, уже протестировал.

Но хочется услышать мнения по этому вопросу, возможно я заблуждаюсь.

 

График опциона в МТ5 RealTime


 
Sergey Chalyshev:

График опциона в МТ5 RealTime

Как получили?

 
Aleksey Vyazmikin:

Как получили?

Присоединяюсь к вопросу

 
Да кстати графики опционов - для торговли то не нужны это Вы для тестов котировки загрузили ?
 
Aleksey Vyazmikin:

Как получили?

Это очевидно.

Котировки из Квика, в МТ5 кастомный символ, который подгружает эти котировки.

 
prostotrader:

Это очевидно.

Котировки из Квика, в МТ5 кастомный символ, который подгружает эти котировки.

Так в том то и вопрос, как такой мост сделать, что бы в реальном времени подгружалось автоматически?

 
prostotrader:

Это очевидно.

Котировки из Квика, в МТ5 кастомный символ, который подгружает эти котировки.

Бесполезный костыль...

После еще придется пились кучу классов для математики опционной