Роберт Карвер. Глава 3 (1)
AlgoFox
Systematic Trading. A unique new method for designing trading and investing systems. Robert Carver.
Фрагмент книги: Систематическая торговля. Уникальный новый метод проектирования торговых и инвестиционных систем. Роберт Карвер. 2015. (Автоперевод)
Третья глава. Примерка (Fitting) (Подгонка)
Стойкий системный трейдер
Вся эта глава посвящена использованию данных для создания торговых правил, используемых стойкими систематическими трейдерами. В чтении нет необходимости, если вы собираетесь использовать мою структуру для дискреционных прогнозов в качестве полуавтоматического трейдера или вообще без каких-либо правил в качестве инвестора, распределяющего активы.
Решение использовать систематическую торговую систему означает, что вы должны выбрать одно или несколько торговых правил и отбросить другие как недостойные. Этот процесс часто называют подгонкой. Учитывая нашу человеческую склонность к самоуверенности, эта процедура таит в себе опасность. Вам нужно остерегаться чрезмерной подгонки:40выбор набора торговых правил, которые слишком хорошо соответствуют прошлым данным и которые вряд ли принесут прибыль в будущем.
Обзор главы

Опасности чрезмерной подгонки (over-fitting)
Малыш с 50 моделями
Вскоре после ухода из индустрии хедж-фондов я начал обсуждать консалтинг и управление некоторым капиталом для Aqueduct Capital местная частная торговая фирма. В офисе была обычная смесь седовласых бывших трейдеров LIFFE и наивной молодежи, целый день торгующей горсткой фьючерсных контрактов. Но босс особенно гордился своей командой по количественному анализу, которая состояла из пары компьютеров по 20 с лишним лет, на которых работал готовый пакет программного обеспечения для ретроспективного тестирования.
«Это Джо. Он здесь всего месяц, а уже придумал 50 новых торговых правил, которые приносят прибыль в тестах на исторических данных!» — воскликнул босс.
«Да, это потрясающее программное обеспечение. Он может автоматически тестировать сотни правил в день», — добавил Джо.
Мне удалось сохранить серьезное выражение лица, и я ответил так дипломатично, как только мог: «Ну, я уверен, что некоторые из них сработают».
Неизбежно, что переговоры о создании совместного предприятия провалились, что было к счастью, так как несколько месяцев спустя фирма была ликвидирована. Открытие явно выгодных правил, отсеянных из тысяч возможностей, — невероятно опасный подход по причинам, которые станут очевидными в оставшейся части главы.
Идеи сначала тестируются на правила и варианты
Прежде чем понять, почему Джо пошел по ложному пути, вам нужно четко понять, что на самом деле включает в себя подгонка. Я собираюсь ограничить свое внимание в этой главе первым методом идей, который я представил в глава вторая. Вы уже знаете, что я предпочитаю подход, основанный на идеях, но причина, по которой я использую его здесь, заключается в том, что гораздо проще объяснить и понять, как избежать переобучения, чем с альтернативой сначала данных.
Процесс подбора будет включать в себя выбор одного или нескольких торговых правил из списка кандидатов, каждое из которых основано на блестящей идее. Давайте рассмотрим надуманный пример, но будьте осторожны, это не то правило, которое я бы рекомендовал использовать. Основная гипотеза состоит в том, что курс британского фунта стерлингов к доллару США, по-видимому, движется в диапазонах, как показано на рисунке 6. Вы можете подумать, что покупка фунтов, если они на 5% ниже их среднего значения за последний год, и продажа на 5% выше, является хорошей стратегией. Это пример правила возврата к среднему.
Теперь вы должны проверить это первоначальное правило на исторических данных и посмотреть, как оно работает и ведет себя. На этом этапе, если правило бесперспективно, вы можете отказаться от него и перейти к следующей идее. Если вам это достаточно нравится, вы можете перейти к следующему этапу, который я называю калибровкой, хотя возможно и часто желательно просто придерживаться первоначальной версии.

