Общие вопросы
Официальный сайт библиотеки BT
- Рекомендации по установке
- Загрузка котировок
- Простейшая стратегия
Рекомендации по установке
Для установки на Anaconda3 мне потребовалось в Anaconda3 Promt выполнить команду:
conda install -c conda-forge bt
Загрузка котировок
Котировки можно загрузить командой bt.get('идентификатор', start, end). По умолчанию загружается скорректированная цена закрытия(adjusted close). Далее пишем дату начала и конца периода для загрузки в формате гггг-мм-чч.import bt
data = bt.get('RUB=X', start='2016-01-01', end='2016-08-01')
print(data.head())
Для наших дальнейших экспериментов вместо рубля возьмем котировки акций Газпрома(OGZPY) и Сбербанка(SBRCY).
Создадим простейшую стратегию. Для этого создадим экземпляр класса Strategy и в нем зададим нужную комбинацию алгоритмов.
s1 = bt.Strategy('s1', [bt.algos.RunMonthly(), # Выполняем ежемесячно;
bt.algos.SelectAll(), # выбираем все бумаги;
bt.algos.WeighEqually(), # в равной пропорции;
bt.algos.Rebalance()]) # выполняем ребалансировку согласно выбранной пропорции
Теперь можем протестировать нашу стратегию. Напишем код.
# тестируем нашу стратегию
test = bt.Backtest(s, data)
res = bt.run(test)
Можем вывести график результата и статистические параметры работы стратегии.
# выводим график средств
res.plot()
# выводим статистические коэффициенты
res.display()
В итоге все вместе у нас будет выглядеть так.
# -*- coding: utf-8 -*-
import bt
data = bt.get('OGZPY, SBRCY', start='2016-01-01', end='2016-08-01')
print(data.tail())
s = bt.Strategy('s1', [bt.algos.RunMonthly(),
bt.algos.SelectAll(),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])
# тестируем нашу стратегию
test = bt.Backtest(s, data)
#print(test)
res = bt.run(test)
# выводим график средств
print(res)
res.plot()
# выводим статистические коэффициенты
res.display()
# выводим гистограмму прибылей и убытков
res.plot_histogram()
# выводим график весов акций в портфеле
res.plot_security_weights()
Теперь попробуем модифицировать стратегию.