Автор|Лоренцо Ампил Компилировать|ВКонтакте Источник | К науке о данных
С тех пор, как я начал изучать инвестирование, я познакомился с различными методами анализа акций - техническим анализом и фундаментальным анализом. Я даже прочитал много книг и статей об этих методах.
В двух словах, технический анализ предполагает, что вы можете определить подходящее время для покупки или продажи акции на основе ее исторической цены и движения объема. Фундаментальный анализ, с другой стороны, утверждает, что вы можете измерить реальную внутреннюю стоимость акции на основе фундаментальной информации в финансовой отчетности компании.
Оба типа анализа имеют для меня смысл, и я надеюсь использовать их для информирования своих сделок, однако меня всегда расстраивает один главный момент:
Существует множество возможных стратегий, но нет систематического способа выбрать одну из них. На самом деле, большинство транзакций по-прежнему в конечном счете являются решениями, основанными на интуиции, а не на основе данных.
Итак, как мы оцениваем эти стратегии? Мы можем сделать это, сравнив ожидаемую рентабельность инвестиций (ROI), полученную с помощью каждого метода. Лучший способ сделать это — использовать метод, называемый ретроспективным тестированием, для оценки стратегии, то есть для оценки ее эффективности путем моделирования ситуаций, в которых она использовалась в прошлом.
В настоящее время существует множество фреймворков для тестирования на исторических данных, но для большинства из них требуются продвинутые знания в области кодирования. Простая реализация helloworld обычно требует до 30 строк кода.
Чтобы восполнить этот пробел, я решил создать fastquant с целью как можно проще учесть бэктестинг. Используя fastquant, мы можем протестировать торговую стратегию всего за 3 строки кода!
В оставшейся части этой статьи я расскажу вам, как протестировать стратегию пересечения простых скользящих средних (SMAC) на исторических данных от Jollibee Food Corp. (JFC).
Давайте начнем!
Тестирование нашей первой стратегии
Установить фастквант
Это так же просто, как установить с помощью pip!
# 在你的终端上运行这个
pip install fastquant
# 或者,你可以这样从jupyter运行这个
!pip install fastquant
Получить биржевые данные
Импортируйте функцию get_stock_data из fastquant, чтобы получить данные о запасах Jollibee Food Corp. (JFC) с 1 января 2018 года по 1 января 2019 года. Обратите внимание, что у нас есть столбец для даты (dt) и столбец для цены закрытия (close).
from fastquant import get_stock_data
jfc = get_stock_data("JFC", "2018-01-01", "2019-01-01")
print(df.head())
# dt close
# 2019-01-01 293.0
# 2019-01-02 292.0
# 2019-01-03 309.0
# 2019-01-06 323.0
# 2019-01-07 321.0
Протестируйте свою торговую стратегию на истории
Протестируйте на истории стратегию пересечения простых скользящих средних (SMAC), используя функцию тестирования на исторических данных fastquant и исторические данные о запасах от Jollibee Food Corp. (JFC).
В стратегии SMAC fast_period относится к периоду, используемому для быстрых скользящих средних, а slow_period относится к периоду, используемому для медленных скользящих средних.
Когда быстрая скользящая средняя пересекает медленную скользящую среднюю снизу, это считается сигналом на покупку, а если она пересекает сверху вниз, это считается сигналом на продажу.
Во-первых, давайте инициализируем быстрый и медленный циклы на 15 и 40 соответственно.
Вы должны увидеть окончательную стоимость портфеля ниже в нижней части журнала. Это значение можно интерпретировать как стоимость вашего портфеля в конце периода ретроспективного тестирования (здесь 01.01.2019).
Вы получаете разницу между «Окончательной стоимостью портфеля» и «Начальной стоимостью портфеля», которая будет ожидаемой доходностью на основе бэктеста (в данном случае — PHP 411,83).
from fastquant import backtest
backtest('smac', jfc, fast_period=15, slow_period=40)
# 起始价值: 100000.00
# 最终价值: 100411.83
Собираем весь код вместе — тестирование на истории с 3 строками Python
В приведенном ниже коде показано, как выполнить все вышеперечисленные шаги в 3 строки Python:
from fastquant import backtest, get_stock_data
jfc = get_pse_data("JFC", "2018-01-01", "2019-01-01")
backtest('smac', jfc, fast_period=15, slow_period=40)
# 起始价值: 100000.00
# 最终价值: 100411.83
Улучшить политику SMAC
Добавьте быстрые и медленные циклы
Это покажет, как небольшие изменения могут быстро превратить успешную стратегию в неудачную. После увеличения до 30 и 50 в течение периода быстрого роста и периода медленного роста соответственно, окончательная стоимость нашего портфеля упала с 100412 PHP до 83947 PHP (уменьшение на 16465 PHP).
backtest('smac', jfc, fast_period=30, slow_period=50)
# 起始价值: 100000.00
# 最终价值: 83946.83
Сокращение медленных циклов при сохранении быстрых циклов без изменений
В этом случае эффективность нашей стратегии действительно улучшается! Окончательная стоимость нашего портфеля увеличилась с 100412 PHP до 102273 PHP (увеличение на 1861 PHP), после чего мы сократили медленный цикл до 35 и сохранили быстрый цикл на уровне 15.
backtest('smac', jfc, fast_period=15, slow_period=35)
# 起始价值: 100000.00
# 最终价值: 102272.90
В следующей таблице сравнивается эффективность трех наших стратегий SMAC:
Преодолеть ограничения тестирования
Значит ли это, что мы должны торговать по лучшей стратегии SMAC? Может быть, еще нет.
У бэктестинга довольно много ограничений, и для преодоления этих ограничений часто требуются дополнительные шаги, чтобы повысить нашу уверенность в надежности результатов бэктестинга и рекомендаций.
Вот два ограничения бэктестинга и способы их преодоления:
переоснащение
Это относится к ситуации, когда полученные вами «наилучшие параметры» слишком хорошо соответствуют модели предыдущего периода времени. Это означает, что ожидаемая доходность вашей стратегии не преобразуется в фактическую прибыль, когда вы решите использовать стратегию.
Лучший способ предотвратить это — протестировать политику на образцах, что аналогично использованию «набора тестов» в машинном обучении. Цель этого заключается в том, что вам необходимо сохранить тестовые данные, когда вы хотите оценить прибыльность своей торговой стратегии. Таким образом, трудно подобрать параметры, потому что вы не оптимизируете свою стратегию на основе этого набора данных.
предусмотрительность
Это предубеждение возникает из-за использования информации во время тестирования на исторических данных, которая не была доступна во время тестирования. Например, вы можете проверить эффективность стратегии на JFC, предполагая, что вы знаете ее финансовые показатели (например, чистую прибыль) за месяц до того, как JFC действительно станет публичной. Это придаст вам ненадежную уверенность, и ваша стратегия может стоить вам больших денег.
В этом случае один из лучших способов избежать этой предвзятости — тщательно проверить предположения, сделанные при тестировании стратегии на исторических данных. Стоит критически оценить свою стратегию и информацию, необходимую для ее правильного выполнения.
Это лишь два из многих ограничений, связанных с тестированием на исторических данных. Я планирую написать статью, чтобы обсудить их более подробно в будущем, так что следите за обновлениями!
После устранения вышеуказанных ограничений у нас должно быть больше уверенности в выбранной нами стратегии; однако помните, что, хотя мы можем быть более уверены в нашей стратегии, ее эффективность в невидимом реальном мире никогда не будет на 100% уверенной.
Я предлагаю, чтобы после того, как вы приняли стратегию в реальном мире, начать с относительно небольшого количества капитала и увеличивать его только тогда, когда стратегия демонстрирует более стабильный успех; в противном случае будьте готовы доказать это в реальном мире. Убейте его, если он не работает хорошо.
Другие стратегии для fastquant
Помните, что fastquant имеет такое же количество стратегий, как и в существующей библиотеке стратегий. На данный момент есть 8 стратегий на выбор, включая простое пересечение скользящих средних (SMAC), индекс относительной силы (RSI) и даже одну, основанную на анализе настроений!
Как я упоминал во введении к этой статье, существует множество различных стратегий, которые можно применять в трейдинге. Спасибо за чтение этого
Оригинальная ссылка:к data science.com/back test - йо...
Добро пожаловать на сайт блога Panchuang AI:panchuang.net/
sklearn машинное обучение китайские официальные документы:sklearn123.com/
Добро пожаловать на станцию сводки ресурсов блога Panchuang:docs.panchuang.net/