QuantDigger — это фреймворк для квантового обратного тестирования на языке Python. Он использует простую синтаксическую конструкцию для стратегий, характерную для популярных коммерческих программ (например, TB, Пирамида), и избегает ограничений встроенных языков программирования, используя универсальный язык Python для разработки стратегий. В отличие от zipline и pyalgotrade, синтаксис стратегий в QuantDigger ближе к привычкам разработчиков. В настоящее время функции включают обратное тестирование акций и фьючерсов. Поддерживается отбор акций, арбитраж, выбор времени и комбинированные стратегии. Включён простой интерфейс для отображения стратегий и свечных графиков, созданный на основе matplotlib, который удовлетворяет базовым потребностям большинства любителей квантового анализа. Проект также учитывает реальные торговые операции, и в будущем, если позволит время, будут добавлены торговые интерфейсы. Разработчики — это любители квантового анализа, и они приветствуют новых участников, желающих присоединиться к разработке. Мой QQ-чат: 334555399.
Также хочу поблагодарить следующих друзей за их советы:
Документация --- http://www.quantfans.orgУстановка ---
Клонирование кода с GitHub и локальная установка (рекомендуется)
git clone https://github.com/QuantFans/quantdigger.git python setupscripts\install.py (установит pip и зависимости по необходимости)
Если возникают проблемы с таймаутом при подключении к pypi, можно установить зависимости через командную строку:
pip2 -r requirements/requirements.txt --upgrade -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
#from quantdigger.engine.series import NumberSeries
#from quantdigger.indicators.common import MA
#from quantdigger.util import pcontract
from quantdigger import *
class DemoStrategy(Strategy):
"""Стратегия A1"""
def on_init(self, ctx):
"""Инициализация данных"""
ctx.ma10 = MA(ctx.close, 10, 'ma10', 'y', 2)
ctx.ma20 = MA(ctx.close, 20, 'ma20', 'b', 2)
def on_symbol(self, ctx):
"""Выбор акций"""
return
def on_bar(self, ctx):
if ctx.curbar > 20:
if ctx.ma10[2] < ctx.ma20[2] and ctx.ma10[1] > ctx.ma20[1]:
ctx.buy(ctx.close, 1)
elif ctx.pos() > 0 and ctx.ma10[2] > ctx.ma20[2] and \
ctx.ma10[1] < ctx.ma20[1]:
ctx.sell(ctx.close, ctx.pos())
def on_exit(self, ctx):
return class DemoStrategy2(Strategy):
"""СтратегияA2"""
def on_init(self, ctx):
"""Инициализация данных"""
ctx.ma5 = MA(ctx.close, 5, 'ma5', 'y', 2)
ctx.ma10 = MA(ctx.close, 10, 'ma10', 'black', 2)
def on_symbol(self, ctx):
"""Выбор акций"""
return
def on_bar(self, ctx):
if ctx.curbar > 10:
if ctx.ma5[2] < ctx.ma10[2] and ctx.ma5[1] > ctx.ma10[1]:
ctx.buy(ctx.close, 1)
elif ctx.pos() > 0 and ctx.ma5[2] > ctx.ma10[2] and \
ctx.ma5[1] < ctx.ma10[1]:
ctx.sell(ctx.close, ctx.pos())
def on_exit(self, ctx):
return
if __name__ == '__main__':
set_symbols(['BB.SHFE-1.Minute'], 0)
# Создание комбинационной стратегии
# Начальный капитал 5000, соотношение капиталов между двумя стратегиями 0.2:0.8
profile = add_strategy([DemoStrategy('A1'), DemoStrategy2('A2')], { 'capital': 5000,
'ratio': [0.2, 0.8] })
run()
# Построение графика котировок и сигналов торговли
from quantdigger.digger import finance, plotting
plotting.plot_strategy(profile.data(0), profile.indicators(1), profile.deals(1))
# Построение графика стратегии A1, стратегии A2 и комбинационного капитала
curve0 = finance.create_equity_curve(profile.all_holdings(0))
curve1 = finance.create_equity_curve(profile.all_holdings(1))
curve = finance.create_equity_curve(profile.all_holdings())
plotting.plot_curves([curve0.equity, curve1.equity, curve.equity],
colors=['r', 'g', 'b'],
names=[profile.name(0), profile.name(1), 'A0'])
# Построение графика номинальной стоимости
plotting.plot_curves([curve.networth])
# Вывод статистической информации
print(finance.summary_stats(curve, 252 * 4 * 60))
# Результаты стратегии
~~~~~~~~~~~~~~~~~~~~~* K-диаграмма и сигнальная линия
K-диаграмма отображается с использованием встроенных в систему связанных окон, управляемых синим ползунком, который контролирует область отображения. Область отображения может быть изменена с помощью мыши. Для масштабирования используйте клавиши со стрелками вверх и вниз.
Два стратегических графика и графики совокупного капитала.
Историческая стоимость портфеля
Статистические результаты
>>> [('Общая доходность', '-0.99%'), ('Коэффициент Шарпа', '-5.10'), ('Максимальное просадочное значение', '1.72%'), ('Продолжительность просадки', '3568')]
TODO
Версия 0.3.0, 2015-12-09
Версия 0.15, 2015-06-16
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )