Блог им. Serj90

Методика расчета емкости торговой стратегии. Кто как считает? help

    • 16 декабря 2021, 21:38
    • |
    • Serj90
  • Еще

Добрый вечер, форумчане!)

При разработке краткосрочной ТС подошел к этапу, когда надо решить задачу аллокации депо по инструментам, на которых применяется ТС. И решая эту задачу, при анализе найденных методик, пришел к тому, что сначала надо оценить, а какова емкость разработанной ТС.
И вот тут началась засада. Собственно, поэтому и обращаюсь к вам за помощью.
Вопрос, на который я ищу ответ, сформулирован достаточно конкретно, каким образом можно оценить емкость разработанной ТС, не прибегая к эмпирическому исследованию?
Или другими словами, какие есть способы/методы определения хотя бы приблизительной границы емкости ТС?

Самый простой способ, который приходит на ум — это подгружать в ТС состояние стакана и динамически проводить подсчет числа лотов в границах допустимого для ТС проскальзывания.
К сожалению, с точки зрения технического, программного обеспечения и трудозатрат — для меня подгрузка стакана реально дорогое удовольствие. От подгрузки стакана у меня сильно просядет в скорости алгоритм (платформенное ограничение), а значит точка входа будет безвозвратно потеряна.

«Онлайн сканирование» стакана не так сильно необходимо еще и по причине того, что мне не требуется точное значение емкости. Мне достаточен ориентировочный диапазон.

Тут важно уточнить, что ТС может работать одновременно на нескольких инструментах, поэтому хотелось бы понять, как определять приблизительную емкость для одного инструмента?


Поэтому интересны методики связанные с обработкой данных, которые добываются более дешевым способом, например, объем торгов всего рынка, число сделок, объем торгов инструмента, параметры свечи таймфрейма, на котором работает ТС и т.п.
Но какими формулами можно более менее достоверно получить эффективную емкость стратегии — большой вопрос.

Поделитесь, пожалуйста, как вы оцениваете/считаете емкость своих стратегий?

P.S. Пользовался поиском СЛ, дошел до 2013 года, ответ на вопрос не нашел(((

★2
25 комментариев
Тестирование на истории что показывает? Если тестирования на истории нет, то как вообще можно понять стоит ли эта стратегия чего либо?
avatar
ICWiener, вы имеете в виду разным объемом прогнать по истории? тестирование в принципе было трудоемким в том числе потому, что тестовый полигон брокера — полное г.вно. На нем только интеграцию проверять. Поэтому ограничивался 100к руб на 67 инструментов, результаты меня устроили, сейчас работает с 25к на инструмент, однако задача аллокации, точнее метод, который нашел, допускает ситуацию когда в один инструмент будет влито в 8 раз больше чем в другой. Соответственно получается что даже при текущем объеме в один инструмент может быть влито 200к. А если поднимаемся до уровня проведенного тестирования, то в инструмент может быть влито 100*8=800к. Че то мне не хочется такими деньгами проверять глубину кроличьей норы)))) 

Однако, за такой способ спасибо! Может попробую выделить время и точечно тиковую историю отдельных недель прогнать.
avatar
Serj90, зачем разным объемом? Если у вас есть 67 инструментов, то у каждого есть своя эквити, даете денег больше системам с наилучшими эквити.
avatar
ICWiener, ну принцип аллокации, который нашел предполагает такой подход:

Расчет пропорции: Ri стоит 160000п=96000р. Si=31000р. Средняя амплитуда цен по Ri (Max-Min) составляет 1800р.По Si 300р. Следовательно на 1к Ri эквивалент 1800/300 6 к Si. Расчеты упрощены, можно делать пересчет на каждый день. Но как показывает практика точность при компиляции алгоритмов не дает преимущество, т.к частота и время сделок разное, но в долгосрочном плане общая эквити гораздо стабильнее, нежели в отдельности по алгоритмам


