Тестирование и ребалансирование портфеля с использованием Python
Приведенный ниже код, использующий [пакет BT][1], принимает код запаса, дату начала и окончания, перебалансирует указанную частоту и добавляет результаты, прошедшие тестирование.
Но я бы хотел добавить пороговое условие. То есть, например, если я упомяну порог 5% и частоту ежемесячного перебаланса, он должен инициировать перебаланс только тогда, когда портфель отклоняется на 5% сверх целевого веса каждый месяц.
Спасибо, и я высоко ценю вашу помощь.
import bt
data = bt.get('VTI, BND',start='2007,01,11',end='2017,01,11')
print (data.head())
class OrderedWeights(bt.Algo):
def __init__(self, weights):
self.target_weights = weights
def __call__(self, target):
target.temp['weights'] = dict(zip(target.temp['selected'], self.target_weights))
return True
def my_comm(q, p):
return abs(q) * 0.5
s = bt.Strategy('Equal Weighted Portfolio', [bt.algos.RunMonthly(),
bt.algos.SelectAll(),
OrderedWeights([0.0, 1]),
bt.algos.Rebalance()])
test = bt.Backtest(s, data, initial_capital=10000, commissions=my_comm)
res = bt.run(test)
res.display()
res.plot()