Как я писал в своей предыдущей статье, Алгоритмическая торговля: алгоритмы, чтобы превзойти рынок Если вы хотите писать код, чтобы купить и продавать акции, опции, форекс или еще много чего, очень важно рассмотреть вопрос о том, что ваш код.
Что такое бэк -тест?
Блюд, тестирование торгового алгоритма означает запуск алгоритма против исторических данных и изучить его эффективность.
От Investopedia :
Например, я собираюсь поделиться некоторыми строками кода о том, как загрузить минутные данные с 2016 года.
Далее мы сделаем простой настраиваемый бэк -тестовый сценарий.
Откройте учетную запись Alpaca
Во -первых, нам понадобится бумажный аккаунт альпака. Отправляйтесь в Альпака и откройте бесплатную учетную запись.
Затем войдите в свою учетную запись Alpaca и найдите или генерируйте свои клавиши API.
Мне нравится создавать файл, чтобы сохранить эту информацию.
Поэтому создайте файл alpaca_conf_paper.py, чтобы сохранить наши клавиши API API Alpaca для бумажной учетной записи.
Установка зависимости от питона
Давайте установим Python SDK и другие зависимости Alpaca:
Alpaca-Trade-API-это Alpaca Python SDK
TQDM – очень хорошая библиотека, которая покажет планку прогресса.
Панды Отличная библиотека, обеспечивающая высокопроизводительные, простые в использовании структуры данных, и инструменты анализа данных для Python “
В вашей консоли беги:
pip3 install alpaca-trade-api tqdm pandas
Загрузка данных
Скачать данные очень легко с Alpaca.
Допустим, мы хотим данные в течение дня, сгруппированные на минуты. Мы можем сделать это с очень простым сценарием. Я пытался сделать это очень явным.
Создайте файл с именем download_data.py и вставьте этот код:
Если вы запустите код как есть, запуск Python3 Download_data.py будет загружать Minite Data OHLC для AAPL для всех 252 торговых дней 2016 года на ваш ../historical-market-data/
каталог, в CSV
формат.
Похоже, в моей консоли WSL (Linux):
$ ls ../historical-market-data/*AAPL*2016* AAPL-2016-01-04.csv AAPL-2016-02-12.csv AAPL-2016-03-24.csv ... $ ls ../historical-market-data/*AAPL*2016* | wc 252 252 5040
Наш первый сценарий бэк -тестирования
Чтобы подчеркнуть алгоритм, нам сначала нужно иметь алгоритм. Поскольку у нас еще нет того, мы просто собираемся принять стратегию «покупать и удерживать».
Давайте начнем с того, что увидим, насколько хорошо стратегия Buy & Hold искала AAPL в 2016 году: покупка первый день года и продажа в последний день.
Чтобы проверить стратегию «покупать и удерживать», нам необходимо рассчитать соотношение последней цены года (когда мы продали бы) и первую цену года (когда мы купили).
То есть,
profit_pc = price_last_day)/price_first_day
Ниже приведен сценарий, который делает именно это.
Если вы хотите запустить его, создайте файл с именем Backtest_buy_and_hold.py
С этим контентом:
Если мы запустим сценарий, мы получим:
$ python3 backtest-buy-and-hold.py AAPL's 2016's Buy-n-Hold strategy return profit is: 1.099
Это означает, что в течение 2016 года AAPL выросла на 9,9%. Это проверяет :
AAPL вырос на 9,9% в течение 2016 года
Так здорово! Мы сделали наш первый сценарий бэк -тестирования для тривиальной стратегии.
Более причудливые стратегии
Как упоминалось в моей предыдущей статье, есть много стратегий:
- Покупать и держать
- Значит возвращение
- Скальпинг
- Исчезающий
- Ежедневные опорные
- Импульс
- Многие, многие другие
В Моя следующая статья Я выложу какой -нибудь код, который использует все, что мы создали здесь, и расширим скрипт бэкеста, чтобы проверить простой алгоритм скальпинга.
Увидимся в следующий раз!
Оригинал: “https://dev.to/michrodz/algo-trading-backtesting-your-algorithm-5ad8”