и по ней распределение зависит от профит-фактора. Т.е. она говорит ориентироваться на несколько другой показатель, чем то, что предлагаете вы. Однако, оба эти параметра если на них ориентироваться (если я правильно понимаю ситуацию) предполагают «безграничную» емкость стратегии в масштабах депо физика только если вход в сделку осуществляется лимиткой. Моя же ТС построена на входах в сделку «по рынку» и тут допустим на малоликвидном инструменте, да еще и стоимостью <300 рублей за лот я могу нехило сквизить стакан, что одним махом дойду до тейка)))) то есть я уже в ряде инструментов упрусь в емкость. Вот как её просчитывать хотя бы приблизительно до сделки?
avatar
Serj90, а, так это российский рынок и фьючерсы? У нас просто нет 67 тикеров, есть дай бог 10. Остальные в помойку в силу неликвидности.
avatar
ICWiener, только российский рынок. Фьючи, только для тех инструментов, для которых они есть (и исключительно для шортовой позиции, но с кучей условий, т.к. контанго/беквардация/экспирация и разность счетов).
Набрал 67 эмитентов, но последние IPO позволяют более менее этот список перетряхивать, поэтому удалось избавиться от эмитентов «замирающих» на пол часа и более))
avatar
ICWiener, второй момент почему я не могу взять конкретный инструмент, который показал хороший прирост депо на истории, потому что моя ТС не может прогнозировать этот прирост к большой точностью, это обусловлено тем, что мой тейк выставляется с отдельно рассчитываемым оффсетом. И условно если ТС говорит профит от сделки будет 1%, то фактически из-за оффсета, допустим 0.2% я могу на сильном движении (например проливы прошлой и этой недель) взять на том или ином инструменте и 1.5% и 2, и 2.5%. И это может быть на тех инструментах, которые на истории были середнячками. Да и с точки зрения диверсификации, в одном инструменте тейк может браться 3 дня, в другом 4 дня убыток в последний день тейк. То есть здесь я решаю задачу минимизации просадки в моменте.
avatar
Емкость — это всегда эмпирика. В тестах можно заложить только проскальзывание+комиссия. 

Я вот пытался оценивать емкость по срезам «стаканов» 4 раза в день. Получалось, что в Сбере с Газпромом уложить в 0,2% можно миллионов 20-30 рублей по номиналу акции. А в реальности заявки на 50 млн. легко уходили с проскальзыванием 0.1%, а не 0,2%. Просто потому что когда такая заявка съедала несколько первых бидов или оферов, в 99%+ случаев находились желающие в нее ударить.

Дальше я уже не заморачивался, а просто оценивал емкость, исходя из пропорции оборотов с Газпромом или Сбером.
avatar
А. Г., спасибо, что откликнулись! честно скажу ждал, чтобы вы увидели этот пост, хотел уже было в личку написать)))

Хм, то есть если я правильно понимаю, прежде чем открыть позицию, вы замеряли 4 раза стакан? Просто мне даже вот такого подхода будет достаточно, если допустим оценив пусть всё те же 4 раза стакан, но за вчерашнюю торговую сессию, получить емкость и ударить в рынок уже сегодняшнюю торговую сессию. Я так прикидываю, в принципе я бы смог сканировать стакан отдельно от ТС и просто ей ежесуточно перед началом торгов отдавать рассчитанные показатели емкости по каждому инструменту на предстоящий день.
avatar
Serj90, 
Хм, то есть если я правильно понимаю, прежде чем открыть позицию, вы замеряли 4 раза стакан? 

Нет, я замерял на истории «стаканов». А результат получил чисто эмпирически постепенно увеличивая объем на операцию со «стаканных» 25 млн. до 50 млн…
avatar
А. Г., а вот метод пропорции относительно GAZP и SBER, я правильно понимаю, что их оборот на интересующем меня ТФ берется как эталон, и дальше вы сравниваете относительно них другие инструменты? И если оборот другого инструмента ниже GAZP допусти в 10 раз, то емкость падает 10 раз?
avatar
Serj90, да, брал среднедневной оборот за 3 года и брал по пропорции, как Вы написали.
avatar
А. Г., понял, спасибо! хороший ресурс СЛ, столько идей в комментах накидали, буду изучать и тестить)
avatar
Как вариант, можно пересчитать обьем торговли инструментами в валюту,  (ну либо по инструменту отдельно либо в сумме всех, зависит от страты) и оценить сколько в среднем за период времени проходит в инструменте/инструментах, затем понять сколько максимум может переварить интрумент не сдвигая цену (тут можно сделать снимок стакана в разное время суток) ну и понять сколько собсна должно быть проскальзывание, исходя из этого мы получим процент от обьема прошедшего за период (например минуту) и переведем его в рубли или лоты (кому как) ну а дальше там уже применить к страте. Способ конечно довольно топорный, но общее представление должен дать
avatar
 единственное, что придется либо специально занижать результаты либо опять же смотреть эмпирически сколько переваривает и с каким проскальзыванием (как по мне лучше просто занизить результаты теста)
