Решил начать писать небольшие заметки по алгоритмической торговле и всему что с ней связано. Возможно, когда-нибудь расширю, склею и опубликую в виде книжки. Пока же это просто наброски заметок, сделанные на скорую руку.
Можно часто слышать от тех, кто торгует алгоритмически, да и просто систематически, такие понятия как «оверфиттинг», «курвафиттинг», «зафит» и прочие ругательства с корнем «фит». Что все это значит?
На самом деле, все эти слова, как правило, используются для описания одного и того же явления, являющегося врагом всех трейдеров, торгующих систематически и пытающихся оценить исторический перформанс своих торговых логик — а именно, что «живой» аут-оф-сампл перформанс на реальном счете, как правило, хуже ожиданий, полученных ими при проверке своих идей на истории. Например, при тестировании торговой логики на истории трейдер с помощью своей модели «зарабатывал» 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), хотя два последних тоже оказались не очень защитными.
Продолжаю публикацию своих ежемесячных результатов и портфелей на следующий месяц (начало здесь: smart-lab.ru/blog/412664.php, результаты января: smart-lab.ru/blog/448984.php).
Вот как вел бы себя портфель, рекомендованный на февраль:
Месяц выдался непростым как для рынка, так и для модели, которая в итоге «выступила» чуть хуже индекса (0.27% за месяц у модели против 0.35% у индекса ММВБ).
НА ПОКУПКУ: BANEP, CBOM, UPRO, ALRS, MTSS, MAGN
НА ПРОДАЖУ: AKRN, FXCN, TRMK, NMTP, FEES, VSMO, ROSN, TATNP, NVTK
ДЕРЖАТЬ: RTKMP, LSRG, YNDX, SBER, SBERP, MTSS, TATN, SIBN
Добавлю еще 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%).