100 реда код на Python за автоматизиране на търговията с акции

Ако сте запознати с финансовия пазар и владеете свободно Python, можете лесно да автоматизирате финансовата търговия.

реда

Алгоритмична търговия

Алгоритмичната търговия (алго търговия, алгоритмична търговия) е компютърно подпомагана търговия с финансови инструменти, базирана на специфичен алгоритъм или правило с малко или никакво човешко участие. Можете да търгувате в автоматичен режим с почти всеки финансов инструмент: акции, валути, стоки, кредитни продукти или волатилност. В някои пазарни сегменти лъвският дял от транзакциите се извършват от алгоритми. Книгите The Quants от Скот Патерсън и More Money Than God от Себастиан Малаби предоставят добро въведение в алгоритмичната търговия и хората зад нея.

Алгоритмичната търговия никога не е била толкова достъпна, колкото е днес. Съвсем наскоро този тип дейност беше възможен само за институционални инвеститори с милиони долари бюджети, но днес почти всеки с лаптоп и интернет връзка може да участва в алгоритмична търговия. Това състояние на нещата се дължи на следните фактори:

• Софтуер с отворен код. Всички инструменти, необходими на трейдъра, за да започне алгоритмична търговия, са достъпни под безплатни лицензи. По-специално Python и неговата екосистема се превърнаха в стандарт в тази област.

• Отворени източници на данни. Има все повече отворени източници на ценни данни. Благодарение на това търговците получават широка възможност да тестват хипотези и да тестват стратегии за търговия.

• Онлайн платформи за търговия. Вече има много онлайн платформи, които предоставят лесен, стандартизиран достъп до исторически данни (чрез RESTful API), данни в реално време (чрез сокет API) и широк набор от инструменти за търговия и портфолио (чрез софтуерен API).

В тази статия ще внедрим всички елементи, необходими за пълноценна алгоритмична търговия, от тестване на търговска стратегия върху исторически данни (backtesting, backtesting) до автоматична търговия в реално време.

Помислете за основните компоненти на проекта:

• Платформа. Избрахме платформата Oanda. Тази платформа ви позволява да търгувате различни договори за разлика (CFD), което всъщност ви позволява да работите с широк набор от финансови инструменти, като валути, борсови индекси, суровини и др.

• Данни. Всички исторически данни и данни в реално време ще ни бъдат предоставени от платформата Oanda.

• Софтуер. Ще използваме Python, мощната библиотека за анализ на Pandas, както и няколко допълнителни библиотеки.

По-долу ще приемем, че имате инсталиран Python 3.5 и основни библиотеки като NumPy и Pandas. Ако все още не разполагате с тези инструменти, можете да инсталирате всичко необходимо, като използвате например дистрибуцията на Anaconda.

Oanda акаунт

Преди да започнете работа с библиотеката, трябва да създадете конфигурационен файл oanda.cfg със следното съдържание:

Изпълнявайки следния код, получаваме основния обект за програмно взаимодействие с платформата:

Вече имаме всичко необходимо, за да започнем да тестваме инерционната стратегия. INпо-специално, можем да получим исторически данни, предоставени от платформата. Ще използваме инструмента EUR_USD въз основа на обменния курс EUR/USD.

В резултат на това получаваме подробно описание на набора от данни:

След това формализираме стратегията за импулс, като изчисляваме средния логаритъм на доходността (средна логаритмична възвръщаемост) за последните 15, 30, 60 и 120 минути за всяка точка от времето. Например, средният дневник на връщанията през последните 15 минути е средната стойност на последните 15 връщания в лога. Ако тази стойност е положителна, играем за увеличение (go/stay long), ако е отрицателна - за спад (go/stay short). За да запазим кода прост, ние разчитаме само на стойността на колоната closeAsk.

След това, за да се изчисли абсолютното представяне на инерционните стратегии въз основа на различни времеви рамки, е необходимо да се умножат възвръщаемостта по стойностите, получени по-горе (след извършване на смяната). Ето как ще го направим:

Получаваме следната диаграма:

автоматизиране

След като анализирахме графиката, виждаме, че през разглеждания период самият инструмент има отрицателна доходност от около -2%. Инерционна стратегия, базирана на 120-минутни интервали, показва най-добър резултат, показвайки положителна възвръщаемост от около 1,5% (без да се взема предвид разликата между търсене и предлагане (спред бид/аск)). Всъщност тази стратегия показва „истинска алфа“: тя осигурява положителна възвръщаемост дори когато самият инструмент има отрицателна възвръщаемост.

Автоматична търговия

Избирайки търговска стратегия, ние можем напълно да автоматизираме търговските операции. За да ускорим процеса, ние използваме данни с резолюция от 5 секунди, вместо 1 минута, както беше по време на тестването. Можете да автоматизирате търговията с единдоста компактен клас:

Следният кодов фрагмент стартира класа MomentumTrader за изпълнение. Изчисляването на инерционната стратегия се основава на интервали от 12 наблюдения. Класът автоматично спира търговията след получаване на 250 блока данни. Тази стойност е избрана произволно, за да се демонстрира бързо как работи класът MomentumTrader.

Резултатът по-долу показва отделните сделки, извършени от класа MomentumTrader по време на демонстрацията:

Изображението по-долу показва приложението Oanda fxTrade Practice, където виждаме класа MomentumTrader в действие.

търговията

Заключение

В тази статия разгледахме бърз старт в алгоритмичната търговия, който изисква по-малко от 100 реда код на Python. Обсъдихме всички основни етапи от изпълнението на такива проекти: получаване на исторически данни за тестване, тестване на стратегията, автоматизиране на търговски операции въз основа на избраната стратегия. Представеният код е отправна точка, от която можете да се движите в различни посоки. Например, можете да използвате различни стратегии, да използвате различни инструменти или да работите с множество инструменти едновременно.

Популярността на алгоритмичната търговия се доказва от появата на различни видове платформи за търговия. Например, създателите на Quantopian, онлайн платформа за тестване на стратегии за алгоритмична търговия, съобщиха в края на 2016 г., че са привлекли повече от 100 000 потребители. Платформи за онлайн търговия като Oanda и криптовалути като Gemini ви позволяват да започнете да търгувате на реалния пазар много бързо, като се присъедините към хиляди търговци по целия свят.