Предоставляю на суд общественности, разработанный мной, «анализатор опционных позиций». Анализатор написан в экселе на языке VBA и является бесплатным проектом, доступный всем. Анализатор будет полезен в первую очередь новичкам, которые еще не знают сильные и слабые стороны различных опционных стратегий и как изменится профиль их стратегии при изменении таких условий как количество дней удержания, волатильность или курс доллара. Внешний вид такой:
Многие скажут зачем надо создавать анализатор, которых существует уже большое количество. Я отвечу, среди бесплатных (я работал в option предоставляемый биржей и стандартный в КВИК), ни одна меня не устроила. В них нет возможности сравнивать стратегии между собой и нет возможности менять условия, такие как количество дней, волатильность и курс доллара. Платные версии я даже не рассматриваю. Считаю, что можно создать свой бесплатный продукт не хуже навороченных платных, по крайней мере удовлетворяющие мои скромные потребности.
Ниже приведенный пример, ни вкоем случае не является торговой рекомендацией или утверждающий что необходимо открывать именно такие позиции, это просто для примера.
Итак начнем с настройки подключения. Данные в анализатор подгружаются из КВИК через DDE. Создаем в КВИК «доску опционов» и «позиции по клиентским счетам». В доску опционов добавляем те опционные серии которые вам интересны, например я добавил ноябрьские и декабрьские серии по РТС. Внешний вид таблиц такой:
Порядок следования и наименования столбцов, строго как указано на картинке.
Настройки вывода через DDE сервер для «доски опйционов» следующие:
Настройки вывода через DDE сервер для «позиции по клиентским счетам» следующие:
Рекомендую, перед экспортом данных во вкладке «Данные» очистить данные в экселе, скрин ниже:
Это необходимо если в предыдущий раз подгружено было больше строк, чем есть в текущий раз в КВИК, то эти предыдущие строки которые больше так и останутся в текущей.
Как только данные подгрузились, переходим на вкладку «Портфель». Она состоит из двух зон, левая зона это текущий портфель, правая – моделируемый. Нажимаем кнопку «Обновить портфель», ваши позиции появляются в таблице и расчитываются греки отдельных позиций и портфеля в целом — строка «Итого:». Допустим мы хотим сравнить текущую позицию с немного измененной позицией, назовем её смоделированным портфелем. Нажимаем кнопку «Скопировать портфель», ваши текушие позиции скопируются в моделируемый портфель. Стираем данные в появившейся строчке «Итоги:» и записываем туда новую позицию. Продадим опцион колл с более дальним страйком. Заполняем только те колонки которые выделены синим цветом.
Instrument – название инструмента которые добавляете, главное чтобы первые 2 буквы инструмента начинались с «RI», остальные символы неважны.
Q – коичество контрактов, + купили, — продали.
Type – тип контракта, только из 3 возможных, это CALL опцион колл, PUT опцион пут и FUT фьючерс.
Strike – страйк опциона, если это фьючерс пишем 0
Exp – дата экспирации опциона или фьючерса
Vola – волатильность опциона, смотрим во вкладке «Данные»
Нажимаем кнопку обновить, производится расчет греков отдельных позиций и портфеля в целом в моделируемом портфеле. Идем на вкладку «Диаграмма», выставляем галочки тоторые нас интересуют
«Текущий» — построит профиль текущего портфеля.
«Тек. эксп.» — построит профиль на экспирацию минус 1 день.
«Модель» — построит профиль моделируемого портфеля.
«Мод. эксп.» — построит профиль моделируемого портфеля на экспирацию минус 1 день.
«Рисовать в руб.» — если стоит галочка, то профиль позиций будет строится в рублях, если нет то в пунктах.
«Шаг сетки Y» — шаг отрисовки сетки по оси Y, в рублях или пунктах, в зависимости от предыдущего пункта. Если галочку убрать, то эксель сам будет сетку рисовать.
и нажимаем на кнопку «Построить». На диаграмме появится ваш профиль текщего портфеля и моделируемого.
Для того чтобы сравнить эти две позиции, необходимо прийти к каким то единым условиям, допустим это будет максимальный убыток. Подберем количество опционов в моделируемом портфеле такое, чтоб убыток моделируемого портфеля и текущего был одинаковым. После этого делаем предположение, что цена пойдет в верх и за 7 дней хода волатильность уменьшится на 5 %. Вбиваем эти параметры в «days» и «vola» моделируемого и текущего портфелей на вкладке «Портфель».
«days» — количество дне которых необходимо прибавить к текущей дате.
«vola» — на эту величину надо увеличить (знак +) или уменьшить (знак -) волатильность инстументов входящих в портфель.
«dollar» — на эту величину надо увеличить (знак +) или уменьшить (знак -) курс доллара указанного во вкладке «Настройки» ячейка «Курс доллара».
Эти параметры относятся к тем портфелям где находятся, текущий или моделируемый портфель. Переходим на вкладку «Диаграмма», жмем кнопку «Построить» и сравниваем чего получилось. Рисунки чего получилось у меня ниже:
Делаем какие то выводы, ну например такие. Профиль модели лучше выглядит вплоть до 109000. При дальнейшем увеличении прибыль получается менее чем у исходного портфеля. Но вероятность такого исхода мала.
Теперь посмотрим, а что произойдет с позицией, если цена упадет и за 7 дней волатильность выростет на 5. Устанавливаем значения «days» и «vola» в 7 и 5 соответственно, жмем кнопку «Построить». У меня получилось так:
Всеравно получается, что моделируемый портфель немного выигрывает у текщего портфеля при падении.
В текущем портфеле можно вводить не только текущие ваши позиции, а вообще любой произвольный портфель и сравнивать его с моделируемым. Вводим в поля обозначенные синим цветом свои значения, правила введения такие же как и при введении в моделируемом портфеле. После того как произвели какие то изменения с портфелем или добавили позицию, необходимо нажать кнопку «Обновить расчеты» для текущего портфеля или «Обновить» для моделируемого портфеля, касаемо того где производили изменения. Еще дополнительное условие, чтобы в текщем портфеле и в моделируемом, после ваших позиций было как минимум 2 пустые строчки, в ячейке «Instrument» строчка «Итого:» должна отсутствовать. Это необходимо для того чтобы программа поняла, что это конец ваших позиций. Также можно например ввести одинаковую стратегию в текущий портфель и в моделируемый, но поставить разные условия. Например в текущем портфеле оставить нули, а в моделируемом изменить их, ну например поставить что курс доллара увеличится на 5. В этом случае на диаграмме мы сможем наглядно увидеть как влияют на нашу позицию внешние условия, такие как «days», «vola» и «dollar».
Вкладка «Настройки», в ней можно настраивать следующие параметры:
«Больше текущей цены» — эта настройка относится к графику, на сколько пунктов более текущей цены необходимо построить диаграмму.
«Менее текущей цены» — эта настройка относится к графику, на сколько пунктов менее текущей цены необходимо построить диаграмму.
«Шаг расчета графика» -с таким шагом расчитываются точки диаграммы. Можно его вообще не трогать, если уж совсем нитерпится, то вбивать значения 50, 100, 250 или 500. Это необходимо для корректного отображения сетки по оси X на диаграмме.
«Интересуемый инструмент» — пока вариантов нет оставить как есть «RI».
«Курс доллара» — текущий курс доллара.
«Шаг цены опциона» и «Шаг цены фьючерса» тут вроде все понятно.
Вкладка «Для расчетов», там ничего нитрогать.
Вот такое краткое описание, моего анализатора.
Могу сказать следующеи замечания по данному анализатору:
-Данный продукт не планируется делать как супер универсальный. Изначальная цель, это изучение характеристик опционных стратегий от внешних факторов таких как дни удержания, изменение волатильности и изменение курса доллара, а также сравнение стратегий между собой. А так как у нас на опционном рынке, можно сказать что существует только один ликвидный инструмент, это РТС, то и мой анализатор заточен пока только под него.
-Пока есть небольшой косяк, который я со временем устраню. В данной версии анализатора, по DLL серверу с КВИК необходимо подгружать опционные серии у которых одна дата экспирации у фьючерсного контракта. Например текущие серии опционов ноябрь и декабрь подойдут, а вот декабрь 2014 и март 2015 уже неподойдут. Тут пока мне не понятно какую текущую цену отображать на диаграмме, декабря или марта, подумаю и устраню в дальнейшем.
— Анализатор создавался в эксель 2007, соответственно как он будет работать в более ранних версиях мне неизвестно. В более поздних версиях экселя, думаю будет работать корректно.
— Так как анализатор писался на VBA и использовались элемены AxtiveX, соответственно вы должны разрешить работу для данного содержимого в экселе.
В краткосрочной перспективе планы по развитию анализатора такие:
— Анализатор будет бесплатным и доступным всем.
— Будут устранятся появляющиеся косяки.
— Добавлю диаграммы греков.
— Насчет профиля на экспирацию я подумаю чего с ним сделать. По просьбе трудящихся сделаю обычный как во всех платформах, у меня в данный момент сделано «дата экспирации минус 1 день». Просто я не собираюсь держать позиции до экспирации и он мне нужен просто для того чтобы наглядно видеть куда будет стремиться профиль со временем.
— Подумаю насчет даты открытия позиции. В даной версии используется текущая дата. Тут надо подумать как лучше это организовать.
— Сделаю панельку облегчающую ввод позиции, наподобии как в КВИК. На данном этапе ввод производится обычным способом с клавиатуры или копированием.
-Возможно сделаю поддержку других инструментов.
— Выслушаю ваши предложения и понравившиеся мне и соответствующие идеологии развития данной программы в будующем будут внедрены.
В отдаленной перспективе развития планируется :
— Сделать трехмерные графики профилей опционных позиций.
— Вести учет позиций совершенных в прошлом.
— Ввести автоматизацию подачи заявок в КВИК через API. Это и просто открытие позиции по волатильности, и дельта хеджеры, и арбитражеры.
Ну и напоследок хочется сказать, что я доволен проделанной работой, данный анализатор мне нравиться гораздо больше чем любые другие анализаторы, он мне кажется гораздо проще и понятнее. Конечноже это связано с тем, что его я создавал. Тут уместно вырожение — «каждая лягушка хвалит свое болото». Я расчеты данного анализатора сравнивал с программой option от биржи, расчеты бьются копеечка в копеечку и это радует.
Я черезвычайно буду рад, если для когото из вас анализатор будет полезен. Будь то вы будете просто его использовать как есть, или вам интересны какието моменты программирования или расчет греков или еще чего.
Жду ваших предложений по усовершенствованию данной программы и конечно же обнаруженные косяки.
Скачать файл можно тут: файл
С уважением Фатеев Виктор!
Хоть ничего и не смыслю в опционах, но плюс лови. Судя по скринам, работа проделана сумасшедшая!
Всё получится!
и в пост и в профиль!
Заодно досталось и R14, что плюсанул.
аналитические формулы все есть, прикрутить их проблем не составляет, но это действительно, не первоочередная задача.
Чуть позже посмотрю все подробнее, выскажу свои предложения.
Так как есть большой опыт подобного (если не смотрели, посмотрите пост: smart-lab.ru/blog/175461.php)
> Ввести автоматизацию подачи заявок в КВИК через API. Это и просто открытие позиции по волатильности, и дельта хеджеры, и арбитражеры.
Вот за это я готов даже платить
Ticks
---------------
— timestamp
— price
— volume
Еще у меня есть таблица для хранения баров:
Bars
------------
— timestamp
— open
— high
— low
— close
— volume
— delta
— period
Таким обрахом когда я загружаю тики, я еще вставляю записи с таблицы bars, для нужного мне периода — 1 и 5 мин. Это и есть вся структура базы, после чего скриптом я прохожу по всем барам или тикам один за одним и применяю алгоритм. Те получается такая схема:
1. Сохранить тики в сырой форме
2 посчитать агрегированную информацию (бары)
3 пройти внешним скриптом по базе бар за баром или тик за тиком
Если стратегия работает сразу с несколькими инструментами, то прежде всего нуэно выровнять по времени данные одного и другого инструмента, тк могут быть дырки. После выравнивания удобно идти бар за баром и тик за тиком по обоим инструментам. Я для себя сделал вывод, что hft торговля не перспективное ханятие — тк сожержит слишком много технических моментов, и соотвественно имеет много операционн рисков. Мне кажется стоит работать с барами от минуты, а сложный процент и реинвестирование сделают свое дело, при реинвестировании капитал реально по экспоненте растет.
Работает!
после n минут легкого бубна ) удалось запустить.
там много где вылетает из Range списков, массивов, чаще всего для этого нужно подать данные в неправильном виде, но можно просто:
— поставить слагаемое даты модельного портфеля так чтоб вылетело за дату экспирации
— поставить инструмент Si
для того чтоб завести Si, пришлось заменить в позициях код бумаги на «название» иначе квик обрезал нули в тикере опциона
-очень медленно считает при нажатии на кнопки, прям видно как цифирки в таблице рисуются по 5 в секунду примерно)
В связи с этим попробовал запустить в Excel97. Не сразу получилось, но теперь работает реально на порядок быстрее.
можно даже реалтайм запускать.
Там пришлось избавиться от чек
боксов и текстбоксов и добавить функцию Round )) и проверок дописать. Если нужно вам или кого-то еще, с Вашего позволения выложу эту версию.
Вобщем респект! Реально работает уже сейчас удобнее option.ru, optionlab
свой проект торговой среды пишу на Delphi/C++.
сейчас реализую интерфейсы тс, скоро дойдет до запуска опционного модуля, позаимствовал часть математики греков, спасибо!
если есть опционы на один б.а. с разным сроком экспирации, берется первая дата похоже.
Другие инструменты пока не поддерживает, это я уже писал, SI думаю всетаки добавить, ликвидность у него всетаки более менее терпимая.
Насчет быстродействия, пока меня не напрягает, но уже есть мысли немного исправить код, чтоб при нажатии на выбор линии заново пересчитывать не пришлось.
Напр. если в вашем файле меняю в портфеле (на странице «Данные»): RI100000BW4 1 17.11.2014 — график не хочет строиться, пишет ошибку «Run-time error '5': Invalid procedure call or argument»
я так и делаю. С моим портфелем выгруженным из квика вылетела ошибка, поэтому попробовал просто поменять ваш портфель который уже в файле. Просто напротив RI100000BW4 вместо нуля ставлю 1 (вкладка Данные), на вкладке Портфель нажимаю Обновить портфель и Обновить расчёты, затем на вкладке Диаграмма нажимаю Построить и вылетает «Run-time error '5'". При этом если RI100000BW4 оставить 0, а менять кол-во RIZ4 или RI105000BL4 то всё ок и диаграмма строится.
Попробуйте плз у себя воспроизвести.
Может это у меня с екселем что-то не так..
в этом проекте греки рассчитываются из биржевой волатильности и констант для опциона типа страйк, даты, тип опц.
А Вы пробовали повторить рассчет биржевой волы?
(OptionFVV_v1.xlsm
Файл был удалён.
Причина удаления: Файл был утерян вследствие программного сбоя. Сожалеем об этом. см. forum.my-files.ru/t491-topic)
Анализатор работает только с инструментами RI Si и SR, почти в каждой версии есть видео поясняющее работу нововведений, если их посмотреть все то я думаю вопросов не будет. Отдельного руководства нет, пишу анализатор для себя, а мне оно не нужно.
Так спрашивайте, отвечу, можно даже через скайп.