Торговая стратегия, ресурсы и советы от тех, кто делал это раньше.

Не можете придумать стратегию? Не знаете, какие API и пакеты использовать? Не хотите изобретать велосипед? Я создал программу дневной торговли акциями (репозиторий github) с нуля и хотел поделиться некоторыми полезными ресурсами, а также некоторыми советами о том, как начать работу. Я знаю, что начинать новый проект, особенно в иностранной сфере, сложно, и я надеюсь, что эта статья поможет сгладить кривую обучения. Сделав шаг назад, я также хотел обсудить свои критерии хорошего проекта. Есть много проектов, над которыми вы можете работать, так зачем же над этим работать?

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

Контур:

  • Почему я считаю создание торгового бота« хорошим проектом»: прежде чем тратить время на создание инвестиционного бота, важно спросить, является ли это хорошим вложением вашего времени.
  • С чего начать: я привожу пример псевдокода, который поможет вам начать работу.
  • Ресурсы: список репозиториев на github, веб-сайтов, статей о других средах, видеороликов на YouTube, книг и подкастов, которые мне очень помогли.

Почему я считаю создание торгового бота «хорошим» проектом:

1. Используйте интересующие технологии

Учитывая, что сложность покупки или продажи акций / криптовалюты / форекс практически бесконечна, есть много возможностей для внедрения новых технологий. Вы специалист по данным и хотите проанализировать некоторые твиты Илона Маска или определить ключевые слова в SEC Filings? Начинающий облачный инженер хочет использовать облако для чего-то вроде возможности запускать свои скрипты в режиме 24/7 на экземпляре EC2? backend-разработчик, желающий предоставить конечным пользователям API для получения сигналов от вашего алгоритма о том, когда покупать и продавать? ETL или инженер по данным, желающий поиграть с инструментами для работы с большими данными, такими как Kafka, Spark, DynamoDB, и построить конвейеры для потоковой передачи данных о ценах и их передачи в базы данных NoSQL / SQL. веб-разработчик или финансовый аналитик, заинтересованный в использовании DASH или React + Flask для представления конечным пользователям производительности алгоритма? Вы хотите использовать МАШИННОЕ ОБУЧЕНИЕ? Надеюсь, вы поняли идею.

2. Совместная

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

3. Четкая мера успеха: $$$

Иногда успех сложно измерить, но в этом проекте окончательным показателем является знание того, сколько денег принесла программа или сколько убытков. Честно говоря, с точки зрения обучения это беспроигрышный вариант. Если вы зарабатываете деньги, подумайте, как вы можете заработать больше денег или меньше потерять. Если вы теряете деньги, подумайте, как вы можете заработать больше денег или меньше потерять. Правильно, разницы нет. Всегда есть место для улучшения, и все усилия сводятся к одной и той же мере. Иногда с другими проектами трудно понять, принесут ли ваши изменения пользу. Успех может зависеть от отзывов пользователей или просто от их мнения. Этот проект, напротив, хорош, потому что успех и неудача очевидны. Тем не менее, важно помнить, что рынки бесконечно сложны. Хотя измерить прогресс легко, это не значит, что его легко добиться.

4. Легко понимают рекрутеры / будущий работодатель / бабушка.

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

5. Потенциально прибыльно (но маловероятно)

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

6. Бесконечно сложный

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

С чего начать?

Определите стратегию

Разработайте эффективную стратегию. Заметьте, я не сказал создавать прибыльную стратегию. Дело в том, что вы будете повторять. Определение стратегии поможет обеспечить некоторую основу, которую можно улучшить. Это пример стратегии, которую я создал для торговли акциями:

Я объяснил эту стратегию в другой статье, которую я написал о начальной производительности моего алгоритма торговли акциями. Теперь повторите эту стратегию и предоставьте более подробную информацию. Как только вы почувствуете, что у вас есть что-то, что можно легко реализовать, начните думать о том, как это реализовать. Именно тогда я почувствовал, что могу приступить к реализации:

Примечание: обратите внимание, что включают вызовы API, которые я ожидаю использовать во время реализации. Это может быть более конкретным, чем это необходимо в настоящее время на этапе псевдокода.

Как вы будете реализовывать свою стратегию?

Какие API, пакеты и другие ресурсы помогают или необходимы для реализации этого псевдокода? Это вообще возможно? Именно тогда я провел небольшое исследование и обнаружил, что есть биржевые API для Robinhood (НЕ РЕКОМЕНДУЕТСЯ), TD Ameritrade и Alpaca, которые могут выполнять заказы на покупку и продажу. Что касается новостей, я думаю о том, чтобы выполнить парсинг веб-страниц с использованием модулей Python Beautiful Soup, Selenium и Scrapy. Я могу использовать Yahoo Finance API для получения скользящих средних и отслеживания объема. Для создания некоторых моделей машинного обучения я мог бы использовать scikit-learn, pandas и numpy (я не рекомендую вначале слишком сильно зацикливаться на машинном обучении). Я написал свою первоначальную программу в Jupyter Notebook и использовал Github в качестве репо.

На этом этапе у вас может возникнуть соблазн начать вникать в новые технологии и платформы, такие как включение некоторого облака или использование воздушного потока или kubeflow, но я рекомендую сосредоточиться на реализации как можно быстрее. Если вы заинтересованы во внедрении других технологий и у вас немного больше опыта, вы можете выполнить «Подтверждение концепций» (POC) для технологий, которые вы планируете использовать до включения этой технологии. Если вы работаете в группе, некоторые могут сосредоточиться только на выполнении POC и поиске того, что работает лучше всего.

Итерировать: быстро до отказа

Простое внедрение псевдокода многому вас научит. Вы начинаете понимать, в чем заключаются узкие места, и улучшаете дизайн. И, возможно, узнали о новых API, пакетах или фреймворках, которые могут быть полезны. Я также рекомендую совершить торговлю на бумаге (имитацию торговли), чтобы проверить производительность вашей программы. Имейте в виду, ничто не сравнится с торговлей вживую. Когда вы живете в торговле, существует множество факторов, которые влияют на производительность вашей программы. Прочтите одну из моих предыдущих статей, в которой описаны некоторые проблемы, с которыми я столкнулся при создании своего алгоритма.

Ресурсы

Ниже приведены некоторые ресурсы, которые помогли мне начать работу и могут помочь вам тоже. Опять же, некоторые могут дать конкретные практические советы, в то время как другие предоставят вам некоторые знания и опыт.

Примечание: я буду постоянно обновлять список ниже, добавляя полезные ресурсы.

Github Repos

  1. Кураторский список безумно потрясающих библиотек, пакетов и ресурсов для Quants (количественные финансы)
  2. News API
  3. Твит Трампа в деньги
  4. Парсинг новостных статей

Другие средние статьи

  1. API фондового рынка
  2. Стратегии фондового рынка (высокий уровень)
  3. Индикаторы и прочее Высокий уровень
  4. Значения Как получить индикаторы (из Finviz с использованием парсинга)
  5. Пример использования индикаторов
  6. Реализация стратегии скальпинга, вдохновившая мой алгоритм
  7. Пример финансового веб-скрапинга
  8. Создание серверной части потоковой передачи биткойнов
  9. Потоковая передача данных о запасах
  10. Илон Маск пишет в Твиттере, чтобы обналичить

Сайты:

  1. Finviz: нажмите на тикер, чтобы увидеть все индикаторы и фильтры, которые используют профессиональные трейдеры. Это может вдохновить вас на то, какие индикаторы использовать для вашего собственного алгоритма фильтрации.
  2. MarketWatch: популярный источник новостей для внутридневных трейдеров. (может быть интересно почистить эти истории и провести анализ настроений).
  3. SEC Filings: если вы введете тикер, вы увидите все официальные документы компании. (Мы думаем о том, чтобы очистить некоторые из этих документов, чтобы проинформировать наш алгоритм торговли акциями).
  4. Субреддит AlgoTrading: субреддит для алгоритмической торговли. Здесь тоже есть отличные ресурсы. Вот дискуссия о лучших торговых платформах API. Введение в Python для торговых алгоритмов.

YouTube

  1. Bear Bull Traders: обучающее видео для начинающих трейдеров.
  2. Forrest Knight: Ресурсы для построения алгоритма дневной торговли
  3. Интересный TED Talk об искусственном интеллекте на FOREX

Книги

  1. Flash Boys: причина, по которой все должны скептически относиться к зарабатыванию денег на фондовом рынке.

Подкасты:

Это подкаст, описывающий стратегии высокого уровня. (Вы также можете просто погуглить «подкаст дневной торговли» - их много).

  1. Desire To Trade: интервью с разработчиком системы внутридневной торговли
  2. Top Dog Trading

Подстек:

Недавно я создал подстак, чтобы научиться программировать и решать вопросы LeetCode на Python. Посмотрите здесь:

  1. Мой подстак

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