A novel approach to trading strategy parameter optimization using double out-of-sample data and walk-forward techniques
Томаш Мрозевич, Роберт Слепачук · Faculty of Economic Sciences, University of Warsaw · 11 февраля 2026
Переписка: Robert Ślepaczuk, rslepaczuk@wne.uw.edu.pl. Код: github.com/tmr-crypto/wf_optim_crypto_analysis.
Оригинал: Mroziewicz, T., Ślepaczuk, R. «A novel approach to trading strategy parameter optimization using double out-of-sample data and walk-forward techniques», 2026 — arxiv.org/abs/2602.10785 (PDF), лицензия CC BY-NC-ND 4.0.
Рисунки и таблицы воспроизведены из оригинальной публикации. Перевод выполнен с указанием источника в соответствии с условиями лицензии CC BY-NC-ND 4.0 (некоммерческое использование, без производных).
Аннотация
Предложен подход к walk-forward оптимизации, в котором длины окон обучения и теста сами являются параметрами. Показано, что результативность EMA-стратегии, оцениваемой walk-forward по Robust Sharpe Ratio, сильно зависит от размера окна. Исследование: внутридневной Bitcoin на шести частотах (1–60 мин), 81 комбинация окон (1–28 дней) на 19-месячном глобальном обучении. Два лучших набора применены к 21-месячному unseen-периоду; стратегия на тесте исполнена ровно один раз. Параметры, оценённые на Bitcoin, перенесены на Binance Coin и Ethereum. На обучении все комбинации окон обошли Buy-and-Hold. На тесте стратегия сопоставима с Buy-and-Hold, но с меньшей просадкой и более высоким Information Ratio. Реальная сила — портфель Buy-and-Hold + стратегии: лучшие метрики и сокращение просадки на 50%. Комиссия 0.1% за сделку; безубыточность около 0.4% за транзакцию.
Ключевые слова: архитектура теста; оптимизация; криптовалюты; скользящие средние; алготрейдинг; внутридневная торговля; Bitcoin; walk-forward. JEL: C4, C14, C45, C53, C58, G13.
1. Введение
Работы по техническому анализу акций и крипты часто игнорируют комиссии, проскальзывание и издержки. Ещё чаще не сообщают о повторных оптимизациях на данных, объявленных out-of-sample, или вовсе опускают OOS. Это создаёт нереалистичные ожидания и провал в живой торговле.
Статья даёт практический каркас: оценка прибыльности, статистическая значимость, контроль переобучения. Основа — EMA Crossover плюс walk-forward.
RH1. Walk-forward режет период на train/test вместо оптимизации на всём ряде. Как длины окон влияют на риск-доходность? Короткие vs длинные окна — вразрез с EMH (Fama, 1965), которая не предсказывает разницы.
RH2. Как частота данных (1–60 мин) и издержки бьют по результатам?
RH3. Стратегия лучше случайной? Bootstrap против случайно собранных альтернатив.
Новизна: длины окон — объект оптимизации, а не привычка. Данные делятся на global training (оптимизация) и unseen (однократное исполнение) — в отличие от итеративного «OOS», который уже не OOS. Параметры с Bitcoin переносятся на ETH и BNB. EMA+WF снижает волатильность и просадку относительно Buy-and-Hold; в портфеле с пассивом улучшает все метрики. Стратегия даёт положительную доходность почти два года без переобучения — открытый вопрос, поможет ли периодический ретренинг.
Дальше: разд. 2 — литература; 3 — данные; 4 — методы; 5 — обучение, издержки, сезонность; 6 — unseen; 7–8 — сводка и выводы.
2. Обзор литературы
Технический анализ слабо признан в академии. Опрос Group of Thirty (1985): 97% дилеров FX использовали его. Park & Irwin (2007): из 92 работ 58 прибыльных, 24 отрицательных, 10 смешанных. Nti et al. (2020): обзор 122 статей. Hsu et al. (2010): ETF снижают прибыльность TA, но неэффективности остаются на незрелых рынках. Zielonka (2004): инвесторы переоценивают сигналы из-за confirmation bias.
Neftçi (1991): crossover MA статистически хорошо определён. Farias Nazário et al. (2017): самый популярный метод (44 из 80). Brock et al. (1992): после buy — выше доходность и ниже волатильность. Zakamulin & Giner (2020): при RW crossover ≈ подбрасывание монеты.
Крипта: Brown & Pelosi (2019) — MA crossover бьёт B&H лишь на 10 из 40 монет. Walk-forward: Pardo (2012) — снижает overfitting; López de Prado (2019) предпочитает Монте-Карло на синтетике, потому что WF предполагает стационарный процесс. LeBaron & Weigend (1998): сплиты train/val/test завышают качество. Karathanasopoulos et al. (2016): окна 300 vs 400 дней. Kryńska & Ślepaczuk (2023): удлинение in-sample при укорочении OOS улучшало результат.
Ahmed et al. (2020): crossover на Dash +14–18% к B&H. Wen et al. (2022): внутридневные momentum/reversal в крипте, без издержек. Anghel (2021): Reality Check — значимые доходности редки после data snooping и фрикций. Ограничения: только 37% работ корректируют на риск (Farias Nazário et al.); block bootstrap (Politis & Romano, 1992) нужен из-за автокорреляции.
3. Данные
Минутные цены с Kaggle (контест G-Forecast, 10 криптовалют; использовано подмножество). Два периода; unseen чуть длиннее:
- Global Training: 8 февраля 2018 — 1 сентября 2019;
- Unseen: 7 ноября 2019 — 22 августа 2021.
Разрыв между ними — выравнивание границ под walk-forward при разной частоте.
| Мин | Mean | SD | Min | Max | Skew | Kurtosis |
|---|---|---|---|---|---|---|
| 1 | 0 | 0.0013 | −0.0465 | 0.0315 | −0.077 | 18.13 |
| 5 | 0 | 0.0027 | −0.0792 | 0.0589 | 0.010 | 31.97 |
| 10 | 0 | 0.0037 | −0.0760 | 0.0610 | −0.032 | 26.16 |
| 15 | 0 | 0.0045 | −0.1364 | 0.0770 | −0.341 | 37.87 |
| 30 | 0 | 0.0064 | −0.0878 | 0.1033 | 0.078 | 22.63 |
| 60 | 0 | 0.0089 | −0.0925 | 0.1081 | 0.160 | 16.08 |
Высокий эксцесс (лептокуртозис), падает с частотой, кроме 5 мин. Положительный (или почти) skew: правый хвост длиннее. Petukhina et al. (2021) документировали эксцесс Bitcoin до 49 на 5-минутках — выше, чем здесь.
4. Методология
Все параметры подбираются только на Global Training. Unseen используется один раз для финальной комбинации — чтобы результат был настоящим OOS.
Второй уровень оптимизации — длины окон walk-forward, обычно выбираемые произвольно. Литература по этому почти пуста: Karathanasopoulos et al. сравнивали 300 vs 400 дней; Kryńska & Ślepaczuk меняли in/out sample.
4.1. Walk-forward
История режется на $n$ равных кусков; каждый — на in-sample (подбор fast/slow EMA по Sharpe) и out-of-sample (оценка этих EMA). Итоговая статистика Global Training — только из тестовых кусков WF.
4.2. EMA Crossover
Периоды EMA: 5, 7, 10, 15, 20, 30, 40, 50, 100, 150, 200. Длиннее 35 — «медленные», короче — «быстрые» (порог произвольный).
\[ \mathrm{EMA}_n=\alpha P_n+(1-\alpha)\mathrm{EMA}_{n-1},\qquad \alpha=\frac{2}{n+1},\quad \mathrm{EMA}_0=P_0. \]Длинная позиция, если $\mathrm{EMA}_{\mathrm{fast}}\ge\mathrm{EMA}_{\mathrm{slow}}$, иначе короткая. Всегда в рынке.
4.3. Оптимизация окон
Длины: 1, 2, 3, 5, 7, 10 дней плюс кратные недели 14, 21, 28 (проверка недельной сезонности). Каждая пара train×test — отдельный WF на всём Global Training, Sharpe считается по тестовым кускам. Сетка $9\times 9=81$ (рис. 2).
Соседние ячейки шумные — сглаживание по Gómez & Ślepaczuk (2021): исходная ячейка вес $1/2$, соседи делят оставшуюся половину:
\[ \mathrm{Smoothed}=\tfrac12\cdot\mathrm{Original}+\tfrac12\cdot\frac1n\sum_{i=1}^{n}\mathrm{Neighbor}_i. \]Две ячейки с максимальным сглаженным Sharpe идут на unseen. Альтернативы (не использованы): минимизация разрыва train/test; bootstrap по значимости.
Ограничения: data mining (81 окно × подбор EMA внутри WF); сплит global/unseen влияет на выбор; parameter decay — параметры 2018–19 могут устареть.
4.4. Статистическая значимость
Классический bootstrap Efron не годится для рядов (гетероскедастичность, автокорреляция). Используется block bootstrap Politis & Romano (1994), 1000 итераций, только на двух лучших окнах.
- Случайные EMA: вместо лучшей пары fast/slow на train-шаге — случайная из предопределённого набора.
- Перемешанные блоки позиций:consecutive long/short блоки шаффлятся, доходности актива накладываются заново.
Нуль: стратегия не лучше случайных сигналов. На уровне 5% нужно обойти 95% случайных реализаций.
4.5. Чувствительность к издержкам
Svogun & Bazán-Palomino (2022): издержки критичны на 1-минутках и почти безвредны на дневках. EMA всегда в рынке: разворот long→short = две сделки, при 0.1% это 0.2%. База 0.1% — не конкретная биржа, а типичный уровень крупных площадок плюс проскальзывание и спред. Сетка: 0.05, 0.07, 0.10, 0.20, 0.30, 0.40, 0.50%. Издержки накладываются на уже сгенерированный список позиций (не переоптимизация под издержки).
4.6. Алгоритмы
Алгоритм 1 (оптимизация окон): цикл по всем парам train/test → запуск WF (алг. 2) → Sharpe → сетка → сглаживание → две лучшие пары → однократный прогон на unseen.
Алгоритм 2 (сам WF): для каждого шага оптимизировать EMA на train-окне по Sharpe, применить на следующем test-окне, склеить только test-доходности.
| Метрика | Смысл |
|---|---|
| Лог-доходность | $R_t=\ln(p_t/p_{t-1})$ |
| Annualized Mean | среднее лог-доходностей × число наблюдений в году |
| Annualized Vol | выборочное СКО × $\sqrt{n_{\mathrm{year}}}$ |
| Sharpe | Mean / Vol ($r_{\mathrm{rf}}=0$) |
| Max Drawdown | худшее падение от локального максимума |
| Information Ratio** | $\mathrm{sign}(\mu)\mu^2/(\sigma\cdot\mathrm{MaxDD})$ |
| Sortino | Mean / СКО отрицательных лог-доходностей, annualized |
5. Результаты: Global Training
5.1. Частота данных
81 комбинация окон на каждой из 6 частот. Комиссия 0.1%.
| Мин | Mean | Max | Min | SD | Q50 |
|---|---|---|---|---|---|
| 1 | −12.71 | −11.41 | −16.65 | 1.09 | −12.56 |
| 5 | −2.84 | −1.60 | −5.05 | 0.83 | −2.64 |
| 10 | −1.49 | −0.49 | −2.93 | 0.66 | −1.47 |
| 15 | −0.98 | 0.20 | −2.72 | 0.72 | −0.80 |
| 30 | −0.50 | 0.74 | −2.15 | 0.64 | −0.45 |
| 60 | 0.79 | 1.25 | 0.19 | 0.23 | 0.81 |
1–15 мин убиваются комиссией 0.1%. На 60 мин все 81 комбинации имеют положительный Sharpe — даже случайный выбор окна прибылен.
5.2. Теплокарта окон (60 мин)
Четыре квадранта: короткие окна (1–7) дают низкий Sharpe; частое переобучение (≤3 дня) хуже. Лучшие короткие: train 5, test 7. Длинный test (28) с коротким train 5–7 — высокие Sharpe. Длинный train + короткий test: почти всё ниже 1, test=1 день стабильно худший. Длинный train + длинный test: 8 ячеек Sharpe > 1, лучшая 14/10. Контринтуитивно: редкое переобучение (квадрант 4) даёт лучшие Sharpe.
Авторы признают: 21/14 визуально «серее» (устойчивее), а 7/28 на краю сетки (5 соседей вместо 8). Выбрали просто две лучшие после первого сглаживания.
| Ann. Mean | Ann. Vol | Sharpe | IR** | MaxDD | Sortino | |
|---|---|---|---|---|---|---|
| Train 7 / Test 28 | 0.948 | 0.757 | 1.252 | 4.622 | 0.352 | 1.799 |
| Train 14 / Test 10 | 0.892 | 0.757 | 1.178 | 2.902 | 0.451 | 1.678 |
5.5. Bootstrap
| Orig. Sharpe | Лучше случайных | % | |
|---|---|---|---|
| 7/28 | 1.252 | 80 / 1000 | 8.0 |
| 14/10 | 1.178 | 137 / 1000 | 13.7 |
Средний случайный Sharpe ≈ 0.79, max случайных на 40–50% выше оригинала — выбор «лучшей EMA на train» не оптимален. Оригинал внутри 1 СКО среднего bootstrap.
| Orig. Sharpe | Лучше случайных | % | |
|---|---|---|---|
| 7/28 | 1.252 | 35 / 1000 | 3.5 |
| 14/10 | 1.178 | 44 / 1000 | 4.4 |
Таблица 8: средний Sharpe шаффла отрицательный (−0.24 и −0.17), СКО ~0.80, max случайных 2.27–2.72 — снова намекает, что есть лучший способ выбирать EMA, чем «победитель train-шага».
5.6. Издержки
| Комиссия | Ann. Mean | Vol | Sharpe | IR** | MaxDD | Sortino |
|---|---|---|---|---|---|---|
| 0.05% | 1.107 | 0.757 | 1.46 | 6.65 | 0.341 | 2.10 |
| 0.10% | 0.948 | 0.757 | 1.25 | 4.62 | 0.352 | 1.80 |
| 0.20% | 0.620 | 0.758 | 0.82 | 1.59 | 0.424 | 1.17 |
| 0.30% | 0.295 | 0.760 | 0.39 | 0.29 | 0.498 | 0.55 |
| 0.40% | −0.030 | 0.763 | −0.04 | −0.00 | 0.645 | −0.06 |
| 0.50% | −0.355 | 0.767 | −0.46 | −0.22 | 0.779 | −0.65 |
6. Результаты: Unseen
Два окна с обучения — однократно на BTC, ETH, BNB (ETH/BNB не участвовали в оптимизации; отбор по капитализации, без cherry-picking).
| Mean | Vol | Sharpe | IR** | MaxDD | Sortino | |
|---|---|---|---|---|---|---|
| BTC B&H | 0.927 | 0.821 | 1.128 | 2.049 | 0.623 | 1.554 |
| BTC 7/28 | 0.683 | 0.822 | 0.831 | 1.319 | 0.585 | 1.220 |
| BTC 14/10 | 0.909 | 0.822 | 1.106 | 2.628 | 0.524 | 1.625 |
| ETH B&H | 1.577 | 1.026 | 1.537 | 4.057 | 0.694 | 2.109 |
| ETH 7/28 | 1.241 | 1.027 | 1.209 | 2.065 | 0.770 | 1.767 |
| ETH 14/10 | 1.373 | 1.027 | 1.337 | 4.264 | 0.618 | 1.952 |
| BNB B&H | 1.714 | 1.171 | 1.464 | 3.580 | 0.748 | 2.021 |
| BNB 7/28 | 1.288 | 1.171 | 1.100 | 1.879 | 0.780 | 1.630 |
| BNB 14/10 | 1.403 | 1.171 | 1.198 | 2.657 | 0.728 | 1.785 |
B&H лидирует по Sharpe на всех трёх. WF 14/10 лучше WF 7/28 (на BTC Sharpe +40%). На BTC 14/10 почти догоняет B&H по Sharpe (−2%) и бьёт по IR** и Sortino. На ETH 14/10 бьёт B&H по IR**. Лучший на обучении (7/28) на тесте хуже — вопрос к правилу отбора окон.
6.2. Портфели
Равные веса BTC/ETH/BNB без ребалансировки: (1) B&H; (2) WF 7/28; (3) WF 14/10; (4) все три вместе.
| Mean | Vol | Sharpe | IR** | MaxDD | Sortino | |
|---|---|---|---|---|---|---|
| WF 7/28, 3 актива | 1.129 | 0.889 | 1.27 | 3.05 | 0.619 | 1.87 |
| WF 14/10, 3 актива | 1.269 | 0.907 | 1.40 | 4.27 | 0.569 | 2.07 |
| B&H, 3 актива | 1.495 | 0.970 | 1.54 | 3.87 | 0.683 | 2.08 |
| Все вместе | 1.318 | 0.686 | 1.92 | 9.37 | 0.438 | 2.76 |
Комбинация бьёт всех: Sharpe +20% к B&H, IR** удваивается относительно 14/10, MaxDD с ~70% у B&H до 44%.
7. Сводка
Данные пополам: global training и unseen, каждый >18 месяцев внутридневных. Оптимизировали не EMA напрямую, а длины окон WF по Robust Sharpe. Unseen — один раз. Стратегии чуть хуже B&H по Sharpe, лучше по MaxDD. Лучший на обучении (7/28) на тесте проиграл 14/10. Sharpe с обучения на тест упал в среднем на 20% (лучший −30%, второй −10%). Перенос BTC→ETH/BNB дал ту же картину. Гибрид B&H + два WF бьёт всех без ребалансировки. EMA сильна в высокой волатильности и режет просадку. Все 81 комбинации на 60 мин обошли B&H на обучении (Sharpe > 0). Block bootstrap: значимость на 5% для обеих пар окон.
8. Заключение
RH1. На обучении лучше 7/28, на unseen — 14/10. Окна длиннее 7 дней с обеих сторон, похоже, предпочтительнее.
RH2. При 0.1% за сделку прибыльны интервалы ≳ 30–60 мин; ниже 60 мин при этих издержках лучше не торговать. Безубыточность ~0.4% на 60-минутках.
RH3. Block bootstrap — превосходство на 5%. Random-EMA bootstrap: лишь малая доля случайных лучше — метод имеет merit, но выбор EMA на train-шаге не идеален.
Ограничения: импакт стакана (средние bid/ask не отражают крупные заявки); 0.1% оптимистично на неликвидных биржах; издержки холда фьючерсов; доступность шорта; влияние сплита данных; неисследованные bias.
Практический вывод: длины окон WF надо оптимизировать; OOS исполнять один раз. Эквивалентная прибыль при меньшем риске, устойчивость к просадкам. Дальше: срок жизни параметров, ретренинг раз в 2–3 месяца, отбор EMA по минимуму разрыва train/test, риск-менеджмент не full-position, mean-reversion на фазах восстановления.
Литература
- Ahmed, S., Grobys, K. & Sapkota, N. (2020). Profitability of technical trading rules among cryptocurrencies with privacy function. Finance Research Letters 35, 101495.
- Alonso-Monsalve, S. et al. (2020). CNN for high-frequency trend prediction of cryptocurrency rates. Expert Systems with Applications 149, 113250.
- Anghel, D.-G. (2021). A reality check on trading rule performance in crypto. Finance Research Letters 39, 101655.
- Ayala, J. et al. (2021). Technical analysis strategy optimization using ML. Knowledge-Based Systems 225, 107119.
- Brock, W., Lakonishok, J. & LeBaron, B. (1992). Simple technical trading rules. Journal of Finance 47(5), 1731–1764.
- Brown, M. & Pelosi, M. (2019). Moving averages trading method applied to cryptocurrencies.
- Efron, B. (1979). Bootstrap methods. Annals of Statistics 7(1), 1–26.
- Fama, E. F. (1965). The behavior of stock-market prices. Journal of Business 38(1), 34–105.
- Farias Nazário, R. T. et al. (2017). A literature review of technical analysis. QREF 66, 115–126.
- Gómez, S. C. & Ślepaczuk, R. (2021). Robust optimisation in algorithmic investment strategies. WNE WP 27/2021.
- Hsu, P.-H., Hsu, Y.-C. & Kuan, C.-M. (2010). Testing the predictive ability of technical analysis. Journal of Empirical Finance 17(3), 471–484.
- Karathanasopoulos, A., Dunis, C. & Khalil, S. (2016). Sliding window approach: the crack spread. Quantitative Finance 16(12), 1875–1886.
- Kosc, K., Sakowski, P. & Ślepaczuk, R. (2019). Momentum and contrarian effects on crypto. Physica A 523, 691–701.
- Kryńska, K. & Ślepaczuk, R. (2023). LSTM architectures in algorithmic strategies on Bitcoin and S&P 500. SSRN 4628806.
- LeBaron, B. & Weigend, A. S. (1998). Bootstrap evaluation of data splitting. IEEE TNN 9(1), 213–220.
- López de Prado, M. (2019). Tactical Investment Algorithms. SSRN 3459866.
- Neftçi, S. N. (1991). Naive trading rules and Wiener–Kolmogorov prediction. Journal of Business 64, 549–571.
- Nti, I. K. et al. (2020). Systematic review of fundamental and technical analysis. Artificial Intelligence Review 53(4), 3007–3057.
- Pardo, R. (2012). Walk-Forward Analysis. In The Evaluation and Optimization of Trading Strategies. Wiley.
- Park, C.-H. & Irwin, S. H. (2007). What do we know about the profitability of technical analysis? Journal of Economic Surveys.
- Politis, D. N. & Romano, J. P. (1994). The stationary bootstrap. JASA.
- Ryś, P. & Ślepaczuk, R. (2019). Evaluation of automated trading systems.
- Svogun, D. & Bazán-Palomino, W. (2022). Transaction costs and intraday strategies.
- Wen, F. et al. (2022). Intraday predictability, momentum and reversal in cryptocurrencies.
- Zakamulin, V. & Giner, J. (2020). Momentum versus moving average crossover.
Перевод выполнен с сохранением структуры, формул, таблиц и рисунков оригинала. Код: tmr-crypto/wf_optim_crypto_analysis. Оригинал: arXiv:2602.10785 · Mroziewicz, Ślepaczuk · CC BY-NC-ND 4.0.