When does this algorithm sell?

Hi,

I am trying to understand this simple ETF rebalancing and diversification algorithm so I can work up from it.
It makes pretty good returns, and I see it is using order_target_percent.

'''
A simple algorithm showing how diversification and rebalancing
can make dramatic improvements to volatility and returns.
Note that this trades in 3X leveraged ETFs to get increased returns.
The diversification however, keeps the volatility in check.
'''
def initialize(context):
"""
Called once at the start of the algorithm.
"""
# Here are any algorithm 'constants' we'll be using
context.target_leverage = 1.0
# Here are the ETFs we want to trade along with the weights
# Ensure they add to 1.00
context.etfs = {
symbol('TYD'): 0.1, # Daily 7-10 Year Treasury Bull 3X Shares
symbol('TMF'): 0.2, # Daily 20+ Year Treasury Bull 3X Shares
symbol('EDZ'): 0.2, # Daily MSCI Emerging Markets Bear 3X Shares
symbol('SPXL'): 0.5, # Daily S&P 500 Bull 3X Shares
}
# Set commision model for Robinhood
# Rebalance our portfolio to maintain target weights
schedule_function(rebalance, date_rules.every_day(), time_rules.market_open(minutes = 35))

def rebalance(context, data):
for stock, weight in context.etfs.items():
order_target_percent(stock, weight*context.target_leverage)


When does it actually sell?

2 responses

@Nikhil

Rebalancing is the selling of part of the winners and the buying of part of the losers in order to get the target allocation.

When does it actually sell?

As you scheduled.

schedule_function(rebalance, date_rules.every_day(), time_rules.market_open(minutes = 35)


To see the action of the algorithm:

Set initial capital to 100000 -> Run Full Backtest -> Activity -> Transactions -> Load Transactions.

Happy backtesting.