This is a variation of https://www.quantopian.com/posts/post-earnings-drift-trading-strategy-with-estimize-pead.
I am not sure if code in my custom Bollinger Bands factors is correct:
class BbUpper(CustomFactor):
inputs = (USEquityPricing.close,)
window_length = 20
def compute(self, today, assets, out, closes):
out[:] = np.nanmean(closes, axis=0) + 2 * np.nanstd(closes, axis=0)
class BbLower(CustomFactor):
inputs = (USEquityPricing.close,)
window_length = 20
def compute(self, today, assets, out, closes):
out[:] = np.nanmean(closes, axis=0) - 2 * np.nanstd(closes, axis=0)
class BbMiddle(CustomFactor):
inputs = (USEquityPricing.close,)
window_length = 20
def compute(self, today, assets, out, closes):
out[:] = np.nanmean(closes, axis=0)
I am not sure if I implemented selling logic correctly:
for security in context.portfolio.positions:
if security in context.sell:
order_target_percent(security, 0)