Тестирование и ребалансирование портфеля с использованием 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()

0 ответов

Другие вопросы по тегам