Блог им. AlexeyT

Опционная торговля на QUIK-Excel (VBA) - II

       Добрый день!
     Прошел почти год с момента моего предыдущего поста, хочу поделиться изменениями своего «приложения», произошедшими за этот период.
Несмотря на то, что предыдущая версия работала, несколько смущала производительность при приближении к дате экспирации, но, в тоже время, не хотелось все менять, т.к. был риск, что тождественность данных нарушится (в итоге статистика будет нерелевантна). Но все-таки собрался и пару месяцев назад переписал весь код с нуля (путем многократных тестовых запусков старой версии и новой, убедился в их преемственности и на серию (июнь) полностью перешел на обновленную версию). Основные изменения следующие:
     1. Переписан алгоритм определения волатильностей ТЦ, спроса, предложения
     2. Переход на явное определение всех переменных и упор на работу с массивами
     3. Изменен алгоритм протоколирования данных
     4. Ввод и вывод значений диапазоном
     5. Изменен алгоритм определения исходных данных для статистики

     В итоге производительность выросла в разы, если ранее средний расчет (за 1 квант времени) происходил за 0.5-1 секунды, пиковые (при протоколировании) от 3 сек до 10 (в последние недели перед экспирацией) секунд, то теперь средний расчет осуществляется менее чем за 0.1 секунды, пиковый до 0.3 секунд. Моделирование графиков PnL и грек занимает менее 0.2 сек, ранее это было около 3-4 секунд. И это далеко не предел, если минимизировать кол-во формул на листах, а их много (около 550) (закатать их в VBA) и минимизировать кол-во графиков (строить по требованию), то возможно добиться быстрых расчетов, но в целом этого и не надо. Загрузка процессора средняя, подвисаний (песочных часов), подтормаживаний экспорта нет, на этом же ноутбуке параллельно занимаюсь другими делами, ничего друг другу не мешает.
     Ниже привожу обновленную блок-схему моего приложения, и скриншоты основных листов (масштаб уменьшил, чтобы на 1 экран помещалось), чтобы было примерно понятно, что и как реализовано, и как все это выглядит. Общее кол-во строк кода на VBA 400 (немного, так как часть функциональности сделана функциями на самих листах).

Опционная торговля на QUIK-Excel (VBA) - II
--------------
Опционная торговля на QUIK-Excel (VBA) - II 
----------
Опционная торговля на QUIK-Excel (VBA) - II
----------
Опционная торговля на QUIK-Excel (VBA) - II
----
     Пишу этот пост с целью показать, что связкой «терминал (Quik)»-«DDE»-«Excel (VBA)», можно гибко, быстро, удобно, легко, онлайн автоматизировать многие процессы, связанные с большими вычислительными расчетами, вычислять которые вручную или офлайн неудобно или уже поздно.
     Таким примером может являться – оценка и выбор облигаций, оценка и выбор опционов, статистический арбитраж, парный трейдинг, баскет-трейдинг и многое другое (то есть то, для чего время принятия решения не менее 1 секунды, и важен срез рынка также не менее 1 секунды). Можно реализовать как помощника, вычисляющего основные параметры почти онлайн (1-2 секунды лаг), и сигнализирующее (звуком, цветом) о наличии «стат. преимущества» или же создать полноценного робота, принимающее решение самостоятельно и отправляющие заявки через API.
     Самое главное придумать торгуемую идею, продумать архитектуру решения (таблицы в Quik, настройки экспорта, период обновления, период расчетов), описать алгоритм, ну и запрограммировать все это, и начинать надо с самого минимума (с самого простого), постепенно и последовательно наращивая функциональность.
     Готов ответить на возникающие вопросы.
