Алекс Ма
Алекс Ма личный блог
11 декабря 2015, 20:15

Тестер опционов

Друзья,
разрабатываем тестер для опционов (цели некоммерческие). Который на основе базового актива по формуле БШ расчитывает цены опционов.
Позволяет входить и выходит из позиции по заданным условиям.
Тестер опционов
Однако, в формуле есть неточность. В качестве волатильности берется VX базового актива, а не волатильность конкретного страйка опциона.
Вопрос 1, можно ли в тестах на покупку-продажу волатильности пользоваться волатильностью базового актива, либо нужно учитывать волатильности конкретного страйка
Вопрос 2, если нужно учитывать волатильность каждого страйка, то как вычислять периоды низкой и высокой волатильности (с волатильностью БА все просто — накладываем МА и считаем от нее отклонение, все достаточно стабильно, в в волатильности конкретного страйка заначения скачут очень сильно)
Вопрос 3, какие параметры входа и выхода в позицию закладывать в тестер.

Кто имеет в этом опыт и готов участвовать в разработке данного тестера, готовы включить в команду разработчиков и правообладателей данного тестера.
28 Комментариев
  • Евгений Черных
    11 декабря 2015, 20:48
    На дельфях? А с чем связан выбор такого раритета?
  • nik
    11 декабря 2015, 20:58
    счас тебе прям так и попалили  все свои граали)) плавильно расчетать цены опционов это целая наука. и те кто разработывает наиболее близкие к реальности модели, гребут на этом хорошие деньги ;)
  • imperativ
    11 декабря 2015, 21:17
    Насколько я понял в своей формуле вы используете историческую волатильность, что неверно. Для вычисления теоритических цен опционов нужно использовать подразумеваемую волатильность(iv). Естественно вычислять волатильность надо для каждого страйка по формуле улыбки волатильности.
  • imperativ
    11 декабря 2015, 21:29
    вот реализация на С++расчета IV для каждого страйка опциона.

    void Option::CalculateIV(const Volatility& volatility) {
    double a = volatility.a;
    double b = volatility.b;
    double c = volatility.c;
    double d = volatility.d;
    double e = volatility.e;
    double s = volatility.s;

    double base_price = m_base_price.GetPrice();
    double x = log(m_strike / base_price) / sqrt(m_time_to_expiration);

    double y = x — s;

    m_iv = a + b * (1 — exp(-c * y * y)) + (d * atan(e * y)) / e;
    m_iv = m_iv / 100.0;
    }

    Коэффициенты волатильности брал здесь: http://ftp.moex.com/pub/FORTS/volat_coeff/

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн