Я создал торговый алгоритм с машинным обучением, используя Python и Quantopian, чтобы побеждать на фондовом рынке более 10 лет.

Вступление

Вообще говоря, я обычно трачу большую часть своего времени на размышления о двух вещах: технологии и инвестировании. В частности, я часто спрашиваю себя, что можно сделать с помощью программного обеспечения (или иногда аппаратного) и что полезного, во что мне следует инвестировать. Алгоритмический трейдинг - прекрасная интеграция этих двух школ, и я потратил на это кое-что. время разобраться в этой области. Это интригующая область, и я узнал кое-что интересное, чем решил поделиться.

Вы можете прочитать исходную статью в моем блоге.

Австрийский Quant

Austrian Quant назван в честь Австрийской школы экономики, которая вдохновила меня на то, как я структурировал портфолио. Я разработал торговую стратегию, состоящую из 3 различных инвестиционных фондов, чтобы лучше понять, что такое инвестиции, машинное обучение и программирование, а также то, как все это сочетается в мире финансов и технологий.

В этой стратегии используются 3 различных фонда: Фонд постоянного портфеля, Спекулятивный фонд и Фундаментальный фонд. 70% от общего портфеля было инвестировано в Постоянный портфель, при этом равные 15% удельного веса были отнесены к Спекулятивному и Фундаментальному фондам. Фундаментальный фонд все еще находится в стадии разработки, так что я могу добавить продолжение к этому эссе с результатами деятельности фонда позже. Тем не менее, остальная часть этой статьи основана на весе портфеля 85% в Постоянном фонде портфеля и 15% в спекулятивном фонде.

Я также выложил код этого проекта на моем Github.

Фонд постоянного портфеля

Постоянное портфолио - это идея Гарри Брауна, основанная на австрийской школе экономики, прочная экономическая основа и очень полезный способ взглянуть на жизнь в целом. Постоянный портфель не предназначен для инвесторов, стремящихся превзойти рынок, о чем свидетельствуют большие запасы наличных денег и золота; он предназначен для людей с долгосрочным инвестиционным горизонтом, который хорошо описывает мой стиль инвестирования и, таким образом, является моим крупнейшим вложением средств.

Источником вдохновения для создания фонда послужили Постоянный квантопный блокнот портфеля на Quantopian и книга Австрийская школа инвесторов Рахима Регезды и др. al. это еще одна книга, которую я настоятельно рекомендую. Портфолио также частично основано на Всепогодных принципах из Bridgewater Рэя Далио, которые послужили полезной основой для управления моей подверженностью рискам при достижении высоких доходов.

В этом фонде 30% портфеля было вложено в акции, облигации и золото, а 10% - в наличные (или, более конкретно, 1–3-летние казначейские векселя). В книге «Распределение» в книге Австрийской школы инвесторов предлагалось равное 25% весов между каждым классом активов, но, поскольку я молод и у меня мало обязанностей, я решил, что могу быть немного более агрессивным и рискнуть. Таким образом, я уменьшил распределение денежных средств и увеличил распределение других активов.

Портфель перебалансируется с использованием алгоритма оптимизации в стиле Марковица, чтобы найти наиболее эффективное граничное соотношение между риском (стандартным отклонением) и доходностью. Оптимизация Марковица - интересный алгоритм, поскольку он основан на нормально распределенной доходности, однако доходность фондового рынка зависит от к степенному закону и толстым хвостам. Поэтому возникает вопрос, насколько точны на самом деле алгоритмы, такие как оптимизация Марковица; возможно, он просто предназначен для использования в качестве эвристики для упрощения очень сложных проблем.

Был проведен довольно обширный бэктест, отслеживающий эффективность фонда с 1 января 2006 г. по 2 июня 2017 г.

Обновление: это бэктест, проведенный до того, как Quantopian начала вычислять данные, связанные с рисками.

Цель постоянного портфеля - не превзойти индекс, а обеспечить стабильную доходность в долгосрочной перспективе. Имея это в виду, я был очень доволен результатами тестирования на истории. Хотя фонд отставал от эталонного показателя SPY примерно на 500 базисных пунктов, он был значительно менее рискованным. В частности, он демонстрировал рост на бычьих рынках в 2006–2007 и 2010–2017 годах, избегая потерь на медвежьем рынке 2008–2009 годов.

Одна из действительно проницательных вещей, которые я узнал при исследовании алгоритмической торговли, заключается в том, что хорошие стратегии, как правило, очень эфемерны. Инвесторы, как правило, очень проницательны, и поэтому, если класс активов имеет тенденцию работать хорошо, стратегия очень быстро становится арбитражной, поскольку другие инвесторы стекаются к этой торговой стратегии. Я не ожидаю, что постоянный портфель привлечет слишком много имитаторов из-за осторожного подхода, который он использует даже на бычьих рынках; инвесторы, похоже, игнорируют предлагаемую им значительную защиту от убытков. Удивительно, но этот фонд стабильно опережал индекс, при этом лидерство не отводилось арбитражем.

В настоящее время я тестирую это в реальной торговой среде, и мне кажется, что необходимо провести более длительный период тестирования, прежде чем можно будет сделать какие-либо убедительные наблюдения. Однако, основываясь на прошлых данных, результаты кажутся очень многообещающими, и это торговая стратегия, которая заставила меня серьезно задуматься о том, чтобы добавить немного кожи в игру и протестировать на реальных деньгах.

Фонд спекуляции

Как упоминалось ранее, у меня более высокая терпимость к риску, поэтому я решил, что могу посвятить небольшую часть своего портфеля чистым спекуляциям. Азартные игры строго нарушают мои инвестиционные принципы, однако знания, которые я получил, и количество удовольствия, которое я получил при создании этого портфеля, являются моим оправданием лицемерия. Это напоминает мне время, когда Джек Богл объяснял, почему он инвестировал в активную инвестиционную компанию своего сына, проповедуя евангелие индексного инвестирования; «Если это непоследовательно, что ж, жизнь не всегда последовательна».

Спекулятивный фонд вдохновлен Учебником по квантопическому программированию Python, который я настоятельно рекомендую всем, кто изучает Python, а Харрисон Кинли - очень хороший учитель.

Спекулятивный фонд использует относительно простой алгоритм классификации векторов поддержки машинного обучения. Алгоритм обучается с использованием исторических данных о ценах на акции, глядя на движение цены акции за последние 10 дней и узнавая, выросла или снизилась цена акции на 11-й день. Затем алгоритм может предсказать, вырастет ли цена акции, в зависимости от того, как цена улучшилась за последние 10 дней.

Классификатор машины опорных векторов (SVM) использовался вместо K-ближайших соседей, поскольку требуемые в Quantopian интенсивные вычислительные процессы сделали скорость высокоприоритетной, и этого лучше всего можно было достичь с помощью SVM. Сводка кода приведена ниже, строки были удалены для экономии места, но полный код можно найти в этом файле:

for _ in range(context.feature_window):
                        price = price_list[bar - (context.feature_window - xx)] # 10-(10-i) i++, get the trailing 10 day prices
                        pricing_list.append(price)
                        xx += 1
                    # if tomorrow's price is more than today's price
                    # label the feature set (% change in last 10 days)
                    # a 1 (strong outlook, buy) else -1 (weak outlook, sell)
                    if end_price > begin_price:
                        label = 1
                    else:
                        label = -1
                    bar += 1
                    X.append(features)
                    y.append(label)
            clf1 = RandomForestClassifier()
            # ...
            clf4 = LogisticRegression()
            
            clf1.fit(X, y)
            # ...
            clf4.fit(X, y)

            p1 = clf1.predict(current_features)[0]
	# ...
            p4 = clf4.predict(current_features)[0]
            # if all the classifiers agree on the same prediction we will either buy or sell the stock
            # if there is no consensus, we do nothing
            if Counter([p1, p2, p3, p4]).most_common(1)[0][1] >= 4:
                p = Counter([p1, p2, p3, p4]).most_common(1)[0][0]
            else:
                p = 0
            speculations_allocation = 0.2
            # Based on the voted prediction and the momentum of the moving averages,
            # We will either buy or short the stock (or do nothing).
            if p == 1 and ma1 > ma2:
                order_target_percent(stock, 0.11 * speculations_allocation)
            elif p == -1 and ma1 < ma2:
                order_target_percent(stock, -0.11 * speculations_allocation)

Несмотря на сложные алгоритмы, результаты были очень плохими:

Это меня разочаровало, потому что якобы сложный алгоритм, который я использовал, не мог превзойти даже простую стратегию импульса. Фактически, когда фонд спекуляции был объединен со стратегией импульса, это уменьшило доходность более чем на 5000 базисных пунктов (50%).

Momentum Fund

Спекуляция + Momentum Fund

Я также ожидал, что волатильность и максимальная просадка будут еще выше в чистом спекулятивном фонде, потому что я был очень очарован работой Нассима Талеба и очень беспокоился о том, что эффект черного лебедя уничтожит мой портфель. Марк Шпицнагель написал очень хорошую статью по этой теме, которая помогла мне понять недооцененное влияние событий, связанных с остаточным риском, на финансовых рынках.

Короче говоря, спекулируя на краткосрочных изменениях цен, я получал ~ 1-2% краткосрочной прибыли, но подвергал себя ситуациям, когда я мог быстро потерять ›50%. (Чарли Мангер называет это сбором грошей перед катком.) Однако способность сокращать и хеджировать мои позиции оказалась очень полезной в марте 2009 года. Когда рынок терпел самые большие потери, я получал самые большие прибыли. Хотя мой коэффициент кредитного плеча никогда не превышал ~ 4%, это еще одна стратегия, которую необходимо будет должным образом протестировать в реальной среде из-за расходов на процентную ставку и премий при коротких продажах, которые могут оказать существенное влияние на доходность. Короче говоря, я многому научился, и мне очень понравилось использовать машинное обучение на практическом примере торговли, но не пытайтесь это делать дома.

Фундаментальный фонд [Работа в процессе]

Идея этого фонда заключалась в том, чтобы посмотреть на фундаментальные показатели компании, чтобы увидеть, какие финансовые показатели наиболее предсказывают рост курса акций. Обучите алгоритм машинного обучения, чтобы предсказать, какие фундаментальные особенности компании вызовут веские аргументы в пользу покупки, и инвестируйте в эти ценные бумаги. Интересно, что у меня в командной строке есть алгоритм для работы в среде Python, но я все еще пытаюсь заставить программу работать в Quantopian, чтобы я мог провести более тщательное тестирование на исторических данных.

Фундаментальный фонд

Хотя результаты моих предварительных тестов были многообещающими, я пока не слишком взволнован, поскольку отсутствие тщательного тестирования в надлежащей среде тестирования на исторических данных означает, что трудно оценить, насколько хорошо мой портфель будет реально работать в качестве реальной торговой стратегии. Однако теория и математика, лежащие в основе алгоритма, кажутся правильными, что является хорошим знаком.

Собираем все вместе

Увидев, насколько хорошо работают Постоянный портфель и Импульсные фонды по сравнению с ужасными показателями Спекулятивного фонда, объединение этих фондов кажется безумным. Но опять же, цель заключалась не в максимизации прибыли, а в том, чтобы узнать больше об инвестировании и программировании. Было интересно посмотреть, как портфель работает по другим показателям.

Я решил сосредоточиться на соотношении Сортино, а не на более традиционном коэффициенте Шарпа, поскольку коэффициент Шарпа штрафует как повышательную, так и понижательную волатильность, в то время как коэффициент Сортино штрафует только понижательную волатильность. Однако практическая разница между ними не ясна, потому что и коэффициент Шарпа, и коэффициент Сортино имеют одинаковую порядковость. [ref] Если было создано два списка, один с коэффициентом Шарпа в порядке убывания, а другой - с коэффициентом Сортино в порядке убывания (см. таблицу); оба списка будут иметь одинаковый порядок. [/ ref]

Строго говоря, спекулятивный и моментальный фонд имел наибольшую совокупную доходность, так что это кажется лучшей стратегией. Но я определил свои цели как долгосрочную торговую стратегию с относительно небольшим риском, и фонд «Спекуляция + моментум» нарушил этот принцип с большой максимальной просадкой -48,90% и коэффициентом сортировки 0,75.

Выбор между Австрийским квантовым фондом и постоянным портфелем - это пример того, почему люди считают инвестирование скорее искусством, чем наукой. В то время как постоянный портфель превосходил австрийский Quant примерно на 13 000 базисных пунктов, австрийский Quant предлагал гораздо меньшую волатильность и лучшую защиту от убытков. Меня не совсем устраивают краткосрочные краткосрочные сделки, используемые в Austrian Quant Fund из-за асимметричных выплат; в то время как Permanent Portfolio Fund предлагает упрощенную стратегию «покупай, держи и спи». Таким образом, я склонен выбрать постоянный портфельный фонд, хотя я думаю, что мне следует подождать и посмотреть данные о результатах этих двух фондов в реальной торговой среде, прежде чем делать какие-либо выводы.

«Инвестиции в знания приносят максимальную прибыль.»

Бенджамин Франклин

Заключение

Я многому научился, создавая этот проект, и мне было очень весело, что в конечном итоге является самым важным. Попутно, еще одна интересная вещь, которую я узнал во время исследования этого проекта, - это тенденция к тому, что финансовые области становятся излишне теоретическими и основанными на уравнениях. Это нормально для естественных наук, таких как биология или физика, но финансы, как правило, являются социальной наукой, которая в большей степени подвержена влиянию событий черного лебедя и рисков, связанных с хвостом.

Я напоминаю всем соблюдать осторожность и не путать точность с точностью. Наконец, я заканчиваю мудрым Бенджамином Франклином, который напоминает нам, что «инвестиции в знания приносят максимальную прибыль».

Вы можете прочитать исходную статью в моем блоге.

Примечание редакторам Data Science. Хотя мы разрешаем независимым авторам публиковать статьи в соответствии с нашими правилами и рекомендациями, мы не поддерживаем вклад каждого автора. Не следует полагаться на работы автора без консультации с профессионалами. См. Подробности в наших Условиях для читателей.