Документация для предыдущей версии OptionWorkshop v.13.6. Документация для последней версии OptionWorkshop (> 16.6) расположена здесь.

В программе есть возможность описывать модели ценообразования опционов в виде скриптов на двух языках, C# и Visual Basic. Эти модели могут быть применены к любой серии опционов также как и встроенные модели БШ и Роскорубинштейна. Скриптование моделей является отдельной опцией, которая доступна пользователю только если она включена в лицензию.

Менеджер моделей

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

Содержание страницы:

Рисунок 1 – менеджер модулей

Для того чтобы создать новую модель ценообразования, нужно нажать кнопку New и выбрать один из двух языков, на которых будет написан скрипт: C# или Visual Basic. При этом откроется окно с шаблоном модели, написанном на выбранном языке, а в окне менеджера моделей появится созданная модель, как это показано на рисунке 2.

Рисунок 2 – создание новой модели

Сохранить созданный скрипт можно нажав на кнопку Save в окне редактирования скрипта. Скрипты сохраняются с расширением *.model. Загрузить ранее сохраненный скрипт можно нажав на кнопку Open. Для того, чтобы удалить модель, нужно нажать на кнопку . 

Объектная модель

В скрипте возможно описание расчёта цены опциона, расчёта расширенных (теоретических) параметров опциона и расчета волатильности, которая используется при расчёте цены опциона. Для этих целей служат методы:

double CalcPrice(InstrumentParams ip, OptionEvaluationParams oep);

InstrumentCalculatedParams CalcPriceAndGreeks(InstrumentParams ip,
OptionEvaluationParams oep);

и

decimal GetVola(InstrumentParams ip);

В скрипте возможно использование следующих объектов:

InstrumentParamsProvider

Позволяет получить параметры инструмента (InstrumentParams).

Метод GetInstrumentParams(Instrument instrument) возвращает параметры переданного инструмента. Метод GetOptionFuturesParams(Instrument instrument) возвращает параметры базового актива для переданного инструмента.

Примеры использования:

var optionParams = InstrumentParamsProvider.GetInstrumentParams(OptionsSeries.Calls[19000]);

var futuresParams = InstrumentParamsProvider.GetInstrumentParams(OptionsSeries.Futures);

или

var futuresParams = InstrumentParamsProvider.GetOptionFuturesParams(OptionsSeries.Calls[19000]);

decimal lastPrice = optionParams.LastPrice;
decimal strike = optionParams.Strike;
long bidQty = optionParams.BestBidQuantity;

Замечание: использование имени "params" не разрешено.

InstrumentParams

Таблица 1 – Инструменты

ПараметрСвойствоТип
Базовый активBaseActivestring
Лучшая цена на покупкуBestBidPricedecimal
Объём по лучшей цене на покупкуBestBidQuantitylong
Лучшая цена на продажуBestOfferPricedecimal
Объём по лучшей цене на продажуBestOfferQuantitylong
Минимально возможная ценаBottomPriceLimitdecimal
Относительное изменение
ко вчерашней цене закрытия
Changedecimal
Полное имя класса инструментаClassstring
Код класса инструментаClassCodestring
Текущее значение (для индексов)CurrentValuedecimal
Точность ценыDecimalPlacesuint
Дата исполненияExpirationDateDateTime
Полный код инструментаFullCodestring
ГО продавцаGodecimal
Время последнего измененияLastChangeTimeDateTime
Цена последней сделкиLastPricedecimal
Размер одного лотаLotSizelong
Тип опциона (кол, пут)OptionTypeOptionType
Тип уплаты премии по опционуPremiumStyleOptionPremiumStyle
Шаг цены инструментаPriceStepdecimal
Точность шага ценыPriceStepPrecisiondecimal
Стоимость шага ценыPriceStepValuedecimal
Расчётная ценаSettlementdecimal
Дата погашенияSettlingDateDateTime
Статус инструментаStatusstring
Страйк опционаStrikedecimal
Теоретическая ценаTheorPricedecimal
Максимально возможная ценаTopPriceLimitdecimal
Тип инструментаTypeInstrumentType
Волатильность опционаVoltydecimal
Цена закрытия предыдущегоPrevClosePricedecimal

Перечисления

Таблица 2 – Перечисления

ИмяПринимаемые значенияОписание
OptionTypeCCall
PPut
OptionPremiumStyleMarginMargin
UpfrontUpfront
InstrumentTypeFFutures
OOption

OptionsSeries

Предоставляет доступ к серии опционов. Содержит набор колов и путов для определенного базового актива и даты экспирации (табл. 3).

Таблица 3 – Параметры серии опционов

ПараметрСвойствоТип
ФьючерсFuturesInstrument
Дата экспирацииExpirationDateTime
Список всех
инструментов серии
InstrumentsList<Instrument>
Набор коловCallsDictionary<decimalInstrument>
Набор путовPutsDictionary<decimalInstrument>

Обращение к тому или иному свойству обеспечивается с использованием синтаксиса OptionsSeries.Свойство, например:

  • получение кода фьючерса
string classCode = OptionSeries.Futures.Code;
  • получение даты экспирации
DateTime expDate = OptionSeries.Expiration;
  • получение всех путов
Dictionary<decimalInstrument> puts = OptionSeries.Puts;

Positions

Для получения позиции по инструменту используется следующий синтаксис.

Позиция по фьючерсу:

int pos = Positions["имя_аккаунта"]["код_БА"]["имя_стратегии"]["код_фьючерса"];

или

int pos = Positions.GetPosition("имя_аккаунта", "код_БА", "имя_стратегии", "код_фьючерса");

где "код_БА" - код базового актива.

Позиция по колу на указанном страйке с указанной датой экспирации:

int pos = Positions["имя_аккаунта"]["код_БА"]["имя_стратегии"].Calls(страйк, "дата_экспирации");

или

int pos = Positions.GetPosition("имя_аккаунта", "код_БА", "имя_стратегии", "Call", страйк, "дата_экспирации");

Позиция по путу на указанном страйке с указанной датой экспирации:

int pos = Positions["имя_аккаунта"]["код_БА"]["имя_стратегии"].Puts(страйк, "дата_экспирации");

или

int pos = Positions.GetPosition("имя_аккаунта", "код_БА", "имя_стратегии", "Put", страйк, "дата_экспирации");

Позиция по указанному опциону:

int pos = Positions["имя_аккаунта"]["код_БА"]["имя_стратегии"]["код_инструмента"];

или

int pos = Positions.GetPosition("имя_аккаунта", "код_БА", "имя_стратегии", "код_инструмента");

Код БА указывается в формате "RTS".
Код фьючерса указывается в формате "RIU1".
Код инструмента указывается в формате "RI185000BG1".
Дата экспирации указывается в формате "ГГГГММ", например "201109".
Страйк указывается без кавычек.

Например, если нужно получить позицию по колу для RTS на 185000-м страйке с датой экспирации в июле 2011 года, то код будет следующим:

int pos = positions["acc"]["RTS"]["strategy1"].Calls(185000, "201107");

или

int pos = Positions.GetPosition("acc", "RTS", "strategy1", "Call", 185000, "201107");

или

int pos = Positions["acc"]["RTS"]["strategy1"]["RI185000BG1"];
  • No labels