Эта статья познакомит вас с работой над 4-месячным проектом по разработке алгоритма машинного обучения для прогнозирования акций под руководством профессора Шулиха Чжэпонг (Лайонел) Ли. Это первая из трех частей. Весь код написан на питоне. Наука о данных и построение моделей выполняются с использованием пакетов Scikit-learn, numpy и pandas.

  • Часть 1. Обзор: использование машинного обучения для принятия решений на основе данных
  • Часть 2 - Математика: применение машинного обучения с учителем (прикрепленный код здесь)
  • Часть 3 - Финансы: выводы о поведении акций

Зачем я это сделал?

Начиная с поздних школьных лет, я проявляю глубокий интерес к финансовым рынкам. Я пробовал много разных стратегий и много думал, пытаясь придумать адекватную стратегию, чтобы постоянно зарабатывать деньги, инвестируя в фондовый рынок. Я верю, что в краткосрочной перспективе (менее 1 года) цены на акции движутся по волновым моделям - понимание их может помочь нам понять движения цен на акции. Гипотеза эффективного рынка говорит нам, что вся соответствующая информация уже учтена в цене акции, а это означает, что ни фундаментальный, ни технический анализ не могут быть использованы для достижения превосходной прибыли в краткосрочной и долгосрочной перспективе. Уже проведено множество исследований, чтобы выяснить, как цены на акции движутся, например, здесь и здесь. Этот эксперимент ставит это под сомнение. Моя гипотеза проста: анализируя закономерности в данных с помощью методов контролируемого машинного обучения, я могу построить модель и торговую стратегию, которая превосходит рынок. В конце концов, я слежу только за множеством алгоритмов и спекулятивных трейдеров, которые продолжают использовать рынок в краткосрочной перспективе. Эта тема всегда была для меня моей страстью, так что здесь ничего не происходит ...

Сбор данных

Данные для обучения, использованные в моем проекте, были собраны из базы данных Quandl. Для моделирования алгоритма я использовал одну из моих любимых акций Amazon (NYSE: AMZN). Данные содержат ежедневную информацию о запасах за период с 01.12.2000 - текущее (поскольку я использую бесплатный план, данные всегда отстают как минимум на неделю). Я использовал 80% данных для обучения и 20% для тестирования.

По сути, я буду применять двоичную классификацию, чтобы произвести сигнал быка или медведя в момент времени t (где t = 1,2,3… t). Короче говоря, я использовал ежедневную маркировку следующим образом: отметьте «1», если цена закрытия следующего дня выше, чем цена предыдущего дня, в противном случае отметьте «0». Наконец, я применю эту последовательность к нескольким моделям, чтобы оценить производительность. Самым важным показателем для измерения производительности является точность, которую я определил ниже.

Точность = Количество дней, в течение которых модель правильно классифицировала данные тестирования / Общее количество дней тестирования

Результаты

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

Чем длиннее прогнозируемый горизонт, тем точнее становятся наши прогнозы. Неудивительно, что прогнозы на следующий день не намного лучше, чем шансы правильно предсказать подбрасывание монеты (наблюдаемое при отслеживании нулевой точности). Точность нуля обратно пропорциональна периоду прогноза. Разброс между нулевой моделью и другими моделями помогает описать, насколько эффективна каждая модель.

Торговая стратегия

Профессиональные количественные трейдеры на Уолл-стрит и Бэй-стрит достигают точности до 55% при прогнозировании цен на акции на следующий день и до 80% точности при прогнозировании цен на акции на 30 дней вперед. Добавление дополнительных функций может помочь мне отфильтровать шум для достижения этих уровней. На данный момент я разработал торговую стратегию, основанную на текущей модели, чтобы проанализировать, насколько хорошо я буду торговать акциями. Поскольку SVC имел самые высокие уровни точности, я использовал его для моделирования этой стратегии. Модель скажет мне продать акции, если на следующий день цены будут снижаться, и купить, если на следующий день цены вырастут. Моя модель смогла обеспечить средний ROI 1,3% в месяц в период с 2008 по 2010 г., равный 31,2%. Точно так же стратегия покупки и удержания в S & P500 в течение того же периода времени привела бы к -6,9% за тот же период времени (из-за рецессии), а акции Amazon показали бы рост на 152%. Моя модель не дает лучших результатов, но я считаю, что это хорошее начало. На цены акций в этот период времени сильно повлияли макроэкономические факторы, которые моя модель не учитывает. Лучшая доходность будет иметь более разнообразные и богатые информацией особенности.

Проблемы и недостатки

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

Моя модель лишь на шаг приближает нас к пониманию поведения цен на акции. Улучшая модель, мы можем достичь высочайшего уровня точности и более уверенно инвестировать - все это подкреплено аналитическими данными на основе данных.

Если вы финансист, увлеченный финансовыми рынками, или специалист по техническим вопросам / дайвер данных / маньяк по машинному обучению / # кто бы вы ни были, свяжитесь с нами. Возможность сотрудничать в дальнейшем продвижении модели может сделать нас еще на шаг ближе к достижению истинной альфы в понимании рынка.

Свяжитесь со мной в LinkedIn / подпишитесь на меня на Medium / разветвите меня на Github