Документация для предыдущей версии 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); |
---|
В скрипте возможно использование следующих объектов:
Позволяет получить параметры инструмента (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" не разрешено.
Таблица 1 – Инструменты
Параметр | Свойство | Тип |
---|---|---|
Базовый актив | BaseActive | string |
Лучшая цена на покупку | BestBidPrice | decimal |
Объём по лучшей цене на покупку | BestBidQuantity | long |
Лучшая цена на продажу | BestOfferPrice | decimal |
Объём по лучшей цене на продажу | BestOfferQuantity | long |
Минимально возможная цена | BottomPriceLimit | decimal |
Относительное изменение ко вчерашней цене закрытия | Change | decimal |
Полное имя класса инструмента | Class | string |
Код класса инструмента | ClassCode | string |
Текущее значение (для индексов) | CurrentValue | decimal |
Точность цены | DecimalPlaces | uint |
Дата исполнения | ExpirationDate | DateTime |
Полный код инструмента | FullCode | string |
ГО продавца | Go | decimal |
Время последнего изменения | LastChangeTime | DateTime |
Цена последней сделки | LastPrice | decimal |
Размер одного лота | LotSize | long |
Тип опциона (кол, пут) | OptionType | OptionType |
Тип уплаты премии по опциону | PremiumStyle | OptionPremiumStyle |
Шаг цены инструмента | PriceStep | decimal |
Точность шага цены | PriceStepPrecision | decimal |
Стоимость шага цены | PriceStepValue | decimal |
Расчётная цена | Settlement | decimal |
Дата погашения | SettlingDate | DateTime |
Статус инструмента | Status | string |
Страйк опциона | Strike | decimal |
Теоретическая цена | TheorPrice | decimal |
Максимально возможная цена | TopPriceLimit | decimal |
Тип инструмента | Type | InstrumentType |
Волатильность опциона | Volty | decimal |
Цена закрытия предыдущего | PrevClosePrice | decimal |
Таблица 2 – Перечисления
Имя | Принимаемые значения | Описание |
---|---|---|
OptionType | C | Call |
P | Put | |
OptionPremiumStyle | Margin | Margin |
Upfront | Upfront | |
InstrumentType | F | Futures |
O | Option |
Предоставляет доступ к серии опционов. Содержит набор колов и путов для определенного базового актива и даты экспирации (табл. 3).
Таблица 3 – Параметры серии опционов
Параметр | Свойство | Тип |
---|---|---|
Фьючерс | Futures | Instrument |
Дата экспирации | Expiration | DateTime |
Список всех инструментов серии | Instruments | List<Instrument> |
Набор колов | Calls | Dictionary<decimal, Instrument> |
Набор путов | Puts | Dictionary<decimal, Instrument> |
Обращение к тому или иному свойству обеспечивается с использованием синтаксиса OptionsSeries.Свойство, например:
string classCode = OptionSeries.Futures.Code; |
---|
DateTime expDate = OptionSeries.Expiration; |
---|
Dictionary<decimal, Instrument> puts = OptionSeries.Puts; |
---|
Для получения позиции по инструменту используется следующий синтаксис.
Позиция по фьючерсу:
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"]; |
---|