Блог
Заметки с фабрики стратегий

Доллар вашего бэктеста был USDC. 11 марта он торговался по 87 центов.
Мы подписали кривую капитала в долларах. Счёт был в USDC, и в ту субботу USDC не был долларом.
Читать статью →
Как прогреть бэктест, не засчитывая lookback как результат?
Недостроенные индикаторы, обрезанные кривые, которые сохраняют позиции, и 30-дневный прогрев на 8-часовых признаках. Проверка перезапуском, которая их ловит.
Читать статью →
Мы бэктестировали на Binance и торговали на бумаге на Bybit. Преимущество оказалось лагом.
Мы исследовали BTC на Binance и торговали на бумаге на Bybit. Бэктест не был оптимистичным. Он смотрел на более быструю ленту.
Читать статью →
Хедж, который удвоил торговые издержки в нашем бэктесте
Сделки с опционами были редкими. Хедж торговал при каждом движении базового актива. Вот как мы обнаружили пропущенные издержки в бэктесте опционной стратегии.
Читать статью →
Шорт в бэктесте был в плюсе. Автоделевереджинг закрыл его всё равно.
Ликвидация — это когда заканчивается ваша маржа. ADL — это когда заканчивается чужая, а в плюсе были вы.
Читать статью →
Сигнал был верным. В бэктесте опционов мы купили не тот срок экспирации.
Сигнал указывал на бычий колл-спред. В бэктесте мы выбрали экспирацию, которая задним числом казалась ликвидной. Несоответствие обнаружилось из-за незаметного соединения календарей.
Читать статью →
В вашем бэктесте опционов использовалась цена mid, по которой никто не торговал
Средняя цена может быть разумной оценкой стоимости и плохим допущением для исполнения. Вот три способа, которыми это различие незаметно создаёт доходность бэктеста опционов.
Читать статью →
Почему в бэктесте снова меняются данные по опционам?
Одна и та же опционная стратегия может давать разные результаты на «одной и той же» истории. Рассказываем, как выяснить, изменилась ли история рынка в вашем архиве, и что нужно сохранять, чтобы следующий запуск можно было объяснить.
Читать статью →
Sharpe бэктеста может вырасти, если добавить рынки
Широкий рыночный универсум выглядит как диверсификация. Во время поиска стратегии он может стать ещё одной серией испытаний. Рассказываем, как отличить одно от другого.
Читать статью →
Почему бэктест выглядит лучше при более частой ребалансировке?
Ежедневная ребалансировка позволяет быстрее учесть сигнал — и может на это израсходовать всё преимущество. Вот как оценить, окупается ли дополнительная торговля.
Читать статью →
Коэффициент Шарпа вашей стратегии может вырасти, если данные станут хуже
Подозрительный тик может быть ошибочной записью, а может — тем самым наблюдением, которое выявит хрупкость вашей стратегии. Очистке данных нужен журнал изменений, а не просто более красивая кривая капитала.
Читать статью →
Мы пересобрали бэктест после того, как поставщик данных изменил историю
Через 6 недель тот же код стратегии и тот же диапазон дат дали другую кривую капитала. Мы обнаружили, что причиной стали исправленные рыночные данные, а затем пересобрали эксперимент, чтобы понять, что именно изменилось.
Читать статью →
Вы провели 240 испытаний стратегии. Сколько бэктестов вы на самом деле запустили?
Вы проверили 240 наборов параметров и оставили победителя. Его коэффициент Sharpe — 2.1. Важно спросить: сколько шансов вы дали шуму, чтобы он выглядел как преимущество?
Читать статью →
Стратегия работала, пока мы не учли стоимость переноса фьючерсной позиции
Наш календарный спред выглядел безупречно, пока не истёк ближний контракт. Затем бэктест перенёс позицию по цене, по которой никто не мог торговать.
Читать статью →
Ребалансировка казалась дешёвой, пока мы не учли спред
Бэктест учёл 4 базисных пункта комиссии. Спред и рыночное воздействие подняли стоимость ребалансировки выше 20. Вот как мы нашли недостающие затраты.
Читать статью →
Как протестировать стратегию, торгующую по дневному сигналу?
Дневная свеча показывает цену и дату, но не сообщает, когда стратегия узнала цену закрытия. Вот как тестировать дневные сигналы, не закладывая невозможное исполнение.
Читать статью →
Мы поручили ИИ-агенту исследовать оптимизацию стратегии. Дневник оказался менее впечатляющим.
Агент нашёл стратегию с коэффициентом Шарпа 4.1. Затем мы подсчитали попытки, зафиксировали поиск и увидели, как результат снизился до уровня, который уже можно было оценивать всерьёз.
Читать статью →
Ваш ИИ-агент для исследований уже видел тестовую выборку: 3 способа исказить оценку
Тестовая выборка перестаёт быть тестовой, когда её результаты влияют на следующий эксперимент. Вот 3 способа, которыми исследовательские агенты незаметно учатся на ней, и как сохранить честность оценки.
Читать статью →
Как проверить, выдержит ли преимущество стратегии рост торговых издержек?
Не спрашивайте, выдержит ли стратегия «реалистичные издержки». Измерьте, какой уровень издержек она может перенести, какие допущения важны и при каком уровне преимущество исчезает.
Читать статью →
Зачем бэктесту реестр делистингов
Если компания исчезает из бэктеста, вместе с ней может исчезнуть и ее итоговая доходность. Три распространенных упрощения превращают акции несуществующих компаний в невидимых победителей.
Читать статью →
Ваш бэктест показал преимущество в 20%. Сколько в нём заслуги одной неверной временной метки?
Преимущество в 20% по бэктесту может быть следствием числа, которого в тот момент никто не мог знать. Вот как выяснить, не торгуют ли за вас пересмотры, публикации с задержкой или поздние дозагрузки данных поставщиком.
Читать статью →
Мы разобрали бэктест рынка предсказаний, который купил не тот контракт
Бэктест купил «Примут ли законопроект?» Но какой именно законопроект, к какому сроку и по чьему решению? Разберём ошибки идентификации контракта, из-за которых аккуратное воспроизведение истории рынка предсказаний превращается в другую ставку.
Читать статью →
Платёж по ставке финансирования превратил прибыльную сделку с бессрочным фьючерсом в убыточную
Сделка с бессрочным фьючерсом на BTC была открыта в верном направлении, но всё равно принесла убыток. Разберём расчёты по каждому платежу и выясним, какие проверки учёта объясняют результат.
Читать статью →
Как понять, сохраняет ли стратегия преимущество при смене рыночного режима?
Средняя доходность стратегии может скрывать хрупкую сделку с одним типом рынка. Вот как проверить, сохраняется ли её преимущество в разных режимах.
Читать статью →
Более качественный бэктест может ухудшить исследование стратегии
Бэктест поможет отсеять неудачную идею. Но если с его помощью выбрать лучшую из 500 идей, победителем может оказаться просто самая удачливая. Вот как сохранить честность исследования.
Читать статью →
Почему мой лимитный ордер исполняется в бэктесте, если рынок до его цены не доходил?
Лимитная цена оказалась внутри диапазона свечи, и бэктест отметил исполнение. Это касание цены, а не доказательство того, что сделка досталась вам.
Читать статью →
Стратегия прошла walk-forward тестирование. Почему результаты бумажной торговли разошлись?
Стратегия прошла walk-forward валидацию, но результаты бумажной торговли разошлись с тестовыми. Первым подозреваемым может оказаться переход от исследования к исполнению, а не рынок.
Читать статью →
Почему в бэктесте сделка прошла по цене, которой рынок не показывал?
Если цена симулированного исполнения лучше любой цены в баре, проблема может быть в предположениях об исполнении, а не в сигнале. Вот как выяснить, откуда взялась эта цена.
Читать статью →
Бэктест показал 12% годового оборота. Счёт наторговал на 38%.
Бэктест может показать 12% годового оборота, а счёт наторговать на 38%. Разница часто начинается с того, что именно код считает «оборотом».
Читать статью →
Как не дать агенту ИИ для разработки стратегий заглянуть из завтра в сегодня?
Стратегия может пройти все синтаксические проверки и всё равно знать будущее. Вот незаметные способы, которыми исследовательские агенты допускают утечку информации, и проверки, которые её выявляют.
Читать статью →
Как тестировать стратегию, торгующую во время приостановки торгов?
Приостановка торгов — это не свеча с нулевым объемом. Она меняет то, что рынок позволяет делать вашей стратегии; аукцион открытия может установить цену, отличную от той, по которой вы рассчитывали торговать.
Читать статью →
Преимущество исчезло после смены комиссии. Изменилась стратегия или счёт?
Валовые сделки стратегии не изменились, но вместе с объёмом счёта сменился и уровень комиссий. Вот как понять, изменилось ли преимущество стратегии или дело в счёте.
Читать статью →
Ребалансировка, продавшая будущих лидеров: разбор оборота
Таблица ранжирования — ещё не торговая стратегия, пока вы не превратили её в ордера. Проследим путь одной ежемесячной ребалансировки: от целевых весов через оборот и комиссии до допущений, из-за которых бэктест может выглядеть слишком хорошо.
Читать статью →
Бэктесту понравился лучший час. Сможете торговать в это время после перевода часов?
В первый час стратегия приносит прибыль — пока этот час не сдвинется. Практическое руководство по проверке внутридневной сезонности с учётом перехода на летнее время и расписания торговых площадок.
Читать статью →
Ваш бэктест потратил одни и те же деньги дважды: руководство по учёту портфеля
Позиция может быть прибыльной на бумаге, но при этом на следующий ордер уже не хватит средств. Три распространённые бухгалтерские упрощения объясняют, как бэктест незаметно тратит одни и те же деньги дважды.
Читать статью →
Ваша бумажная стратегия перезапустилась с другой позицией: письмо о восстановлении состояния
Вы перезапустили процесс, но перезапустили ли стратегию? Вот как проверить, совпадают ли её данные о позициях, отложенных ордерах и сигналах с бумажным счётом.
Читать статью →
Бэктест прошёл. В бумажной торговле не исполнилось 37% заявок.
Наша бумажная стратегия отправила 100 заявок, из них исполнились 63. В бэктесте исполненными считались 91. Расхождение возникло из-за состояния заявок, времени исполнения и допущений, которые нельзя было увидеть по коэффициенту Sharpe.
Читать статью →
Мы попытались воспроизвести бэктест стратегии. Вот где разошлись цифры.
Мы повторно запустили сохранённую стратегию и получили другую кривую капитала. За несколько дней мы проследили расхождения до обновлений данных, версий зависимостей и неожиданно небольшого параметра по умолчанию.
Читать статью →
Как понять, можно ли было торговать по рыночным данным из бэктеста?
Верные цены ещё не гарантируют честный бэктест. Проверьте, когда каждое наблюдение стало доступно, какой рынок оно отражает и могла ли ваша стратегия на него отреагировать.
Читать статью →
Мы повторно запустили бумажную стратегию после перезапуска. Её заявки изменились.
Мы перезапустили бумажную стратегию в середине позиции и получили другую последовательность заявок. С сигналом всё было в порядке. А вот её память подвела.
Читать статью →
Что на самом деле происходит с опционом при истечении срока?
При истечении срока последняя котировка опциона часто оказывается наименее полезным числом для расчёта P&L. Рассказываем, как моделировать расчёты, исполнение и поставку, не придумывая цену сделки.
Читать статью →
Ваш график непрерывных фьючерсов показывает контракт, которым никто не мог торговать
20 апреля 2020 года расчётные цены двух контрактов WTI различались на $58.06. Неаккуратно склейте их — и бэктест запишет $58,060, которых не заработала ни одна позиция.
Читать статью →
Перезапустите стратегию на середине бэктеста. Помнит ли она, чем владеет?
Стратегия может пережить все рыночные данные в вашем наборе и всё равно дать сбой после перезапуска процесса. Остановите воспроизведение на середине и выясните, что она забыла.
Читать статью →
Бумажный счёт отклонил исполнение из бэктеста: письмо о биржевых фильтрах
В бэктесте вы правильно рассчитали размер ордера, но бумажная биржа его отклонила. Рассказываем, как встроить правила точности в модель исполнения стратегии.
Читать статью →
Тиковые данные не спасут ваш бэктест — для большинства стратегий они всё ухудшают
Более высокая детализация не означает больше правды. Для большинства стратегий тиковые данные подменяют реальную проблему — неверные допущения о сделках и издержках — мнимой: иллюзией, будто более подробные данные делают бэктест честнее.
Читать статью →
Ребалансировка, поглотившая сигнал: первый выход стратегии на реальный рынок
Сигнал верно указал направление. Но на ребалансировке портфель всё равно растерял преимущество — из-за мелкого стакана и слишком крупных ордеров.
Читать статью →
Как тестировать обратный бессрочный контракт, не путая BTC и доллары?
Сделка приносит $10,000. Счет увеличивается на $15,000. Оба числа верны. Бэктест должен объяснить, откуда взялись недостающие $5,000.
Читать статью →
Ваш бэктест по акциям нашёл короткую позицию. А вы действительно смогли бы занять эти акции?
Ваша стратегия на затухание гэпов открывает короткую позицию по каждому отобранному тикеру. У брокера выбор скромнее. Письмо о сделке, которой не хватает перед входом.
Читать статью →
Модель проскальзывания в бэктесте должна ошибаться намеренно
Цель модели проскальзывания — не угадать, по какой цене исполнился бы ваш ордер. Нужно выяснить, выдержит ли стратегия правдоподобные варианты исполнения, которые невозможно определить по историческим барам.
Читать статью →
Ваш макробэктест торговал по пересмотренному отчёту о занятости
Вы правильно скачали исторический ряд занятости. Но стратегия всё равно торговала по цифрам, которых ещё два месяца не существовало. Вот как восстановить доступный ей набор данных.
Читать статью →
Какую задержку добавить в бэктест? Мы измерили каждую миллисекунду в нашей системе
Медиана — 195 ms. 2,970 ms на 99-м перцентиле. Медиана — 840 ms в те минуты, когда срабатывает ваш сигнал. Интересно только одно из этих чисел.
Читать статью →
5 правил расчёта размера позиции, один сигнал: что на самом деле определяет результат бэктеста
Большая часть разброса результатов бэктеста зависит от размера позиции, а не от момента входа. Вот один и тот же сигнал при 6 правилах расчёта размера позиции, с учётом комиссий и пикового плеча, которое отчёт забыл показать.
Читать статью →
Тот же код, те же данные, два разных значения Sharpe: аудит недетерминированности, необходимый вашему бэктесту
11,205 баров совпадали побитово, затем ничья при ранжировании — и разница Sharpe в 0.15. Если вы не знаете диапазон разброса своего бэктеста, вы не знаете, принес ли победу лучший набор параметров.
Читать статью →
Ваш коэффициент Sharpe выдержал все проверки. Но это всё ещё может быть случайностью.
Sharpe на уровне 2 может выглядеть выдающимся после тысячи попыток. Но по-настоящему удивляет число способов, которыми вы пытались его получить.
Читать статью →
Почему целевой уровень волатильности в бэктесте не контролирует риск так, как должен
Целевой уровень волатильности 10% — это указание для расчёта размера позиции, а не гарантия контроля риска. Разберём стратегию на бессрочном контракте BTC и посмотрим, где эта цифра перестаёт описывать возможные потери счёта.
Читать статью →
Ставка финансирования казалась выгодной. Но позиция продолжала приносить убыток.
По бессрочному контракту каждые 8 часов начислялось 0.01% финансирования. Сделка всё равно оказалась убыточной. Разбираемся, куда делся привлекательный carry из бэктеста.
Читать статью →
Строка, на которой строится ваш опционный бэктест: один BTC-колл Deribit, поле за полем
В тикере около двадцати полей. Два из них — цены, по которым никто не торговал, три указаны в единицах, которые ваш бэктест, вероятно, неверно интерпретирует, а число, которое губит большинство опционных стратегий, вообще не содержится в данных.
Читать статью →
Вы бэктестили по $2,000 на сделку и теперь хотите $50,000: письмо о ёмкости
Ваш эдж — 22 bps валовых на сделку. На $2,000 вы платите около 2 bps импакта. На $50,000 — 11. Арифметика, которая следует дальше, решает, есть ли у вас стратегия или скриншот.
Читать статью →
В бэктесте у вас не было ликвидации: маржа, mark price и пропущенная линия кредитного плеча
В апреле кривая капитала проседает на 63%, а к июню восстанавливается. На бирже счёт закрыли на 41-й день, и восстанавливать уже было нечего.
Читать статью →
И стоп, и тейк-профит оказались внутри одной свечи. Какой из них выбрал ваш бэктест?
Минимум свечи ниже вашего стопа. Максимум выше тейк-профита. Что сработало первым, свеча не показывает, но код всё равно принял решение.
Читать статью →
Несуществующие минуты: пропуски, остановки торгов и бары с нулевым объёмом в истории OHLCV
Пропущенные бары не разбросаны по истории случайным образом. Они сгущаются именно в те минуты, которые важны для вашей стратегии, а стандартные способы исправления скрывают последствия.
Читать статью →
Ваш лимитный ордер не исполнился: письмо об очереди, maker-бэктестах и выдуманном Sharpe
Правило исполнения у вас занимает одну строку: если минимум свечи не выше моего лимита, считаем ордер исполненным. Эта строка делает больше, чем вся ваша альфа, и делает это неправильно.
Читать статью →
Данные с поправкой на сплит: что сплит NVDA 10 к 1 меняет в каждой строке
В строке указано закрытие по $120.8781. Но в тот день на ленте было $1,208.88. Эти числа разделяют 6 колонок, и большинство бэктестов неверно трактуют как минимум 3 из них.
Читать статью →
Что ломается при бэктесте рынков предсказаний: дневник за 8 дней
Инструмент перестаёт существовать. В назначенную дату, которую вы не контролируете, он либо выплачивает доллар, либо ничего. Здесь неверны почти все предположения, заложенные в бэктестер на основе доходности, и вот в каком порядке мы это обнаружили.
Читать статью →
Сколько сделок нужно в бэктесте, чтобы Sharpe что-то значил?
Стандартная ошибка годового Sharpe примерно равна 1, делённой на квадратный корень из количества лет данных. Из этой строки следует всё самое неприятное.
Читать статью →
Вы построили стратегию, которая торгует только в 00:00 UTC — письмо об артефактах времени фандинга
Ваш Sharpe равен 2.9, и каждый доллар этой прибыли появляется в течение четырёх минут после расчёта фандинга. Я видел такой результат, наверное, с дюжину раз. Вот как выяснить, с каким случаем вы столкнулись.
Читать статью →
Почему бэктест принимает всплеск волатильности за новый режим
Таргетирование волатильности выглядит адаптивным. Устаревшая оценка, неверный нижний порог или скрытое правило ребалансировки могут превратить одну тяжёлую неделю в месяцы упущенных возможностей. Рассказываем, как заметить последствия.
Читать статью →
Ваш набор инструментов — машина времени: смещение выживших в бэктестах криптовалютных бессрочных контрактов
Вы сформировали набор, один раз запросив exchangeInfo сегодня и отфильтровав инструменты по status == TRADING. Эта единственная строка незаметно удалила все монеты, которые перестали существовать.
Читать статью →
Анатомия одной 1-минутной свечи: чего OHLCV не рассказывает вашему бэктесту
Двенадцать значений в JSON-массиве. По меньшей мере четыре из них означают не то, что предполагает ваш движок исполнения. Разбираем всю свечу по частям.
Читать статью →
В вашем бэктесте 100 сделок. Почему средняя цена исполнения всё ещё лишь предположение?
100 сделок, комиссия taker 0.04% и допущение о проскальзывании 0.02% выглядят убедительно. Но цена исполнения остаётся предположением, пока вы не оцените, какой объём мог поглотить рынок.
Читать статью →
Почему моя бумажная стратегия совершает меньше сделок, чем бэктест?
Сигнал может один раз сказать «купить», а система ордеров попробует трижды и исполнит два ордера. Вот как смоделировать разницу между сделками в бэктесте и историей ордеров на бумажном счёте.
Читать статью →
У вашего бэктеста проблемы с часами, даже если все временные метки верны
Котировка и сигнал могут иметь одну временную метку, но поступить в разном порядке. Эта небольшая неоднозначность может решить, совершила ли ваша стратегия сделку вообще.
Читать статью →
Почему у открытых ордеров в бэктесте должны быть часы
Лимитный ордер может пережить сигнал, который его создал. Три распространённые причины, по которым бэктесты теряют открытые ордера из виду, и практичная модель, которая помогает учитывать их корректно.
Читать статью →
Почему бэктест неверно учитывает дивиденды
Дивиденд может выглядеть как внезапный убыток, бесплатная доходность или денежный остаток, которого ваша стратегия так и не получила. Причина — в 3 распространённых ошибках моделирования.
Читать статью →
Три способа провалить walk-forward оптимизацию и не заметить этого
Walk-forward тестирование продают как противоядие от переобучения. Если делать его небрежно, это то же переобучение, только с более убедительной отчётностью. Разбираем три способа провала и их симптомы.
Читать статью →
Как команда AI-агентов доводит торговую идею от одной фразы до бумажных денег
Десять агентов, один пайплайн и воронка, спроектированная, чтобы убивать идеи. Разбор того, что на самом деле происходит между «funding momentum» и работающей бумажной нодой.
Читать статью →
Бумажная торговля — единственный эталон, перед которым отвечает ваш бэктест
Каждый день мы прогоняем окно каждой бумажной стратегии через бэктест-движок и сравниваем сделки. Вот что этот ритуал ловит снова и снова.
Читать статью →
Сколько на самом деле стоит полный оборот на девяти площадках
Страницы с тарифами пишет отдел маркетинга. Вот арифметика двустороннего оборота, которая и решает, бизнес ваша стратегия или пожертвование — площадка за площадкой.
Читать статью →
Почему большинство бэктестов лгут и четыре статьи расходов, которые это исправляют
Стратегия, которая в бэктесте даёт +40% годовых, а вживую теряет деньги, — это не невезение. Её просто неправильно измерили.两 числа разделяют четыре статьи расходов.
Читать статью →