Во время калибровки вы исследуете некоторые вариации основного торгового правила. В простом примере вы можете проверить первоначальный диапазон плюс-минус 5% в сравнении с такими альтернативами, как 3%, 6% или 10%; или вы можете сравнить текущую цену со средней ценой за последний год, или неделю, или два года и так далее. Обычно вы выбираете наиболее прибыльное правило, используя такой показатель эффективности, как коэффициент Шарпа. Калибровку также можно использовать — как я покажу позже в книге — для поиска правил, которые ведут себя определенным образом, например, при торговле с заданной скоростью. Затем вы можете решить, какую вариацию или вариации оставить.
После того, как вы выбрали портфель торговых правил и вариантов, вам нужно решить, как распределить между ними свой капитал. Решения о распределении портфеля, подобные этому, являются предметом следующей главы. На данный момент стоит отметить, что плохой вариант может быть сразу отвергнут или ему будет отведено относительно мало места в общей системе.
Что делать, если вы хотите использовать методы data first? Тогда вам нужно быть достаточно опытным, чтобы применять принципы, изложенные в этой главе, с предпочитаемыми вами инструментами. Вы не должны использовать метод data first, для которого у вас нет глубокого понимания. Я настоятельно рекомендую вам не использовать метод вслепую только потому, что он поставляется вместе с некоторым программным обеспечением для тестирования на истории.
Прежде чем мы продолжим, вот последнее предостережение о первом тестировании идей. Любой достойный разработчик торговых систем знает их историю, читает все нужные учебники и знает, чем торгуют другие люди. Вы можете в конечном итоге тестировать только те идеи, которые, как вы уже знаете, будут работать, что является формой неявного переобучения. В результате, как бы тщательно вы ни подошли к последующему процессу подгонки, ваши коэффициенты Шарпа, проверенные на исторических данных, вероятно, все равно будут завышены — остерегайтесь самонадеянности!
Обман с машиной времени
Давайте рассмотрим первую распространенную ошибку при примерке — притворяться, что у вас есть доступ к машине времени.
При подгонке всегда есть два различных периода времени. Во-первых, это период, используемый для подбора модели, а во-вторых, период времени, используемый для ее проверки. Чтобы проиллюстрировать это, снова рассмотрим пример попытки подобрать торговое правило GBPUSD и предположим, что вы пытаетесь найти наилучший отдельный вариант. Предположим, у вас есть ежедневные данные о ценах за десять лет.
Самый простой и, вероятно, наиболее распространенный метод — использовать все десять лет в качестве подходящего периода и найти единственный наиболее прибыльный вариант за это десятилетие. Затем вы возвращаетесь и проверяете, как работала эта единственная вариация в течение каждого из тех же десяти лет. Для каждого года, в котором вы проводите тестирование, вы используете одну и ту же модель, основанную на данных за все десять лет.
На рис. 7 это показано для примера модели, работавшей в период с 1990 по 2000 год. Каждый этап настройки занимает строку. Таким образом, первая строка показывает, что вы будете использовать все данные за 1990–2000 годы, чтобы подобрать модель, которую вы тестируете в 1990 году. На втором этапе вы используете ту же самую подобранную модель для проверки производительности в 1991 году и так далее.
Производительность этого обратного теста будет потрясающей; Слишком хорошо, чтобы быть правдой. Поскольку на самом деле не было никакой машины времени, у вас не было данных за все десять лет в 1990 году, и вы не обязательно выбрали правильный вариант. Это известно как бэк-тест в образце, потому что вы используете одни и те же данные для подбора и тестирования производительности. Следует избегать выборочного тестирования, так как оно даст чрезвычайно оптимистичные результаты ретроспективного тестирования и отдаст предпочтение более сложным правилам, которые лучше соответствуют данным, но не будут так хорошо работать в реальной торговле.
Есть лучшие альтернативы. Распространенным является разделение выборки на два исторических периода, как показано на рисунке 8. Вы берете все данные за первую половину, с 1990 по 1994 год, и подбираете наилучшую вариацию за этот период. Затем вы используете эту единственную вариацию, чтобы проверить свою производительность на втором периоде выборки, в данном случае это каждый год с 1995 по 2000 год.
Проблема в том, что вы тратите половину своих данных впустую, и в итоге вы можете оценить производительность всего за шесть лет. Вы также не учитываете какие-либо потенциальные изменения в структуре рынка во второй половине данных.

В пробном тестировании. Вы используете все данные для подгонки, а затем тестируете производительность с самого начала. На каждом этапе (строке) вы тестируете данные за разные годы, но используете данные за все годы, чтобы подогнать их.

Вы устанавливаете свои торговые правила в первой половине, а затем проверяете эффективность во второй половине. На каждом этапе (строке) вы тестируете разные годы, но всегда используете первую половину данных для подгонки. Тестирование первой половины данных не проводится. Вторая половина данных не используется для подгонки.
Я предпочитаю использовать расширяющееся окно, как показано на рисунке 9. Предположим, вы считаете, что вам нужен как минимум год, чтобы приспособиться к вашей системе. На следующем этапе вы аппроксимируете данные за первый год для 1990 г., а затем проверяете полученную вариацию для второго года, 1991 г. Затем на третьем этапе рисунка 9 вы проверяете 1992 г., используя вариацию, соответствующую данным за 1990 и 1990 гг. 1991. Чтобы проверить 1993 год, вы используете лучший вариант, подобранный с использованием 1990, 1991 и 1992 годов.
Это продолжается до 2000 года, когда вы используете данные за предыдущие десять лет, чтобы выбрать лучший вариант. Поскольку вы подходите только для использования прошлого, вы не жульничаете. Вы также используете столько прошлого, сколько можете «по закону», так что ничего не пропадает зря.
Единственная проблема с этим методом заключается в том, что если мир изменится, вы все равно будете использовать потенциально нерелевантные прошлые данные. Чтобы избежать этого, вы можете использовать данные за последние пять или десять лет, как только у вас будет достаточно истории для этого, и отбросить более ранние годы. Это скользящее окно. Как показано на рисунке 10, пятилетнее скользящее окно идентично расширяющемуся окну до 1996 года. В этот момент вы должны отбросить 1990 год и использовать только годы с 1991 по 1995 год, чтобы подобрать наилучший вариант.
Продолжительность окна должна быть достаточно короткой, чтобы улавливать изменения в структуре рынка, но достаточно длинной, чтобы давать статистически значимые результаты. Как вы увидите позже, для подбора моделей часто требуются данные за несколько десятилетий, что делает проблематичным использование скользящих окон.

Каждый год вам подходят данные только о прошлом. Каждая строка показывает примерку и испытания, проведенные за определенный год.

Каждый год вы используете прошлые данные для подгонки; сроком до пяти лет. Каждая строка показывает примерку и испытания, проведенные за определенный год.
Когда примерка идет плохо
Теперь давайте рассмотрим конкретный пример плохой подгонки. Я собираюсь выбрать наилучшую вариацию правила ранней торговли с убытком, которое я представил в первой главе запустить фьючерсный контракт на золото CME из возможного меню из 90 вариантов. Это может показаться чрезмерным, но это меньше вариантов, чем Джо тестировал в моем предыдущем анекдоте. Имейте в виду, что если бы у меня было правило торговли с пятью параметрами, и я позволял бы каждому параметру принимать одно из десяти дискретных значений, то я бы тестировал 10 000 вариантов!
Когда у меня есть данные хотя бы за один год, я нахожу самый эффективный вариант на основе коэффициента Шарпа (SR) за предыдущие 12 месяцев. Затем я проверяю производительность на следующий год, снова используя данные за последние 12 месяцев. Затем этот процесс повторяется ежегодно. Вы должны понимать, что это бэк-тест одного года с скользящим окном.
Какой из следующих вариантов, по вашему мнению, даст мне наилучшую производительность?
1. Выбор лучшего варианта: каждый год я использую лучший вариант предыдущего года.
2. Выбор случайного варианта: игнорируя примерку, каждый год я выбираю один вариант наугад. Поскольку случайность каждого выбора будет влиять на результаты, я запускаю этот эксперимент несколько раз и беру среднюю производительность.
3. Сохранение всех вариантов: снова игнорируя мою примерку, я сохраняю все 90 вариантов и использую равновзвешенное среднее их прогнозов.
Если вы большой поклонник подгонки, результаты вас разочаруют. Каждый год выбирая лучшее правило из предыдущего года, я получаю довольно плохой SR 0,07. Если я выберу второй вариант и просто выберу случайное правило ежегодно 1 января, то в среднем я получу Шарп 0,2. Наилучший вариант — полностью забыть о выборе вариантов правил торговли и запустить их все в равной пропорции. Это дает SR 0,33, что довольно хорошо для одного типа торгового правила, работающего на одном инструменте. Эти результаты могут быть случайностью, но я получаю аналогичные результаты на многих различных инструментах и торговых правилах.
Почему фитинг так плохо работает?
Во-первых, выбор только одного варианта для запуска за раз попахивает самоуверенностью. Как вы скоро увидите, у нас редко бывает достаточно доказательств того, что одно правило определенно лучше другого. Во-вторых, данных за один год совершенно недостаточно, чтобы решить, какое торговое правило лучше. Я усугубляю эту проблему, подгоняя историю одного инструмента — фьючерсов на золото. Наконец, как и Джо, я тестирую слишком много вариантов.
Опасности выбора правил
Проблема множественного тестирования — даже некоторые случайные правила будут выглядеть хорошо
Почему так опасно тестировать большое количество торговых правил и вариаций? Помимо приложенных усилий, очень вероятно, что вы случайно выберете плохое правило.
Чтобы понять, почему здесь эксперимент. Предположим, я пытаюсь достичь алхимии и найти выгодные правила там, где их нет. У меня есть пул из определенного количества возможных торговых правил, все из которых имеют истинную ожидаемую среднюю доходность, равную нулю, хотя в реальном сценарии я бы не знал этого заранее! Правила полностью произвольны, и их результаты генерируются из случайных данных.48
Для каждого теста я получаю данные о доходах за один год для каждого правила в моем пуле, как в приведенном выше примере с фьючерсами на золото, и выбираю все правила, чей коэффициент Шарпа (SR) в этом году выше заданного минимального уровня. Если ни одно правило не имеет SR выше порога, я не выберу ни одно. Все прошедшие тест правила будут сохранены (даже если их 50!).
Поскольку базовые данные являются случайными, мне нужно генерировать новые данные несколько раз, а затем повторять тест, чтобы получить значимые результаты. Затем я измеряю среднее количество принятых правил с учетом определенного минимального уровня и размера доступного пула. Как видно из таблицы 3, даже если я буду строгим и установлю очень высокий минимальный SR, равный 2,0, я все равно обнаружу пару плохих правил, если проверю их достаточное количество.
Таблица 3: Если вы протестируете достаточное количество правил, некоторые плохие правила всегда будут проскальзывать

В таблице показано среднее количество правил, принятых из пулов произвольных убыточных правил с учетом разных размеров пулов (строк), которые были проверены на предмет превышения их коэффициента Шарпа минимального порога (столбцы).
Практически тогда, какую отсечку SR я должен использовать? Поскольку ни одно из воображаемых правил не является действительно прибыльным, в идеале я бы не принял ни одно из них. Но в реальных ситуациях мы не можем установить слишком высокую планку, иначе даже хорошие правила будут отброшены; в конце концов, реалистичный SR для реального торгового правила, протестированного на одном инструменте, скорее всего, будет около 0,30. Давайте предположим, что меня бы устроил 5%-й шанс выбрать хотя бы одно правило, которое было бы действительно невыгодным. Кроме того, в реальном мире у меня обычно есть данные более чем за один год, поэтому давайте посмотрим, как дополнительная история повлияет на мои выводы.
В таблице 4 есть все результаты. Как вы могли догадаться, здесь очень важна длина серии возвратов. Больше истории означает меньше шансов на то, что правило нулевого SR получит полосу везения, поэтому я могу установить отсечку ниже. Однако даже с данными за 30 лет я не могу рисковать и тестировать больше, чем несколько правил, и даже в этом случае отсечка слишком высока, когда многие совершенно хорошие варианты будут иметь истинный коэффициент Шарпа всего 0,3.
Таблица 4: Имея больше истории, вы можете установить более низкий порог коэффициента Шарпа, чтобы избежать выбора плохого правила из большого пула.

