Стратегии
Hummingbot SimplePMM (точный порт): симметричные мейкерские котировки 10 bp вокруг средней цены ETHUSDT, отмена и замена каждые 15 с, фиксированный объём 0.01 ETH на сторону (ETHUSDT.BINANCE USD-M, тики котировок)
Итог: Отменено
EthSimplePmmMakerQuotes
Сводка по итогам
EthSimplePmmMakerQuotes пыталась перенести скрипт Hummingbot SimplePMM на бессрочный контракт ETHUSDT.BINANCE USD-M с плечом 1.0, выставляя мейкерские биды и аски с отступом 10 bp каждые 15 с. Бессрочный контракт выбрали вместо спота, чтобы можно было выставлять котировки с обеих сторон с нулевой позиции и избежать спотовой мейкерской комиссии 0.10%, которая поглотила бы весь спред. Разработчик заменил отмену и выставление ордеров их изменением на месте, чтобы сократить число событий движка, но выполнение всё равно застряло на написании кода: за 3 итераций произошло 3 тайм-аутов. Работу прекратили до бэктеста, оптимизации и анализа, поэтому данных о результативности нет.
Гипотеза
coding_stuck_3_timeouts
Реализация
Точный порт Hummingbot SimplePMM на бессрочном контракте ETHUSDT.BINANCE USD-M: при каждом обновлении снимаются все котировки и выставляется пост-онли LIMIT BUY по ref*(1-10bp) и LIMIT SELL по ref*(1+10bp), каждый объёмом 1% капитала; действует проверка маржи по принципу «всё или ничего». Исполнения не меняют котировки, позиция свободно накапливается.
История итераций
sandbox_timeout: проверка не пройдена (Layer 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300 с на окне примерно в 20000 баров (30 дней по ETHUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL). Обычно это означает, что затраты на обработку бара растут вместе с историей, например, при повторном сканировании всего ряда ставок финансирования и дополнительных данных либо при повторном создании списка и вызове min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно отсортируйте массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).
sandbox_timeout: проверка не пройдена (Layer 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300 с на окне примерно в 20000 баров (69 дней по ETHUSDT.BINANCE-5-MINUTE-LAST-EXTERNAL). Обычно это означает, что затраты на обработку бара растут вместе с историей, например, при повторном сканировании всего ряда ставок финансирования и дополнительных данных либо при повторном создании списка и вызове min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно отсортируйте массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы затраты на бар составляли O(log n), а не O(n).
Сводка по итогам
Маркет-мейкер, пересчитывающий цены каждые 15 с, создаёт очень много событий ордеров на данных с тиками котировок. Поэтому при следующей попытке сначала нужно убедиться, что код укладывается в лимиты времени на написание и проверку, например, сократив число перекотировок или взяв данные с более крупным шагом.
Работу прекратили на этапе написания кода с причиной «coding_stuck_3_timeouts» после 3 итераций. До проверки бэктеста, оптимизации, анализа и оценки рисков не дошли.
Точный порт Hummingbot SimplePMM: чистый пассивный маркет-мейкер, выставляющий симметричные мейкерские котировки пост-онли с отступом 10 bp от базовой цены ETHUSDT на бессрочном контракте Binance USD-M. Котировки отменялись и заменялись каждые 15 секунд; сигнала, контроля позиции, стопа и лимита позиции нет.
Данных о результативности нет. Отчёт о бэктесте пуст, отчёта об оптимизации нет, поэтому стратегия не показала доходность, коэффициент Шарпа или число сделок.
Анализ
SimplePMM
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.