# Simple Passive Momentum Trading with Bollinger Band import numpy as np import statsmodels.api as stat import statsmodels.tsa.stattools as ts # globals for batch transform decorator R_P = 1 # refresh period in days W_L = 30 # window length in days lookback=22 def initialize(context): context.stock = sid(24) # Apple (ignoring look-ahead bias) # for long and shorting context.max_notional = 1000000 context.min_notional = -1000000.0 # set a fixed slippage set_slippage(slippage.FixedSlippage(spread=0.01)) def handle_data(context, data): # find moving average rVal=getMeanStd(data) # lets dont do anything if we dont have enough data yet if rVal is None: return meanPrice,stdPrice = rVal price=data[context.stock].price notional = context.portfolio.positions[context.stock].amount * price # Passive momentum trading where for trading signal, Z-score is estimated h=((price-meanPrice)/stdPrice) # Bollinger band, if price is out of 2 std of moving mean, than lets trade if h>2 and notional < context.max_notional : # long order(context.stock,h*1000) if h<-2 and notional > context.min_notional: # short order(context.stock,h*1000) @batch_transform(window_length=W_L, refresh_period=R_P) def getMeanStd(datapanel): prices = datapanel['price'] meanPrice=prices.mean() stdPrice=prices.std() if meanPrice is not None and stdPrice is not None : return (meanPrice, stdPrice) else: return NoneScreen shot of the back testing result is: Click here to run algorithm on Quantopian.com.
Monday, November 18, 2013
Simple Passive Momentum Trading with Bollinger Band
Below, you can see a simple trading algorithm based on momentum and bollinger band on Quantopian.com
Labels:
Algorithmic Trading,
Bollinger Band,
finance,
Momentum Trading,
Python,
Trading
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment