Как интегрировать свою улыбку в ручную опц.панель?

Автор: salsed

Как интегрировать свою улыбку в ручную опц.панель? - Fri Jan 13 2017 06:15 PM

Здравствуйте коллеги!

Подскажите пожалуйста как мне проще всего интегрировать свою улыбку волатильности (она у меня написана в R, там и все расчеты) в опционную панель ТСЛаб? Чтобы она отображалась наравне с остальными тремя улыбками.

Если через API подскажите пожалуйста на какие классы обратить внимание и как это отображать на графике?

Если через кубики подскажите пожалуйста какой кубик и ка в него интегрировать математику или там числовые значения какие-то?

Заранее спасибо.
Автор: Option Wizard

Re: Как интегрировать свою улыбку в ручную опц.панель? - Fri Mar 24 2017 06:29 PM

Давайте отвлечемся от проблемы "интегрировать С# и R".
Будем считать, Вы или умеете это делать или перенесете все расчеты в C#.

Далее нужно будет хорошо покодировать на C# (воспользоваться ТСЛаб АПИ).

Вам нужно реализовать кубик, который на выходе возвращает объект класса InteractiveSeries.
Для каждого страйка серии нужно сказать, "какая на этом страйке волатильность".

Волатильность в коде идет не в процентах, а "как есть".
Например, "волатильность фРТС 0.27".
ЭТО ВАЖНО.


Самый простой заголовок класса:
Code:
    /// <summary>
    /// \~english Flat smile as in Black-Scholes option model. Volatility is constant.
    /// \~russian Тривиальная улыбка по версии Блека-Шолза. Уровень волатильности постоянен и задаётся параметром SigmaPct.
    /// </summary>
    [HandlerCategory(HandlerCategories.OptionsTickByTick)]
    [HelperName("Black-Scholes Const", Language = Constants.En)]
    [HelperName("Константа по Блеку-Шолзу", Language = Constants.Ru)]
    [InputsCount(2)]
    [Input(0, TemplateTypes.DOUBLE, Name = Constants.FutPx)]
    [Input(1, TemplateTypes.DOUBLE, Name = Constants.Time)]
    [OutputType(TemplateTypes.INTERACTIVESPLINE)]
    [Description("Тривиальная улыбка по версии Блека-Шолза. Уровень волатильности постоянен и задаётся параметром 'Волатильность, %'.")]
    [HelperDescription("A flat smile as in the Black-Scholes option model. Volatility is a constant and is defined by the 'Sigma, %' parameter.", Constants.En)]
    public class BlackScholesConstSmile2 : BaseCanvasDrawing, IValuesHandlerWithNumber
    {

здесь ваша реализация

    }


В реальной жизни нужно будет указать дополнительные входные аргументы (как минимум, нужно будет принять серию опционов).



Теперь метод Execute:
Code:
public InteractiveSeries Execute(double price, double time, int barNum)
        {
            int barsCount = ContextBarsCount;
            if (barNum < barsCount - 1)
                return new InteractiveSeries();

            double futPx = price;
            double dT = time;

            if (Double.IsNaN(dT) || (dT < Double.Epsilon) ||
                Double.IsNaN(futPx) || (futPx < Double.Epsilon))
                return new InteractiveSeries();

<дальнейшая реализация: нужно для каждого страйка придумать уровень волатильности>

        }


Здесь пара моментов важных:
1. В отличие от других блоков улыбка существует только для самого последнего (текущего!) бара.
Поэтому первым делом мы проверяем индекс и если он в ппрошлом -- завершаемся.

2. Обязательно делаем валидацию входных параметров.
Если на вход передана отрицательная цена или отрицательное время -- лучше сразу тихо завершиться, чем возвращать из блока какие-то несостоятельные фантазии.


Попробуйте сами заполнить InteractiveSeries хотя бы десятком точек -- и их уже можно будет увидеть на графике.
Если мы с Вами это сделаем, то можно будет с этой точки продолжить.
Автор: Maverick

Re: Как интегрировать свою улыбку в ручную опц.панель? - Mon Mar 04 2019 01:21 AM

Здравствуйте, интересует реализация модели улыбки SABR или хотя бы Хестона или Бейтса. Возможно ли это ли это в виде кубика?
Автор: Option Wizard

Re: Как интегрировать свою улыбку в ручную опц.панель? - Mon Mar 04 2019 12:22 PM

Originally Posted By: Maverick
Здравствуйте, интересует реализация модели улыбки SABR или хотя бы Хестона или Бейтса. Возможно ли это ли это в виде кубика?


Если есть внятное описание модели, то возможно.
Желаете обсудить подробнее?
Автор: Maverick

Re: Как интегрировать свою улыбку в ручную опц.панель? - Mon Mar 04 2019 05:39 PM

Модели есть в открытом доступе на C#.
Хестона http://www.quantalgos.ru/?p=500
Бейтса http://www.quantalgos.ru/?p=544
SABR http://mikejuniperhill.blogspot.com/2016/10/alglib-sabr-calibration-in-c.html?m=1 с методом калибровки в рынок.
Автор: Maverick

Re: Как интегрировать свою улыбку в ручную опц.панель? - Mon Mar 04 2019 05:49 PM

Ну и наверное лучшее описание sabr с кодом на на C# https://www.google.com/url?sa=t&source=web&rct=j&url=http://www.axelvogt.de/axalom/SABR.pdf&ved=2ahUKEwjl3OTn3OjgAhXPR5oKHcvNBxoQFjAGegQIARAB&usg=AOvVaw16k8d4XE0CtFn7vshigc2A
Автор: Option Wizard

Re: Как интегрировать свою улыбку в ручную опц.панель? - Mon Mar 04 2019 06:27 PM

Originally Posted By: Maverick
Модели есть в открытом доступе на C#.


Хорошо.
Значит, Вы все знаете?
Самый простой путь, кмк, такой: пишете кубик,
который на вход принимает обычные рыночные переменные (время, цена БА, что еще может быть нужно)
и имеет параметры, которые собственно управляют формой улыбки.

На выходе этот кубик дает ЦЕНЫ опционов.
После этого стандартным кубиком мы можем превратить ЦЕНЫ опционов в их волатильность.

Пример кода с кубиком улыбки приведен чуть Выше в этой ветке.
Вам нужно только его модифицировать под формулы Хестона.


ПС Можем продолжить разговор в личку, если так будет удобней.
Автор: Option Wizard

Re: Как интегрировать свою улыбку в ручную опц.панель? - Tue Mar 05 2019 11:32 AM

Originally Posted By: Maverick
Модели есть в открытом доступе на C#.


Мы считаем, что в ТСЛаб реализована самая лучшая модель улыбки из известных.
Она вписывается более-менее приемлемо во все инструменты, которые мы смотрели.
От опционов на RI, Si, ED, SR, GZ, BR,
до опционов на ES, YM, акции американские, энергоносители,
и даже опционы на биткойн она тоже очень хорошо описывает.

Одно исключение мне известно -- опционы на VIX.
Но там, видимо, своя специфика, поскольку базовый процесс является скорее Орнштейн-Уленбеком,
чем вариацией на тему лог-нормального (логарифм от что-нибудь простое).

Поэтому если Вам очень нужны какие-то другие модели улыбок вариантов 2:
1. Сами пишете кубик, мы Вам помогаем с АПИ как можем.
2. Заказываете разработку кубика лично для себя.

=) В общем, по обоим вариантам обращайтесь.
Можете сразу в личку.