★74
20 комментариев
Крутая системка. Торгует или только для анализа?
avatar
sander, первоначально была идея чтобы и торговала, но впоследствии пришлось отказаться, заявки выставляю сам, так как сделок не много (только в период формирования позиции, и при корректировках) вполне это устраивает.
avatar
уважуха за труд
avatar
Какую кривую волатильности используете?
avatar
ch5oh, всего для моделирования прикрутил много разных (всего их 6), но в основном (для оценки текущих греков и их же в динамике) использую только одну, свою, аналитическую, непрерывную функцию.
На остальные поглядываю, чтобы оценить отклонения по грекам.
avatar
Три года назад я тоже делал торговую связку quik — excel, но отказался из-за частых подвисаний. А сейчас часто система останавливается?
avatar
broker25, вообще не останавливается, предыдущая версия иногда захлебывалась (накапливались данные в буфере, потом сгружались и догонялись), но не останавливалась, с этой вообще все в порядке.
Путем проб и ошибок (делал много вариантов_ я понял где могут быть нюансы.
1. как часто Quik получает данные с рынка?
2. как происходит обработка полученных данных в самом Excel?
3. Есть ли формулы, графики на листе?

Оптимально сделать все 3 условия нельзя, но поработав с каждым из них, сделать устойчивое приложение возможно.
avatar
в закладки дружище! и +
avatar
Алексей, что думаете об Option-Lab Trade?
avatar
НеГрустин, ставил когда то давно, интересно, красиво, но
1. нет доверия к расчетам
2. мне нужно то (свои улыбки, их задание, моделирование PnL-графиков по разным улыбкам, анализ позиций по грекам, протоколирование данных, их последующий анализ), что сделать в стороннем продукте невозможно. Посмотри на мои скриншоты, будет понятно что это все очень индивидуально.
3. ну и несравненное удовольствие пользоваться своим продуктом, знать досконально, что, где и как считается;)

В целом, считаю, что если человек имеет свою идею (тем более специфическую), и есть навыки в алгоритмизации, программировании, надо писать самому, а если нужны базовые идеи, нет желания прогать, и есть доверие к чужим продуктам, то можно конечно пользоваться ими.
avatar
AlexeyT, приятное с полезным? Я понял))))

Ну я-то ничего мегаспецифического не придумываю — пользую существующую систему (ОПы) в том виде, в каком она распространена. Так что ОЛТ меня устраивает))))
avatar
Спасибо за рассказ! Очень интересно. Мое впечатление конечно что Эксель не так надежен. Но ваш результат все равно впечатляет!
Не скажете что за колонка «плечо» на третьей картинке и правый верхний график на 4й картинке? (т к вы не закрасили их, наверно это не секрет. :) )
avatar
rerkin, плечо это лямбда — % изменение цены опциона от % изменения БА (особо и не смотрю на него, так, как ориентир, как таковой ценности не несет). А график это отклонения разных улыбок друг от друга.
avatar
AlexeyT, формулу БШ сами писали или где-то есть в свободном доступе?

Смысл системыz, видимо — в расчете своих, кастомных индикаторов?
avatar
cosmichorror, да в Excel, и в обращении к нему из VBA есть встроенная функция плотности, ей и считал.
Смысл системы в расчетах своих волатильностей опционов, их отождествлении с «какими бы они должны были бы быть» и принятия решения на основе этих заключений + накоплении статистики для последующего анализа.
avatar
AlexeyT, что в БШ является входами а что — выходами? Как я понимаю, цена ставка — входы, а волатильность — это выход… и считается итеративно — так?
avatar
cosmichorror, да все верно, всякие цены (спроса, предложения, ТЦ, последняя) и прочие параметры это вход, а выходами являются соответствующие волатильности. В смысле итеративно?
avatar
AlexeyT, итеративно — методом перебора… или она как-то напрямую вычисляется?
avatar
cosmichorror, да, методом дихотомий. делал золотым сечением быстрее не стало, поэтому оставил простой способ, вычисляется все за миллисекунды.
avatar

теги блога AlexeyTikhonov

....все тэги



UPDONW
Новый дизайн