Multifractal
Multifractal Ответы на вопросы
28 июня 2017, 12:57

Просьба помочь с функцией распределения из модели Блека-Шоулза

Просьба помочь с функцией распределения из модели Блека-Шоулза
50 Комментариев
  • Quant-Invest
    28 июня 2017, 13:19
    удалось выяснить, что ожидаемую волатильность (из улыбки) можно использовать в качестве сигмы
    Это не совсем так. Улыбка строится на основе цен опционов. Цены строятся на основе IV. А сама IV получается фактически из исторической волатильности базового актива + прогноз продавца опциона+премия за риск.
    Я же привел код на С++, в том числе кум.функцию распределения.
  • Quant-Invest
    28 июня 2017, 14:19
    Я же не предлагал брать её из улыбки :)
      • Quant-Invest
        28 июня 2017, 22:29
        Collapse, вы подаете 5 параметров в ту функцию, что я привел, и на выходе у вас цена опциона. CND() вообще не трогаете. Приведите свои 5 параметров, я посчитаю по ним теоретическую цену.
  • Quant-Invest
    29 июня 2017, 01:53
    1167.28132 цена по этим параметрам получается
    на скрине не тот код что я давал
  • Quant-Invest
    29 июня 2017, 14:50
    потому что вы отрезали половину кода.
    вставьте в том виде как я дал и вызовите функцию

    BlackScholes(char CallPutFlag, double S, double X, double T, double r, double v)
  • Quant-Invest
    29 июня 2017, 17:24
    волатильность не в том формате подана, вот так попробуйте:
    BlackScholes('c', 100000, 100000, 5.0 / 365, 0, 0.25)
  • Quant-Invest
    29 июня 2017, 23:41
    Зависит от того, что вы хотите посчитать. Если «как считает биржа» — то там есть документы, делайте как в них написано. Если у них есть какая-то улыбка с константами, или алгоритм расчета этой улыбки. Если что-то еще — то метод будет другой. Я ж не знаю как вы это будете использовать. «Цель определяет средства»… или как-то так :)
  • Quant-Invest
    30 июня 2017, 02:01
    Я все греки считал числовым методом(как вы тэту предложили), он точней чем по формулам — ведь они вычисляют касательную в точке и потом экстраполируют на какой-то отрезок. А так вы просто берете два точных расчета и результат заведомо точный.
    Код могу сбросить в личку, он правда не на с++ но почти похож, нет проблем переписать. А вообще можете вот эти попробовать:

    // Black-Scholes Delta
    double BSDelta(double S, double K, double T, double r, double v, char OpType)
    {
    double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
    if (OpType==’C’)
    return N(d);
    else
    return N(d) – 1;
    }


    // Black-Scholes Gamma
    double BSGamma(double S, double K, double T, double r, double v)
    {
    double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
    return f(d) / S / v / sqrt(T);
    }

     

    // Black-Scholes Vega
    double BSVega(double S, double K, double T, double r, double v)
    {
    double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
    return S*f(d)*sqrt(T);
    }

    // Black-Scholes Rho
    double BSRho(double S, double K, double T, double r, double v, char OpType)
    {
    double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
    if (OpType==’C’)
    return T*K*exp(-r*T)*N(d – v*sqrt(T));
    else
    return -T*K*exp(-r*T)*N(v*sqrt(T) – d);
    }

    // Black-Scholes Theta
    double BSTheta(double S, double K, double T, double r, double v, char OpType)
    {
    double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
    if (OpType==’C’)
    return -S*f(d)*v/2/sqrt(T) – r*K*exp(-r*T)*N(d – v*sqrt(T));
    else
    return -S*f(d)*v/2/sqrt(T) + r*K*exp(-r*T)*N(v*sqrt(T) – d);
    }

    // N(0,1) density
    double f(double x) {
    double pi =  4.0*atan(1.0);
    return exp(-x*x*0.5)/sqrt(2*pi);
    }

    // Boole’s Rule
    double Boole(double StartPoint, double EndPoint, int n) {
    vector<double> X(n+1, 0.0);
    vector<double> Y(n+1, 0.0);
    double delta_x = (EndPoint – StartPoint)/double(n);
    for (int i=0; i<=n; i++) {
    X[i] = StartPoint + i*delta_x;
    Y[i] = f(X[i]);
    }
    double sum = 0;
    for (int t=0; t<=(n-1)/4; t++) {
    int ind = 4*t;
    sum += (1/45.0)*(14*Y[ind] + 64*Y[ind+1] + 24*Y[ind+2] + 64*Y[ind+3] + 14*Y[ind+4])*delta_x;
    }
    return sum;
    }

    // N(0,1) cdf by Boole’s Rule
    double N(double x) {
    return Boole(-10.0, x, 240);
    }
      • Quant-Invest
        30 июня 2017, 15:42
        Collapse, не думаю что как-то сильно будет отличаться, это же числовой расчет интеграла нормального распределения в любом случае. Исходники в интеренете где-то нарыл в свое время.
          • Quant-Invest
            30 июня 2017, 17:40
            Collapse, потому что греки по сути — изменение функции на шаг параметра. И точнее их взять именно числовым методом, а не через вычисление касательной с приведением к нужному отрезку.
            На мой взгляд ни на что не влияет. Код проще и правильней по сути :)

            Для меня они вообще бесполезны, у меня нет дельта-нейтральных стратегий.
            Вернее, я использую свои греки, второго-третьего порядка, которые показывают то что мне нужно в рамках моих стратегий.
              • Quant-Invest
                01 июля 2017, 14:06
                Collapse, не уверен, я ж предупреждал что по-другому считаю
                  • Quant-Invest
                    02 июля 2017, 09:07
                    Collapse, нет, подобный бред мне в голову пока не приходил :)
                      • Quant-Invest
                        02 июля 2017, 12:16
                        Collapse, именно на это я указывал, когда объяснял, почему выбрал числовой метод. Он больше имеет отношения к реальности. Зачем вам знать распад " с полдня в прошлом на полдня в будущее?" То, что предлагаете вы, вообще no vagina no Reda Cohorta — проверьте на сроке в 2 дня ваш метод.
                        У меня нет цели сделать «научно верно» или чему-то там соответствовать, мне достаточно на этом зарабатывать.
                          • Quant-Invest
                            02 июля 2017, 14:09
                            Collapse, стабильно зарабатывать можно практически на чем угодно, вопрос в приложении достаточных усилий к постижению правильных методов. Но на опционах у меня получается с меньшим риском.
                              • Quant-Invest
                                02 июля 2017, 18:58
                                Collapse, он может, но это для него небезопасно, если он не понимает мой риск-менеджмент. А без риск-менеджмента сама стратегия ничего не стоит.
                                Неужели вы думаете, что, научившись получать прибыль из хаоса, так сложно этот хаос создать ;)
                                Я уже говорил, главное — прибыль. А как защищать алгоритм — придумаете потом.
                                Если научитесь стабильно зарабатывать, это будет плевая задачка :)

                                Комплексную стратегию раскодировать довольно сложно.
              • Стас Бржозовский
                01 июля 2017, 14:25
                Collapse, ты получил тету на год. Подели на 365
                  • Стас Бржозовский
                    02 июля 2017, 11:06
                    Collapse, я не знаю что такое cnd()
                      • Стас Бржозовский
                        02 июля 2017, 12:28
                        Collapse, какое то раЗложение в ряд там интеграла. Скорее всего пофиг какую из функций брать, если обе правильно реализованы. Про тету — это довольно кривой костыль тот что вы предложили. Точности толком не добавит, а за день до экспирации вовсе ту тету посчитать не получится
  • Quant-Invest
    05 июля 2017, 10:33
    Направленные, но мы торгуем синтетику, которую сами создаем :)
    Вообще направленные хорошо работают даже без наших изворотов, но выше риски. А минимизация риска — у нас основная забота.
    Элементы маркет-мейкинга тоже есть, но пока не запущены в торговлю.
    Арбитраж — конечно, синтетику на арбитражных принципах и построили.
      • Quant-Invest
        05 июля 2017, 14:03
        Collapse, мы формируем корзину с максимальным соответствием функции и неизвестной волатильностью. т.к. у нас есть функция, мы знаем множество точек, где может оказаться корзина в будущем.
        Преимущество в том, что реальная стоимость корзины все равно однажды будет равна одной из точек точек функции, где мы фиксим плановую прибыль.
        И через опционы хэджируем отклонения.
        Если это все разложить в алгоритмы, то получается зоопарк роботов, которые торгуют один и тот же набор разнонаправленно, но суммарная эквити получается растущей.
  • Quant-Invest
    06 июля 2017, 14:10
    Для нас важна не прибыль, а усредненное отношение годовой прибыли к просадке. В текущей корзине оно минимум 2 к 1. Из этого мы можем построить любые стратегии от 20% прибыли при 10% просадки до 180% прибыли при 90% просадке.
    Сейчас основной вопрос для нас — это точный расчет просадок по корзине. На публичных счетах постараемся показать 50% с просадкой 20%. Этап точной подстройки, одним словом. У всех свои проблемы :)
      • Quant-Invest
        07 июля 2017, 00:03
        Collapse, любой разгон депозита влечет повышенные риски полного слива — вы должны это понимать. Соответственно и вопрос нужно формулировать в терминах «отношение слитых депозитов к 1 разогнанному» :)
        Какую доходность вы ищите по этому «разгону»?
          • Quant-Invest
            07 июля 2017, 01:28
            Collapse, В любой точке трамповского тренда была неопределенность дальнейшего движения. Никто ж не спорит, что этого нельзя было сделать. Так как вы ставите вопрос — его нельзя ставить, это ведет к сливу депо.

            Мы не занимаемся биткоинами, опционов нормальных на него не будет.
  • Quant-Invest
    11 июля 2017, 11:55
    Нет, мы работаем непосредственно с исторической базой опционных цен.

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

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