В таблице показано отсечение коэффициента Шарпа, необходимое при тестировании пула (строк) торговых правил заданного размера с определенным количеством исторических данных (столбцов) за несколько лет, чтобы гарантировать, что у вас есть только 5% шанс выбрать один или несколько действительно плохих. правила.
Сколько истории вам нужно, чтобы решить, хорошо ли правило?
Вы уже видели, что распространенной ошибкой является использование недостаточного количества исторических данных для выбора или калибровки правила. Сколько данных вам нужно? Сколько времени вам нужно, чтобы решить, имеет ли правило положительный коэффициент Шарпа (SR) и стоит ли его сохранять?
Чтобы ответить на этот вопрос, я сгенерировал больше случайных ежедневных доходностей по торговому правилу, на этот раз предполагая лежащий в основе положительный коэффициент Шарпа, о котором я опять-таки не знал заранее. По мере того, как создается больше торговой истории, я могу оценивать SR каждый год и среднее значение на данный момент. В то же время я смотрю на распределение этих годовых коэффициентов Шарпа. Это позволяет мне почувствовать, насколько статистически значим мой измеренный средний SR; мне просто повезло или это действительно хорошая система?
Классическим тестом на статистическую значимость является Т-тест. В этом примере он определяет, будет ли предполагаемый коэффициент Шарпа положительным, учитывая оценку его среднего значения и стандартного отклонения. Чем дальше среднее значение от нуля, измеренное в единицах сигмы, тем более вероятно, что неизвестный SR действительно положителен.
Этот тест обычно используется с порогом в два сигма. Если оценочное среднее значение SR превышает ноль более чем на два стандартных отклонения, вероятность того, что это произойдет, составляет всего 2,5%, если истинное значение SR на самом деле было отрицательным.
На рис. 11 показана эволюция среднего измеренного SR для произвольного торгового правила и вокруг него верхний и нижний «доверительные интервалы». Каждый доверительный интервал отстоит от среднего на две сигмы, поэтому, когда нижний интервал поднимается выше нуля, я знаю, что вероятность того, что торговая система на самом деле является замаскированным убыточным правилом, составляет всего 2,5%.

На рисунке видно, как среднее значение SR быстро приближается к истинному значению 0,5 SR. Но требуется более десяти лет, прежде чем нижний доверительный интервал станет выше нуля и Т-тест, наконец, будет пройден. Только тогда мы можем быть достаточно уверены, что это не убыточная система.
Если я повторю это для правила с истинным SR, равным 1,0, я получу цифру 12. Время прохождения теста здесь составляет всего несколько лет. В среднем стратегиям с более высоким SR всегда требуется меньше времени, чтобы доказать свою прибыльность.

Найдем среднее время прохождения теста для заданного истинного коэффициента Шарпа. После проведения необходимых экспериментов я получаю таблицу 5. Если не считать очень хороших правил, вам потребуется не менее десяти лет, а обычно и больше, чтобы убедиться, что стратегия приносит прибыль.50Среднее правило торговли для одного инструмента имеет реалистичный SR около 0,3; так что вам нужно почти 40 лет истории!
Таблица 5. Требуются десятилетия данных, чтобы понять, могут ли большинство стратегий быть прибыльными