avatar
Михаил Табаков, спасибо! Согласен с вами полностью, лучше занизить, все равно не шестизначными суммами в инструмент влетать, а так, всяко надежнее будет вход с точки зрения проскальзывания).
Ваш метод интересен тем, что он предполагает использование «легко добываемых» данных, которые я уже давно собираю на интересующем меня ТФ. Однако, подгруз стакана… буду прорабатывать решение. 

Я уже прикидывал подгружать число сделок, количество лотов и оборот за период. Но не смог более менее определить адекватную формулу для расчета, точнее я не мог их логично обосновать. Есть идея фикс вообще, взять значит все эти характеристики:
-объем за период
-оборот за период
-число сделок за период

и просто разложить эти данные по всей длине свечи, которая описывает этот период. Прям от high до low в равных долях. Но это такой подход просто скажет мне что «такой-то объем при ударе по рынку исполнится в рамках цен, чьи доли буду захвачены при ударе». Наверное сложно описал, попробую изобразить схематично:





avatar
Serj90, снимок стакана довольно легко делается с API, можно в течении дня наделать разных снимков и скажем так «усреднить » их, по тому же обьему в пределах 10пунктов нарпимер или 0,1% 
avatar
Михаил Табаков, ну пока что я могу собирать данные только в excel. Если пытаться в динамике перед сделкой считать все показатели, то нужно писать скрипт на lua. Погружаться в особенности этого языка — время.
С другой стороны, если делать оценку не в реалтайм режиме, то и обычного excel + vba хватит с запуском в регламенте. Это уже гораздо проще.
avatar
Serj90, если у вас не высокочастотная страта то оценка в реалтайме не нужна, достаточно один раз посчиатть (как правило размеры ликвидности в определенные часы дня не меняются со временем)
avatar
Михаил Табаков, понял, поснимаю недельку стаканы, может действительно такого анализа будет хватать.
avatar
Только в бою проверите. Биржа не резиновая. Поставьте план на заработок. Заработали N денег, доверили алгоритму больше денег и т.д. Но даже такая конструкция ломается рано или поздно. Поэтому нужно быть внимательным чтоб не получилось так 100%+100%-100%=-100%
avatar
GAURANGA, асимметрия доходности))) о да, коварная штука))) 
avatar
Мой вариант такой. 1) Вам нужно оценить критический порог проскальзывания, при котором ваша стратегия перестает быть доходной. Просто добавляете на бектесте дополнительный спред 0.ХХ% к ценам открытия и закрытия позиции. В какой-то момент стратегия уйдет в ноль. 2) Нужно оценить какому объему позиции соответствует проскальзывание из Шага 1. Для этого есть два способа. Использовать проприетарную модель. Есть провайдеры типа GoldmanSachs, которые собирают статистику по торгам и продают такие модели. Стоимость от нескольких десятков до сотен тысяч долларов. Либо использовать эмпирическую модель. Я рекомендую модель «3/5». Погуглите «market impact 3/5» — есть много статей на эту тему на английском.
avatar
Michael, спасибо, стало интересно, изучу!)
avatar
Serj90, на самом деле, есть несколько вариантов моделей — все они нелинейены. То есть подразумевают, что market impact увеличивается нелинейно относительно объема торгов. «3/5» — это считается стандартом в инвест-индустрии.


avatar

теги блога Serj90

....все тэги



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