Решил начать писать небольшие заметки по алгоритмической торговле и всему что с ней связано. Возможно, когда-нибудь расширю, склею и опубликую в виде книжки. Пока же это просто наброски заметок, сделанные на скорую руку.
Можно часто слышать от тех, кто торгует алгоритмически, да и просто систематически, такие понятия как «оверфиттинг», «курвафиттинг», «зафит» и прочие ругательства с корнем «фит». Что все это значит?
На самом деле, все эти слова, как правило, используются для описания одного и того же явления, являющегося врагом всех трейдеров, торгующих систематически и пытающихся оценить исторический перформанс своих торговых логик — а именно, что «живой» аут-оф-сампл перформанс на реальном счете, как правило, хуже ожиданий, полученных ими при проверке своих идей на истории. Например, при тестировании торговой логики на истории трейдер с помощью своей модели «зарабатывал» 30% годовых, а в реале может в среднем иметь 10% годовых. Разница 20% годовых — может объясняться именно оверфиттингом (если нет других факторов — например, некорректный учет комиссионных и проскальзываний, или ошибка в торговом коде; но прочие факторы легко устранить, в отличие от оверфиттинга). На картинке в начале статьи — пример перформанса некоторого фонда в бэктесте и в реальности, наглядно иллюстрирующий написанное выше.
Оверфиттинг является следствием комбинации одного или нескольких из следующих факторов, положительно влияющих на бэктест (результаты прогонки модели на истории), что и создает у трейдера завышенные ожидания от своей модели. В этой части мы рассмотрим основные источники оверфиттинга, в следующей — поговорим о способах избежания или минимизации оверфиттинга при историческом тестировании моделей.
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (https://smart-lab.ru/blog/384110.php), за февраль (результаты за прошлый месяц: smart-lab.ru/blog/448988.php). Месяц оказался для рынка очень непростым — «perfect storm» наблюдался во всех классах активов, которыми торгует модель, однако модели удалось обогнать оба своих бенчмарка — SPY и EQW — как в терминах ретурна, так и риска (максимальной просадки). Вот веса предыдущего месяца и соответствующие ретурны торгуемых тикеров:
weight monthly.ret
XLY 0.131 -4.51
XLP 0.142 -7.96
XLE 0.000 -10.97
XLF 0.069 -4.67
XLV 0.093 -6.02
XLI 0.112 -5.74
XLB 0.034 -6.27
XLK 0.000 -2.06
XLU 0.112 -3.88
IYZ 0.000 -5.14
VNQ 0.000 -7.55
SHY 0.000 -0.06
TLT 0.144 -2.57
GLD 0.163 -2.30
Предыдущие веса были опубликованы 1-го января, соответственно доходности приведены за период с закрытия 1-го февраля по 1-е марта. Корреляция между весами и ретурнами положительная — 0.146. Вследствие этого модель обогнала свой основной бенчмарк — EQW (equal-weighted портфель из торгуемых тикеров): -4.6% LQI vs. -5.0% EQW, то же самое для индекса S&P: -4.6% LQI vs. -5.0% SPY. В терминах максимальной просадки в течение месяца модель также была лучшей: 6% для модели vs. 7% для EQW vs. 8.6% для SPY. Невесть что, однако для тех, кто сидел в просадке 6% и в просадке 9% на хороший капитал — разница, думаю, заметна. Аутперформанс был достигнут за счет лучшей диверсификации (даже не смотря на то, что все падало), а также за счет того, что модель вышла из «кислотных» январских тикеров XLE & XLK (из XLK — зря, зато из XLE — очень не зря), и «налегла» на защитные активы (TLT, GLD, XLU, XLV, XLP), хотя два последних тоже оказались не очень защитными.
Добавлю еще 5 копеек по теме дисциплины в количественной торговле, о важности которой я уже писал ранее (https://smart-lab.ru/blog/389973.php, smart-lab.ru/blog/401453.php).
Собственно, «на америке» я торгую LQI (https://smart-lab.ru/blog/384110.php), в ней простое правило ребалансировки — раз в месяц (я делаю это в начале месяца). Ребалансировавшись в начале (1-го) февраля, уже к 5-му я испытал всю глубину ощущений от падения рынка на 4+% и падения счета на 3+%. Мужественно продержался до конца недели, но в пятницу 9-го, после очередного слива СнП (к середине сессии), испугавшись, что может быть с такой динамикой рынка в понедельник, я таки-сделал (по факту — на самом дне просадки СнП) ребалансировку портфеля к новым таргетовым позициям, в результате которой снизил аллокацию на 20%. Вроде бы немного, но скинул самые волатильные и лосевые позиции, которые в ходе последующего восстановления рынка сильнее всего выросли. Итого — андерперформанс счета по сравнению с тем, если бы ничего не делал, на 2%.
Разумеется, меня заинтересовало — это получилось чисто случайно и в этот раз, или «рыпаться» с портфелем после сильных сливов — это фундаментально плохо. Отмечу, что это неочевидно, поскольку вполне возможно, что после существенного роста волатильности на рынках ребалансировка портфеля под новые условия — это правильная вещь. Я решил формально это протестировать.
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (https://smart-lab.ru/blog/384110.php), за январь нового года (результаты за прошлый месяц: smart-lab.ru/blog/442848.php). По понятным причинам месяц выдался для модели хорошим — +3.4%, модель обогнала один из своих бенчмарков (EQW), однако S&P показал ретурн на 2.3% (!!!) лучше — +5.7%. Веса предыдущего месяца и соответствующие ретурны торгуемых тикеров:
weight monthly.ret
XLY 0.118 9.24
XLP 0.122 1.65
XLE 0.078 3.58
XLF 0.059 6.52
XLV 0.066 6.56
XLI 0.084 5.39
XLB 0.063 3.98
XLK 0.076 7.04
XLU 0.079 -3.11
IYZ 0.000 0.48
VNQ 0.000 -4.25
SHY 0.000 -0.29
TLT 0.123 -3.26
GLD 0.132 3.23
Предыдущие веса были опубликованы 1-го января, соответственно доходности приведены за период с закрытия 2-го по 31-е января.
Корреляция между весами и ретурнами положительная — 0.312. Вследствие этого модель обогнала свой основной бенчмарк — EQW (equal-weighted портфель из торгуемых тикеров): +3.4% LQI vs. +2.6% EQW, однако другой бенчмарк — SPY — обогнал модель на целых 2.3%. В периоды бурного роста индекса это объяснимо — все-таки, 50% капитала модель держит в защитных и контрцикличных активах. В терминах риска (максимальной просадки) модель завершила наравне с EQW (1.5%), что лучше результата SPY (1.7%).
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (https://smart-lab.ru/blog/384110.php), за ноябрь (результаты за прошлый месяц: smart-lab.ru/blog/430154.php). Месяц выдался для модели хорошим — +2.3%, модель обогнала один из своих бенчмарков (EQW), однако S&P показал ретурн на 0.5% лучше — +2.8%. Это ожидаемо в периоды бурного роста индекса, когда «защитные» активы (золото и трежерис) перформят ожидаемо плохо (а модель почти всегда держит их с положительным весом), и не должно смущать долгосрочного инвестора — ведь основные преимущества модель проявляет, когда S&P не растет, а даже наоборот.
Веса предыдущего месяца и соответствующие ретурны торгуемых тикеров:
weight monthly.ret
XLY 0.086 5.83
XLP 0.111 5.50
XLE 0.091 0.91
XLF 0.097 2.34
XLV 0.078 3.13
XLI 0.093 3.63
XLB 0.026 1.19
XLK 0.059 1.35
XLU 0.101 2.89
IYZ 0.000 3.72
VNQ 0.039 1.31
SHY 0.000 -0.23
TLT 0.117 -0.14
GLD 0.101 -0.07
Предыдущие веса были опубликованы 2-го ноября, соответственно доходности приведены за период с 3-го по 30-е ноября.
Корреляция между весами и ретурнами положительная — 0.192. Вследствие этого модель обогнала свой основной бенчмарк — EQW (equal-weighted портфель из торгуемых тикеров): +2.3% LQI vs. +2.2% EQW, однако другой бенчмарк — SPY — показал за месяц результат на 0.5% лучше. Однако в терминах риска (максимальной просадки) модель значительно обогнала оба бенчмарка — 0.55% LQI vs. 0.75% EQW vs. 1.05% SPY
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (http://smart-lab.ru/blog/384110.php), за сентябрь (результаты за прошлый месяц: smart-lab.ru/blog/418456.php). Несмотря на ударный для S&P 500 сентябрь — индекс вырос за этот месяц на 1.8% (при том, что в среднем в сентябре S&P 500 сливает) — модель закончила месяц в небольшом минусе. Вот веса предыдущего месяца и реализованные доходности торгуемых тикеров:
weight monthly.ret
XLY 0.066 0.37
XLP 0.131 -1.19
XLE 0.000 9.11
XLF 0.164 4.79
XLV 0.073 0.99
XLI 0.089 4.08
XLB 0.000 2.99
XLK 0.000 0.90
XLU 0.169 -2.46
IYZ 0.000 -5.97
VNQ 0.000 -0.45
SHY 0.000 -0.17
TLT 0.145 -1.57
GLD 0.162 -3.55
Предыдущие веса были опубликованы 3-го сентября, соответственно доходности приведены за период с 5-го сентября до закрытия 29-го сентября.
Корреляция между весами и ретурнами сильно отрицательная — (-0.19). Модель «налегла» на защитные активы (XLP, XLU, TLT, GLD), которые показали за месяц плохие результаты, в то же время из топ-перформеров (XLE, XLF, XLI, XLB) были куплены только два (+на личном счете я удачно оставил с прошлого месяца небольшую позу в XLE, впрочем к делу и модели это отношения не имеет — XLE держать она не рекомендовала). Вследствие этого модель сильно отстала от своих бенчмарков (SPY & EQW — equal-weighted портфель из торгуемых тикеров) в терминах ретурна и даже риска (максимальная просадка). Сравнение — на графике в начале: SPY — +1.84%, EQW — +0.56%, LQI — (-0.23)%. Просадки: SPY — 0.7%, EQW — 0.3%, LQI — 0.8%. В целом модель перформила в августе в рамках своего риск-ретурн профиля.
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (http://smart-lab.ru/blog/384110.php), за август (результаты за прошлый месяц: smart-lab.ru/blog/412521.php). Хотя месяц и не был слишком удачным для S&P 500 и для модели — ей удалось остаться в плюсе и обогнать свои бенчмарки:
weight monthly.ret
XLY 0.085 -2.03
XLP 0.143 -1.00
XLE 0.093 -5.46
XLF 0.127 -2.26
XLV 0.089 1.98
XLI 0.104 0.51
XLB 0.000 0.71
XLK 0.000 2.40
XLU 0.106 2.71
IYZ 0.000 -1.21
VNQ 0.000 -0.71
SHY 0.000 0.17
TLT 0.115 2.69
GLD 0.140 4.29
Предыдущие веса были опубликованы утром 1-го августа, соответственно доходности приведены за период с закрытия 1-го августа до закрытия 31-го августа.
Корреляция между весами и ретурнами положительная — 0.061. Хотя модель и сделала серьезную ошибку, взяв весом 9.3% XLE, сильно упавший за месяц — однако это было компенсировано верными решениями о покупке топ-перформеров месяца — XLV, XLU, TLT и в особенности GLD (с максимальным весом 14%). Вследствие этого модели удалось обогнать свои бенчмарки (SPY & EQW — equal-weighted портфель из торгуемых тикеров) в терминах ретурна и риска (максимальная просадка). Сравнение — на графике в начале: SPY — +0.1%, EQW — +0.2%, LQI — +0.5%. Просадки: SPY — 2.1%, EQW — 1.5%, LQI — 1.0%. В целом модель перформила в августе в рамках своего риск-ретурн профиля.
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (http://smart-lab.ru/blog/384110.php), за июль. В целом, хотя модели и не удалось обогнать свои бенчмарки, месяц был на уровне чуть выше среднего месяца на бэктесте — +1.2%
weight monthly.ret
XLY 0.000 1.93
XLP 0.083 0.66
XLE 0.000 2.60
XLF 0.154 1.62
XLV 0.114 0.85
XLI 0.094 0.29
XLB 0.000 1.52
XLK 0.035 4.48
XLU 0.132 2.46
IYZ 0.000 -1.12
VNQ 0.076 1.23
SHY 0.000 0.27
TLT 0.142 -0.45
GLD 0.169 2.30
Предыдущие веса были опубликованы утром 2-го июля, соответственно доходности приведены за период с закрытия 2-го июля до закрытия 31-го июля.
Корреляция между весами и ретурнами эффективно нулевая — модель вошла только в половину топ-перформеров месяца (GLD, XLU), оставив за бортом неожиданно «выстрелившее» IT (XLK — формально вес ненулевой, но низкий) и энергетику (XLE). Вследствие этого модели не удалось обогнать свои бенчмарки (SPY & EQW — equal-weighted портфель из торгуемых тикеров) в терминах ретурна, риск (максимальная просадка) получился на уровне или чуть-чуть ниже, чем у SPY / EQW. Сравнение — на графике в начале: SPY — 2.0%, EQW — 1.3%, LQI — 1.2%. В целом модель перформила в июле в рамках своего риск-ретурн профиля.