Сколько истории вам нужно, чтобы решить, лучше ли одно правило, чем другое?
А что, если у вас есть альтернативные правила и вы хотите найти лучшее? Предположим, у меня снова есть два случайных правила, одно с истинным коэффициентом Шарпа (SR) 0,30, а другое с SR 0,80. Сначала я предполагаю, что это совершенно разные правила без корреляции между их доходностью. На этот раз, чтобы выполнить T-тест, мне нужно оценить разницу в двух коэффициентах Шарпа и измерить среднее значение и стандартное отклонение этой разницы.

На рисунке 13 представлена средняя разница в SR и соответствующие доверительные интервалы для этой разницы. Как только нижний доверительный интервал становится выше нуля, мы можем быть достаточно уверены, что одно правило лучше, так как вероятность того, что это произойдет случайно, составляет всего 2,5%. Из рисунка 13 видно, что время до уверенности составляет около 30 лет!
В таблице 6 показано среднее время, необходимое для прохождения Т-теста при сравнении правила SR 0,30 с правилом, которое действительно имеет более высокий SR. Эти результаты варьируются в зависимости от разницы в SR и корреляции правил. Более тесно связанные правила будет легче и быстрее различать для данной разницы SR. На практике правила различения требуют значительных исторических данных, за исключением редких случаев вариаций, которые одновременно сильно коррелируют, а также действуют очень по-разному.
Таблица 6. Можете ли вы выделить торговые правила на основе данных за несколько лет? Только если они сильно коррелированы и один значительно превосходит другой.

Должны ли вы подгонять одно торговое правило для всех инструментов?
В 2010 году большой систематический хедж-фонд, в котором я работал, был реорганизован в классы активов. Моя команда управляла портфелем с фиксированным доходом, другая управляла акциями и так далее. Первоначально торговые стратегии, которые мы использовали, были довольно похожими. Однако со временем, по мере того, как мы проводили более конкретные исследования рынка, мы все пришли к выводу, что нам нужно по-другому настраивать наши системы.
Во многих случаях мы пошли дальше и также начали подгонять разные части нашего портфолио по отдельности. Например, мы могли бы оснастить фьючерсы на облигации развивающихся и развитых рынков различными вариантами торговых правил. Подгонка по отдельности является обычным явлением, и многие системные трейдеры доводят это до крайности и подгоняют каждый инструмент отдельно. Почти все пакеты для тестирования на исторических данных, такие как тот, который использовал Джо, по умолчанию подбирают торговые правила для одного инструмента за раз. Таким образом, у вас будет один вариант правила для британского фунта/доллара, другой для евро/доллара и так далее.
Это классический пример нарративной ошибки, когнитивного искажения, с которым мы уже сталкивались. Для нашего человеческого разума имеет смысл иметь разные истории и, следовательно, разные торговые правила для разных инструментов.
Но правильно ли это? Это зависит от того, существенно ли отличается поведение каждой вариации на разных инструментах. Если это не так, то вы, скорее всего, будете перенастраивать, индивидуально адаптируя каждое правило для каждого инструмента. На практике обычно нет статистической разницы между различными инструментами, особенно если они тесно связаны, например, группа фьючерсов на фондовые индексы.
На самом деле объединение ваших данных и сопоставление нескольких инструментов вместе — это отличный способ получить больше истории данных, что дает вам больше возможностей различать прибыльные и убыточные торговые правила.
В качестве примера у меня есть два торговых правила в моем собственном портфеле, которые для типичного отдельного инструмента имеют коэффициенты Шарпа (SR) в среднем 0,05 и 0,30 соответственно. Несмотря на то, что они совершенно не коррелированы, таблица 6 показывает, что мне понадобилось бы 45 лет, чтобы различить их; почти невозможно, когда даже самые ранние финансовые фьючерсы начали торговаться только в 1972 году. Однако те же самые правила применяются к портфелю инструментов, где SR составляет 0,13 и 1,13.54Таблица показывает, что мне понадобились данные всего за 11 лет, чтобы отличить эти два коэффициента Шарпа друг от друга.
Чтобы упростить объединение, вы должны разработать общие правила торговли, которые могут работать с любым инструментом. Я приведу несколько примеров общих правил в седьмой главе, «Прогнозы».