Перевод. Оригинал: Python For Trading: An Introduction
Python, язык программирования, который был разработан в конце 1980-х годов Гвидо Ван Россумом, стал необыкновенно популярным, особенно в последние годы, благодаря простоте использования, обширным библиотекам и элегантному синтаксису.
Как язык программирования получил такое название, как «Python»? Ну, Гвидо, создателю Python, понадобилось короткое, уникальное и немного загадочное имя, и поэтому он выбрал Python во время просмотра комедийного сериала под названием «Летающий цирк Монти Пайтона».
Если вам интересно узнать историю Python, а также то, что такое Python и его приложения, вы всегда можете обратиться к первой главе руководства по Python, которая послужит вашим руководством в начале вашего пути в Python.
Мы движемся в сторону автоматизации, и поэтому всегда есть спрос на людей со знанием языков программирования. Когда дело доходит до мира алгоритмического трейдинга, необходимо изучать языки программирования, чтобы сделать ваши торговые алгоритмы умнее и быстрее. Верно, что вы можете передать кодирование своей стратегии на аутсорсинг компетентному программисту, но это станет обременительно позже, когда вам придется настраивать свою стратегию в соответствии с меняющимся рыночным сценарием.
Почему Python?
Прежде чем мы поймем основные концепции Python и его применения в финансах, а также в трейдинге на Python, давайте разберемся, почему мы должны изучать Python.
Знание популярного языка программирования - это необходимое условие, чтобы стать профессиональным алгоритмическим трейдером. В связи с быстрым развитием технологий программистам сложно выучить все языки программирования. Один из наиболее частых вопросов, которые мы получаем в QuantInsti, - «какой язык программирования мне следует изучить для алгоритмической торговли?» Ответ на этот вопрос заключается в том, что нет «лучшего» языка для алгоритмической торговли. Перед выбором языка программирования необходимо учитывать множество важных концепций: стоимость, производительность, отказоустойчивость, модульность и различные другие параметры торговой стратегии.
У каждого языка программирования есть свои плюсы и минусы, и баланс между плюсами и минусами, основанный на требованиях торговой системы, будет влиять на выбор языка программирования. У каждой организации свой язык программирования в зависимости от бизнеса и культуры.
● Какую торговую систему вы будете использовать?
● Планируете ли вы разработать торговую систему, основанную на исполнении?
● Вам нужен высокопроизводительный бэктестер?
Основываясь на ответах на все эти вопросы, можно решить, какой язык программирования лучше всего подходит для алгоритмической торговли. Однако, чтобы ответить на вышеуказанные вопросы, давайте исследуем различные языки программирования, используемые для алгоритмической торговли, с кратким пониманием плюсов и минусов каждого из них.
Квантовым трейдерам требуется скриптовый язык для создания прототипа кода. В этом отношении Python имеет огромное значение в общем процессе трейдинга, поскольку он находит применение в прототипировании количественных моделей, особенно в группах количественной торговли в банках и хедж-фондах. Большинство количественных трейдеров предпочитают торговлю на Python, поскольку это помогает им создавать собственные коннекторы данных, механизмы исполнения, бэктестинг, управление рисками и ордерами, анализировать и оптимизировать модули тестирования.
Разработчики алгоритмических торговых систем часто не понимают, выбрать ли технологию с открытым исходным кодом или коммерческую/проприетарную технологию. Прежде чем принять решение об этом, важно рассмотреть активность сообщества, связанного с конкретным языком программирования, простоту обслуживания, простоту установки, документацию по языку и затраты на обслуживание. Трейдинг на Python стал предпочтительным выбором в последнее время, поскольку Python является ПО с открытым исходным кодом, и все пакеты бесплатны для коммерческого использования.
Трейдинг на Python приобрел популярность в сообществе квантов, так как он позволяет легко создавать сложные статистические модели благодаря доступности достаточного количества научных библиотек, таких как Pandas, NumPy, PyAlgoTrade, Pybacktest и других. Первые обновления торговых библиотек Python - регулярное явление в сообществе разработчиков.
Фактически, согласно результатам опроса разработчиков за 2019 год на stackOverflow, Python является самым быстрорастущим языком программирования.
Также было обнаружено, что среди языков, которые люди были наиболее заинтересованы изучать, Python был наиболее востребованным языком программирования.
Преимущества и недостатки Python в алгоритмической торговле
Давайте сначала перечислим несколько преимуществ Python.
- Распараллеливание и огромная вычислительная мощность Python обеспечивают масштабируемость портфеля.
- Python упрощает написание и оценку структур алгоритмической торговли благодаря подходу функционального программирования. Код можно легко расширить до динамических алгоритмов торговли.
- Python можно использовать для разработки отличных торговых платформ, тогда как использование C или C ++ - хлопотная и трудоемкая работа.
- Торговля на Python - идеальный выбор для людей, которые хотят стать первопроходцами в области динамических торговых платформ.
- Для людей, плохо знакомых с алгоритмической торговлей, код Python легко читается и доступен.
- Сравнительно проще исправить новые модули на языке Python и сделать их более обширными.
- Имеющиеся модули также упрощают для трейдеров совместное использование функций между различными программами, разбивая их на отдельные модули, которые могут применяться к различным архитектурам.
- При использовании Python для торговли требуется меньше строк кода из-за наличия обширных библиотек.
- Квантовые трейдеры могут пропустить различные шаги, которые могут потребоваться для других языков, таких как C или C ++.
- Это также снижает общую стоимость обслуживания торговой системы.
- Благодаря широкому спектру научных библиотек на Python, алгоритмические трейдеры могут выполнять любой анализ данных со скоростью выполнения, сопоставимой с компилируемыми языками, такими как C ++.
Точно так же, как каждая монета имеет две стороны, у Python есть свои недостатки.
В Python каждая переменная рассматривается как объект, поэтому каждая переменная будет хранить ненужную информацию, такую как размер, значение и указатель ссылки. При хранении миллионов переменных, если управление памятью выполняется неэффективно, это может привести к утечкам памяти и падению производительности.
Однако для тех, кто только начинает заниматься программированием, плюсы торговли на Python превышают недостатки, что делает его лучшим языком программирования для платформ алгоритмической торговли.
Python vs. C++ vs. R
Python - относительно новый язык программирования по сравнению с C ++ и R. Однако выяснилось, что люди предпочитают Python из-за простоты его использования. Давайте сначала поймем разницу между Python и C ++.
- Скомпилированный язык, такой как C ++, часто является идеальным выбором языка программирования, если размеры данных для тестирования на истории велики. Однако Python использует высокопроизводительные библиотеки, такие как Pandas или NumPy, для тестирования на истории, чтобы поддерживать конкурентоспособность со своими скомпилированными эквивалентами.
- Выбор языка, который будет использоваться для тестирования на истории и исследовательской среды, будет зависеть от требований алгоритма и доступных библиотек. Выбор C ++ или Python будет зависеть от частоты торговли. Язык Python идеален для 5-минутных баров, но при перемещении таймфреймов на субсекундные интервалы времени простоя он может быть не идеальным выбором.
- Если скорость является важным фактором, то использование C ++ - лучший выбор, чем использование Python для торговли.
- C ++ - сложный язык, в отличие от Python, который даже новички могут легко читать, писать и изучать.
Ниже приводится последнее исследование Stackoverflow, в котором Python входит в четверку самых популярных языков программирования.
Выше мы видели, что Python предпочтительнее C ++ в большинстве ситуаций. Но как насчет других языков программирования, например R?
Что ж, ответ заключается в том, что вы можете использовать любой из них в зависимости от ваших требований, но для начинающих предпочтительнее Python, так как его легче понять и он имеет более чистый синтаксис.
Python уже состоит из множества библиотек, состоящих из множества модулей, которые можно использовать непосредственно в нашей программе без необходимости написания кода для функции.
Торговые системы развиваются со временем, и любой выбор языка программирования будет изменяться вместе с ними. Если вы хотите использовать лучшее из алгоритмической торговли, то есть преимущества универсального языка программирования и мощных инструментов научного стека, Python определенно удовлетворит всем критериям.
Применение Python в финансах
Помимо огромных приложений в области веб-разработки и разработки программного обеспечения, одна из причин, по которой Python широко используется в настоящее время, связана с его приложениями в области машинного обучения, когда компьютеры обучаются действовать соответствующим образом, изучая исторические данные. Следовательно, он находит свое применение в различных областях, таких как медицина (для изучения и прогнозирования заболеваний), маркетинг (для понимания и прогнозирования поведения покупателей), а теперь даже в трейдинге (для анализа и построения стратегий на основе финансовых данных).
Сегодня профессионалы в области финансов записываются на курсы Python по трейдингу, чтобы оставаться актуальными в современном мире финансов. Прошли те времена, когда программисты и специалисты по финансам были в отдельных подразделениях. Компании нанимают компьютерных инженеров и обучают их финансам, поскольку алгоритмический трейдинг становится доминирующим способом торговли в мире. Уже 70% объема заявок на фондовых биржах США было выполнено с помощью алгоритмической торговли. Таким образом, трейдерам, торгующим акциями и т.п., имеет смысл познакомиться с любым языком программирования, чтобы улучшить свои торговые стратегии.
Начало работы с Python
Изучив преимущества использования Python, давайте разберемся, как на самом деле его можно использовать. Давайте поговорим о различных компонентах Python.
Anaconda - это дистрибутив Python, что означает, что он состоит из всех инструментов и библиотек, необходимых для выполнения нашего кода Python. Загрузка и установка библиотек и инструментов по отдельности может быть утомительной задачей, поэтому мы устанавливаем Anaconda, поскольку он состоит из большинства пакетов Python, которые можно напрямую загрузить в среду IDE для их использования.
Spyder - это IDE или интегрированная среда разработки - то есть программная платформа, в которой мы можем писать и выполнять наш код. Она в основном состоит из редактора кода, компилятора или интерпретатора для преобразования нашего кода в машиночитаемый язык, и отладчика для выявления любых ошибок в вашем коде. Spyder IDE можно использовать для создания различных проектов Python.
Jupyter Notebook - это приложение с открытым исходным кодом, которое позволяет нам создавать, писать и реализовывать код в более интерактивном формате. Его можно использовать для тестирования небольших фрагментов кода, тогда как для реализации более крупных проектов мы можем использовать Spyder IDE.
Conda - это система управления пакетами, которую можно использовать для установки, запуска и обновления библиотек.
Примечание. Spyder IDE и Jupyter Notebook являются частью дистрибутива Anaconda, следовательно, их не нужно устанавливать отдельно.
Руководство по установке Python
Давайте теперь начнем с процесса установки Anaconda.
Выполните следующие действия, чтобы установить и настроить Anaconda в вашей системе Windows:
Шаг 1
Посетите веб-сайт Anaconda, чтобы загрузить дистрибутив. Кликните версию, которую хотите загрузить, в соответствии со спецификациями вашей системы (64- или 32-разрядная).
Шаг 2
Запустите загруженный файл, нажмите «Далее» и примите соглашение, нажав «Я согласен».
Шаг 3
При выборе типа установки выберите «Только я (рекомендуется)», выберите место, где вы хотите сохранить Anaconda, и нажмите «Далее».
Шаг 4
В дополнительных параметрах установите оба флажка и нажмите «Установить». После установки нажмите «Готово».
Теперь вы успешно установили Anaconda в свою систему, и она готова к работе. Вы можете открыть Anaconda Navigator и найти другие инструменты, такие как Jupyter Notebook и Spyder IDE.
После того, как мы установили Anaconda, мы перейдем к одному из наиболее важных компонентов ландшафта Python, то есть библиотекам.
Примечание. Anaconda поддерживает как Linux, так и macOS. Подробности установки представлены на официальном сайте.
Популярные библиотеки/пакеты Python
Библиотеки - это набор повторно используемых модулей или функций, которые можно напрямую использовать в нашем коде для выполнения определенной функции без необходимости писать код для этой функции.
Как упоминалось ранее, Python имеет огромную коллекцию библиотек, которые можно использовать для различных функций, таких как вычисления, машинное обучение, визуализация и т. д. Однако мы поговорим о наиболее подходящих библиотеках, необходимых для написания торговых стратегий, прежде чем фактически приступить к работе с Python.
Нам потребуется:
- импортировать финансовые данные;
- выполнять численный анализ;
- строить торговые стратегии;
- строить графики;
- выполнять тестирование данных на истории.
Вот несколько наиболее широко используемых библиотек для всех этих задач:
NumPy или NumericalPy в основном используется для выполнения численных вычислений над массивами данных. Массив - это элемент, который содержит группу элементов, и мы можем выполнять с ним различные операции, используя функции NumPy.
Pandas - в основном используется с DataFrame, который представляет собой табличный формат, в котором данные хранятся в строках и столбцах. Pandas можно использовать для импорта данных из файлов Excel и CSV непосредственно в код Python, а также для анализа данных и обработки табличных данных.
Matplotlib - используется для построения двухмерных графиков, таких как гистограммы, диаграммы рассеяния и т. д. Она состоит из различных функций для изменения графиков в соответствии с нашими требованиями.
TA-Lib - или Technical Analysis library - это библиотека с открытым исходным кодом, которая широко используется для выполнения технического анализа финансовых данных с использованием технических индикаторов, таких как RSI, полосы Боллинджера, MACD и т. д. Она работает не только с Python, но также и с другими языками программирования, такими как C/C ++, Java, Perl и т. д. Вот некоторые из функций, доступных в TA-Lib:
BBANDS - для полос Боллинджера;
AROONOSC - для Aroon Oscillator;
MACD - для схождения/расхождения скользящих средних;
RSI - для индекса относительной силы.
Zipline - это библиотека Python для торговых приложений, которые поддерживают упомянутый выше сервис Quantopian. Это система, управляемая событиями, которая поддерживает как тестирование на истории, так и торговлю в реальном времени.
Это всего лишь несколько библиотек, которые вы будете использовать, когда начнете применять Python для совершенствования своей торговой стратегии.
Работа с данными в Python
Знание того, как извлекать, форматировать и использовать данные, является неотъемлемой частью торговли на Python, поскольку без данных вы ничего не смогли бы сделать.
Финансовые данные доступны на различных сайтах. Эти данные также называются данными временных рядов, поскольку они индексируются по времени (шкала времени может быть ежемесячной, еженедельной, ежедневной, 5-минутной, поминутной и т. д.). Кроме того, мы можем напрямую загружать данные из листов Excel, которые сохранены в формате CSV, в котором хранятся табличные значения и которые могут быть импортированы в другие файлы и в код.
Сейчас мы узнаем, как импортировать данные временных рядов из файлов CSV с помощью примеров, приведенных ниже.
Импорт данных в Python
Вот пример того, как импортировать данные временных рядов из Yahoo Finance вместе с объяснением команды в комментариях:
Примечание. В Python мы можем добавлять комментарии, проставляя символ «#» в начале строки.
Чтобы получить данные из Yahoo finance, вам необходимо сначала установить yfinance.
!pip install yfinance
Вы можете получить данные из Yahoo Finance, используя метод download.
# Import yfinance import yfinance as yf # Get the data for stock Facebook from 2017-04-01 to 2019-04-30 data = yf.download('AAPL', start="2017-04-01", end="2019-04-30") # Print the first five rows of the data data.head()
Вывод:
Теперь давайте посмотрим на другой пример, в котором мы можем импортировать данные из существующего файла CSV:
# Import pandas import pandas as pd # Read data from csv file data = pd.read_csv('FB.csv') data.head()
Создание примера торговой стратегии и тестирование на истории в Python
Одна из самых простых торговых стратегий - это скользящие средние. Но прежде чем мы углубимся непосредственно в кодирование, мы сначала обсудим механизм различных типов скользящих средних, а затем, наконец, перейдем к одной торговой стратегии скользящих средних, которая представляет собой сходимость - расходимость скользящих средних или, короче, MACD.
Начнем с базового понимания скользящих средних.
Что такое скользящие средние?
Скользящее среднее представляет собой среднее значение указанных данных для заданного набора последовательных периодов. По мере появления новых данных среднее значение данных вычисляется путем отбрасывания самого старого значения и добавления последнего.
Таким образом, по сути, среднее значение скользит вместе с данными, отсюда и название «скользящее среднее».
Пример расчета простой скользящей средней выглядит следующим образом:
Возьмем для примера окно 10, т.е. n = 10
На финансовом рынке цена ценных бумаг имеет тенденцию к быстрым колебаниям, и в результате, когда мы строим график ценовых рядов, очень трудно предсказать тенденцию или движение цены ценных бумаг.
В таких случаях будет полезна скользящая средняя, поскольку она сглаживает колебания, позволяя трейдерам легко прогнозировать движение.
Медленные скользящие средние: скользящие средние с большим периодом известны как медленные средние, поскольку они медленнее реагируют на изменение тренда. Это приведет к созданию более плавных кривых и меньшим колебаниям.
Быстрые скользящие средние: скользящие средние с более коротким периодом известны как быстрые скользящие средние и быстрее реагируют на изменение тренда.
Рассмотрим диаграмму, показанную выше, она содержит:
- цену закрытия акции IBM (синяя линия);
- 10-дневную скользящую среднюю (фиолетовая линия);
- 50-дневную скользящую среднюю (красная линия);
- 200-дневную скользящую среднюю (зеленая линия).
Можно заметить, что 200-дневная скользящая средняя является наиболее плавной, а 10-дневная скользящая средняя имеет максимальное количество колебаний. Идя дальше, вы можете видеть, что линия 10-дневной скользящей средней немного похожа на график цены закрытия.
Типы скользящих средних
Существует три наиболее часто используемых типа скользящих средних: простая, взвешенная и экспоненциальная скользящая средняя. Единственное заметное различие между скользящими средними - это веса, присвоенные точкам данных.
Давайте разберемся с каждым типом более подробно:
Простая скользящая средняя (SMA)
Простая скользящая средняя (SMA) - это средняя цена ценной бумаги за определенный период времени. Простое скользящее среднее - это простейший тип скользящего среднего, который рассчитывается путем сложения элементов и деления на количество периодов времени.
Все элементы в SMA имеют одинаковый вес. Если период скользящего среднего равен 10, то вес каждого элемента в SMA будет составлять 10%.
Формула для простой скользящей средней приведена ниже:
SMA = сумма точек данных в периоде скользящей средней / общее количество периодов
Экспоненциальная скользящая средняя (EMA)
Логика экспоненциальной скользящей средней заключается в том, что последние цены больше влияют на будущую цену, чем прошлые. Таким образом, больше внимания уделяется текущим ценам. Имея наибольший вес в случае с последней ценой, веса уменьшаются экспоненциально по сравнению с прошлыми ценами.
Благодаря этому экспоненциальная скользящая средняя быстрее реагирует на краткосрочные колебания цен, чем простая скользящая средняя.
Формула экспоненциальной скользящей средней приведена ниже:
EMA = (Closing price - EMA*(previous day)) x multiplier + EMA*(previous day)
Weightage multiplier = 2 / (moving average period +1)
Взвешенная скользящая средняя (WMA)
Взвешенная скользящая средняя - это скользящая средняя, полученная в результате умножения каждого компонента на заранее определенный вес.
Экспоненциальная скользящая средняя - это тип взвешенной скользящей средней, где элементам в периоде скользящей средней назначается экспоненциально возрастающий вес.
Линейно взвешенная скользящая средняя (LWMA), обычно называемая взвешенной скользящей средней (WMA), вычисляется путем присвоения линейно возрастающего веса элементам в периоде скользящей средней.
Теперь, когда у нас есть понимание скользящей средней и ее различных типов, давайте попробуем создать торговую стратегию с использованием скользящей средней.
Схождение/расхождение скользящих средних (MACD)
Индикатор схождение/расхождение скользящих средних, или MACD, был разработан Джеральдом Аппелем в конце семидесятых. Это один из самых простых и эффективных индикаторов моментума, следующих за трендом.
В стратегии MACD мы используем две линии: линия MACD, которая представляет собой разницу между 26-дневной EMA и 12-дневной EMA, и сигнальную линию, которая является 9-дневной EMA линии MACD.
Мы можем активировать торговый сигнал, используя линии MACD и сигнальную линию.
Когда линия MACD пересекает сигнальную линию снизу вверх, рекомендуется покупать базовую ценную бумагу.
Когда линия MACD пересекает сигнальную линию сверху вниз, срабатывает сигнал на продажу.
Реализация стратегии MACD на Python
Импортируйте необходимые библиотеки и прочтите данные
# Import pandas import pandas as pd # Import matplotlib import matplotlib.pyplot as plt plt.style.use('ggplot') %matplotlib inline # Read the data data = pd.read_csv('AAPL.csv', index_col=0) data.index = pd.to_datetime(data.index, dayfirst=True) # Visualise the data plt.figure(figsize=(10,5)) data['Close'].plot(figsize=(10,5)) plt.legend()
Вычислите и постройте линию MACD, которая представляет собой разницу 26-дневной EMA и 12-дневной EMA, и сигнальную линию, которая является 9-дневной EMA линии MACD.
# Calculate exponential moving average data['12d_EMA'] = data.Close.ewm(span=12, adjust=False).mean() data['26d_EMA'] = data.Close.ewm(span=26, adjust=False).mean() data[['Close','12d_EMA','26d_EMA']].plot(figsize=(10,5)) plt.show()
# Calculate MACD data['macd'] = data['12d_EMA']- data['26d_EMA'] # Calculate Signal data['macdsignal'] = data.macd.ewm(span=9, adjust=False).mean() data[['macd','macdsignal']].plot(figsize=(10,5)) plt.show()
Создание торгового сигнала
Когда значение линии MACD больше, чем сигнальной линии, покупайте, иначе продавайте.
# Import numpy import numpy as np # Define Signal data['trading_signal'] = np.where(data['macd'] > data['macdsignal'], 1, -1)
Рассчитываем прибыть от стратегии:
# Calculate Returns data['returns'] = data.Close.pct_change() # Calculate Strategy Returns data['strategy_returns'] = data.returns * data.trading_signal.shift(1) # Calculate Cumulative Returns cumulative_strategy_returns = (data.strategy_returns + 1).cumprod() # Plot Strategy Returns cumulative_strategy_returns.plot(figsize=(10,5)) plt.legend() plt.show()
Оценка примера торговой стратегии
На данный момент мы создали торговую стратегию, а также протестировали ее на исторических данных. Но означает ли это, что она готова к развертыванию на реальном рынке?
Что ж, прежде чем воплотить нашу стратегию в жизнь, мы должны понять ее эффективность, или, проще говоря, потенциальную прибыльность стратегии.
Хотя есть много способов оценить торговую стратегию, мы сосредоточимся на следующем:
- годовая доходность;
- годовая волатильность;
- коэффициент Шарпа.
Давайте разберемся с ними подробно, а также попробуем оценить нашу собственную стратегию на основе этих факторов.
1. Годовая доходность или совокупный годовой темп роста (CAGR)
Проще говоря, CAGR - это норма возврата ваших инвестиций, которая включает в себя сложение ваших инвестиций. С его помощью можно сравнить две стратегии и решить, какая из них соответствует вашим потребностям.
Расчет CAGR
CAGR можно легко рассчитать по следующей формуле:
CAGR = [(Конечная стоимость инвестиций / Начальная стоимость инвестиций) ^ (1 / количество лет)] - 1
Например, мы инвестируем 2000, которые вырастают до 4000 в первый год, но падают до 3000 во второй год. Теперь, если мы рассчитаем среднегодовой рост инвестиций, он будет следующим:
CAGR = (3000/2000) ^ (½) - 1 = 0,22 = 22%
Для нашей стратегии мы попытаемся сначала рассчитать дневную доходность, а затем рассчитать CAGR. Код, а также вывод приведены ниже:
In[]
# Total number of trading days days = len(cumulative_strategy_returns) # Calculate compounded annual growth rate annual_returns = (cumulative_strategy_returns.iloc[-1]**(252/days) - 1)*100 'The CAGR is %.2f%%' % annual_returns
Out []:
'The CAGR is 11.15%'
2. Годовая волатильность
Прежде чем мы определим годовую волатильность, давайте разберемся в значении волатильности. Волатильность акции - это изменение цены акции в течение определенного периода времени.
Для стратегии мы используем следующую формулу:
Годовая волатильность = квадратный корень (торговые дни) * квадратный корень (дисперсия)
Код, а также вывод приведены ниже:
In[]
# Calculate the annualised volatility annual_volatility = data.strategy_returns.std() * np.sqrt(252) * 100 'The annualised volatility is %.2f%%' % annual_volatility
Out []:
'The annualised volatility is 23.91%'
3. Коэффициент Шарпа
Коэффициент Шарпа в основном используется инвесторами для понимания принимаемого риска по сравнению с безрисковыми инвестициями, такими как казначейские облигации и т. д.
Коэффициент Шарпа можно рассчитать следующим образом:
Sharpe ratio = [r (x) - r (f)] / δ (x)
где:
r (x) = годовая доходность инвестиций x
r (f) = годовая безрисковая ставка
δ (x) = стандартное отклонение r (x)
Код, а также вывод приведены ниже:
In[]
# Assume the annual risk-free rate is 6% risk_free_rate = 0.06 daily_risk_free_return = risk_free_rate/252 # Calculate the excess returns by subtracting the daily returns by daily risk-free return excess_daily_returns = data.strategy_returns - daily_risk_free_return # Calculate the sharpe ratio using the given formula sharpe_ratio = (excess_daily_returns.mean() / excess_daily_returns.std()) * np.sqrt(252) 'The Sharpe ratio is %.2f' % sharpe_ratio
Out[]:
'The Sharpe ratio is 0.31'
Заключение
Python широко используется в области машинного обучения и в трейдинге. В этой статье мы рассмотрели все, что потребуется для начала работы с Python. Его важно изучить, чтобы вы могли создавать собственные торговые стратегии и тестировать их.
Его обширные библиотеки и модули упрощают процесс создания алгоритмов машинного обучения без необходимости писать огромный объем кода.
Комментариев нет:
Отправить комментарий