You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
this is my very first posting on Github, so apologies upfront if I am not following the format you require.
I run a simple backtest (full code below) and would like to set the model's maximum leverage to 1. I read in the official documentation that there is a function set_max_leverage (max_leverage) but I am unsure how and where to integrate it into my code.
May I please ask you for advice?
Thank you very much in advance!
from zipline import run_algorithm
from zipline.api import order_target_percent, symbol, schedule_function,\
date_rules, time_rules
from datetime import datetime
import pandas as pd
import pytz
import pyfolio as pf
def initialize(context):
# Which stocks to trade
dji = [
"AAPL",
"AXP",
"BA",
"CAT",
"CSCO",
"CVX",
"DIS",
"DWDP",
"GS",
"HD",
"IBM",
"INTC",
"JNJ",
"JPM",
"KO",
"MCD",
"MMM",
"MRK",
"MSFT",
"NKE",
"PFE",
"PG",
"TRV",
"UNH",
"UTX",
"V",
"VZ",
"WBA",
"WMT",
"XOM"
]
# Make symbol list from tickers
context.universe = [symbol(s) for s in dji]
# History window
context.history_window = 20
# Size of our portfolio
context.stocks_to_hold = 10
# Schedule the daily trading routine for once per month
schedule_function(handle_data, date_rules.month_start(),\
time_rules.market_close())
def month_perf(ts):
perf = (ts[-1] / ts[0]) - 1
return perf
def handle_data (context, data):
# Get history for all the stocks
hist = data.history (context.universe, "close", context.history_window, "1d")
# This creates a table of percent returns, in order
perf_table = hist.apply(month_perf).sort_values(ascending = False)
# Make buy list of the top N stocks
buy_list = perf_table[ : context.stocks_to_hold]
# The rest will not be held
the_rest = perf_table[context.stocks_to_hold : ]
# Place target buy orders for top N stocks
for stock, perf in buy_list.iteritems():
stock_weight = 1 / context.stocks_to_hold
# Place order
if data.can_trade(stock):
order_target_percent(stock, stock_weight)
# Make sure we are flat the rest
for stock, perf in the_rest.iteritems():
# Place order
if data.can_trade(stock):
order_target_percent(stock, 0.0)
def analyze (context, perf):
# Use PyFolio to generate a performance report
returns, positions, transactions = pf.utils.extract_rets_pos_txn_from_zipline(perf)
pf.create_returns_tear_sheet(returns, benchmark_rets = None)
# Set start and end date
start = pd.to_datetime("2003-1-1", utc = True)
end = pd.to_datetime("2017-12-31", utc = True)
# Fire off the backtest
result = run_algorithm(start = start, end = end, initialize = initialize,
analyze = analyze, capital_base = 10000,
data_frequency = "daily", bundle = "quandl")
The text was updated successfully, but these errors were encountered:
Dear community,
this is my very first posting on Github, so apologies upfront if I am not following the format you require.
I run a simple backtest (full code below) and would like to set the model's maximum leverage to 1. I read in the official documentation that there is a function set_max_leverage (max_leverage) but I am unsure how and where to integrate it into my code.
May I please ask you for advice?
Thank you very much in advance!
The text was updated successfully, but these errors were encountered: