
В серии следующих постов я расскажу о том, как проводить бэктестинг с помощью Python. Для тестирования торговых стратегий я использую сайт Quantopian. Почему именно его? Потому что он: а) простой и наглядный; б) дает доступ к бесплатным историческим данным; в) имеет богатый функционал.

Меня, как и многих, заинтересовал шум вокруг IPO компании SnapChat (SNAP). Лично я IPO не люблю, так как там нет достаточной истории цены. Тем не менее я не смог удержаться и не провести небольшое исследование результатов прошедших IPO за 2016 год. Как всегда, со мной Python.

Продолжаю рассказывать о простейших скриптах. Если вы читали предыдущий пост, то без проблем разберетесь и в этом коде.
На прошлой неделе мне задали такой вопрос:
Т.е. простой смертный берет питон пишет код. Типа там если сегодня среда 10-00, то купить 1 акцию. Прикрепляет блок, данные идут, условие срабатывает, покупка, лог… и т.п.
Спрашивали — отвечаю.
После многолетнего молчания на смартлабе, я решился наконец написать свой первый пост и заодно показать альфа-версию торговой платформы, которую пилю под свои нужды. Очень хотелось иметь программу для автоматизации скальпинга и высокочастотного трейдинга, не такую топорную как Quik и с собственным блекждеком.
Вдохновила меня прекрасная программа Николая Морошкина Qscalp и захотелось иметь похожую, но с блекджеком Python внутри. С большим уклоном в автоматический скальпинг, и с меньшим — в ручной.
Я хотел писать торговые стратегии для скальпингового привода на Питоне, имея возможность творить с рыночными данными все, что угодно. Например, экспортировать тики в базу данных или скармливать их нейросетям в реальном времени. Ну и заодно проверить, действительно ли Python, как уверяли некоторые, слишком медленный для реализации подобных задач. Создавал программу в свободное время.
Итак, у нас был Transaq XML Connector, QT, Python и целое множество библиотек всех сортов и расцветок, а также Windows, Linux, wine и VirtualBox. Не то чтобы это был необходимый запас для разработки. Но если начал писать проект, становится трудно остановиться. Единственное, что вызывало у меня опасение — это pyinstaller. Нет ничего более беспомощного, безответственного и испорченного, чем ошибки при сборке. Я знал, что рано или поздно мы перейдем и на эту дрянь.

Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python.
Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между временными сериями (в данном случае возьмем в качестве сигнала взаимный фонд XLF из финансового сектора, сдвинутый по времени на 1 день назад), а нашей целью будет фьючерс S&P500 в форме CFD. Будем входить в длинную позицию по этой бумаге при нулевой вероятности приращения. Логически нулевая вероятность ни о чем не говорит, другими словами, будем покупать возврат к среднему.
1. Получение данных
Y = read_mongo(dbase, "S&P5001440") X = read_mongo(dbase, syms[s]).shift() #готовим набор данных res = pd.concat([X.CLOSE, Y.CLOSE], axis=1, join_axes=[X.index]).pct_change().dropna() res.columns = ['X', 'Y']