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

Word2Vec - простой, но удивительно мощный алгоритм.

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

Что произойдет, если мы применим Word2Vec к фондовому рынку?

Выбор окна Stock2Vec

В Word2Vec окно для каждого слова - это окружающие слова. Для Stock2Vec, как нам выбрать соседние акции для каждой акции?

На фондовом рынке есть множество переменных на выбор: цена, объем, скользящая средняя и т. Д. Обсудив это с моим другом Yuhi, который работает в сфере финансов, мы выбрали соотношение цены и прибыли. Соотношение цены и прибыли отражает ожидания рынка в отношении роста компании.

Надеюсь, он чему-нибудь научится!

Строительство Stock2Vec

Читая документацию по API для Quantopian’s Zipline, я наткнулся на Quandl Wiki Dataset, в котором бесплатно содержатся данные на конец рабочего дня за 40 лет для 3000 компаний. Я объединил ценовые данные с фундаментальными данными, купленными у Sharadar. Затем я использовал postgres для объединения данных. Код предварительной обработки находится здесь.

Я адаптировал проект встраивания, который был частью Udacity Deep Learning Class, который я только закончил на прошлой неделе :), обучил модель на FloydHub и визуализировал результаты с TensorBoard. Вы можете найти обучающий код здесь.

Из первого вывода видно, что Stock2Vec научился группировать похожие отрасли вместе.

Stock2Vec объединил биофармацевтические компании: Vivus, Vical, Sarepta, ArQule, BioCryst и Siga. Медицинские компании: McKesson и Hill-Rom. Здравоохранение: Aetna и Cigna. Швейные компании: Gap and Guess, VF Corp и Wolverine World Wide. Розничные продавцы: Office Depot и Best Buy. Банки: Sun Bancorp и CapitalSource.

Прохладный!!

После 20 эпох обучения это вложения, построенные с помощью t-SNE.

Если выбрать акцию, банк PNC, мы увидим ближайших соседей.

Все это банки: Wells Fargo, First Financial Corp, Goldman Sachs, Principal Financial Group, U.S. Bancorp, JP Morgan, Northrim Bancorp, StanCorp Financial Group, Camden National.

Выберем еще одну, WTI - нефтегазового исследователя.

Ближайшие соседи - все энергетические компании: Chesapeake Energy, Stone Energy, Gastar Exploration, Denbury Resources, Bonanza Creek Energy.

Дальнейшие действия

Я перехожу на новый алгоритм вместо того, чтобы углубляться в Stock2Vec, потому что хочу изучить широкий спектр алгоритмов. Но есть много областей для улучшения и будущих исследований.

Предварительная обработка может быть изменена, акции, которые обычно не находятся в одних и тех же окнах, могут быть удалены. Данные обучения могут иметь более высокое разрешение, каждую минуту или 15 минут. Оконная функция может использовать другие переменные, скользящую среднюю, бета-версию и т. Д.

Были ли обнаружены какие-нибудь интересные отношения? SNAP минус FB = MSFT? Если вы заинтересованы в изучении этого вопроса, я рад поделиться векторными данными.

Этот проект был забавным, и я много узнал о встраивании слов, numpy, TensorFlow и TensorBoard. Я очень взволнован своим следующим проектом!

Дайте мне знать, если у вас есть какие-либо вопросы или предложения в комментариях, или не стесняйтесь напишите мне.

— —

Спасибо Yuhi и Gal за помощь в покупке фундаментальных данных :).