Добрый день!
Прошел почти год с момента моего предыдущего поста, хочу поделиться изменениями своего «приложения», произошедшими за этот период.
Несмотря на то, что предыдущая версия работала, несколько смущала производительность при приближении к дате экспирации, но, в тоже время, не хотелось все менять, т.к. был риск, что тождественность данных нарушится (в итоге статистика будет нерелевантна). Но все-таки собрался и пару месяцев назад переписал весь код с нуля (путем многократных тестовых запусков старой версии и новой, убедился в их преемственности и на серию (июнь) полностью перешел на обновленную версию). Основные изменения следующие:
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)»-«DDE»-«Excel (VBA)», можно гибко, быстро, удобно, легко, онлайн автоматизировать многие процессы, связанные с большими вычислительными расчетами, вычислять которые вручную или офлайн неудобно или уже поздно.
Таким примером может являться – оценка и выбор облигаций, оценка и выбор опционов, статистический арбитраж, парный трейдинг, баскет-трейдинг и многое другое (то есть то, для чего время принятия решения не менее 1 секунды, и важен срез рынка также не менее 1 секунды). Можно реализовать как помощника, вычисляющего основные параметры почти онлайн (1-2 секунды лаг), и сигнализирующее (звуком, цветом) о наличии «стат. преимущества» или же создать полноценного робота, принимающее решение самостоятельно и отправляющие заявки через API.
Самое главное придумать торгуемую идею, продумать архитектуру решения (таблицы в Quik, настройки экспорта, период обновления, период расчетов), описать алгоритм, ну и запрограммировать все это, и начинать надо с самого минимума (с самого простого), постепенно и последовательно наращивая функциональность.
Готов ответить на возникающие вопросы.
На остальные поглядываю, чтобы оценить отклонения по грекам.
Путем проб и ошибок (делал много вариантов_ я понял где могут быть нюансы.
1. как часто Quik получает данные с рынка?
2. как происходит обработка полученных данных в самом Excel?
3. Есть ли формулы, графики на листе?
Оптимально сделать все 3 условия нельзя, но поработав с каждым из них, сделать устойчивое приложение возможно.
1. нет доверия к расчетам
2. мне нужно то (свои улыбки, их задание, моделирование PnL-графиков по разным улыбкам, анализ позиций по грекам, протоколирование данных, их последующий анализ), что сделать в стороннем продукте невозможно. Посмотри на мои скриншоты, будет понятно что это все очень индивидуально.
3. ну и несравненное удовольствие пользоваться своим продуктом, знать досконально, что, где и как считается;)
В целом, считаю, что если человек имеет свою идею (тем более специфическую), и есть навыки в алгоритмизации, программировании, надо писать самому, а если нужны базовые идеи, нет желания прогать, и есть доверие к чужим продуктам, то можно конечно пользоваться ими.
Ну я-то ничего мегаспецифического не придумываю — пользую существующую систему (ОПы) в том виде, в каком она распространена. Так что ОЛТ меня устраивает))))
Не скажете что за колонка «плечо» на третьей картинке и правый верхний график на 4й картинке? (т к вы не закрасили их, наверно это не секрет. :) )
Смысл системыz, видимо — в расчете своих, кастомных индикаторов?
Смысл системы в расчетах своих волатильностей опционов, их отождествлении с «какими бы они должны были бы быть» и принятия решения на основе этих заключений + накоплении статистики для последующего анализа.