I would like to build some custom indicators for an Alpha Model. 

in this case I would like to replace a standard momentum indicator with a exponetial slope, like suggested by Andreas Clenow in his book.

Does someone have an clue why this is not working. During debugging I do not get any value for input.Close in the class for the custom indicator, but i'm just using this example which is similar

https://www.quantconnect.com/forum/discussion/3383/custom-indicator-in-python-algorithm/p1

Thanks

Carsten

from datetime import timedelta import numpy as np from scipy import stats from collections import deque class CustomSlope(PythonIndicator): def __init__(self, name, period): self.Name = name self.Time = datetime.min self.Value = 0 self.queue = deque(maxlen=period) # Update method is mandatory def Update(self, input): y= [np.log(float(data)) for data in input.Close] x = [range(len(y))] slope,r_value = stats.linregress(x,y)[0],stats.linregress(x,y)[2] return slope class MOMAlphaModel(AlphaModel): def __init__(self): self.mom = [] self.cslope = CustomSlope('custom', 100) if not self.cslope.IsReady: return def OnSecuritiesChanged(self, algorithm, changes): for security in changes.AddedSecurities: symbol = security.Symbol #self.mom.append({"symbol":symbol, "indicator":algorithm.MOM(symbol, 100, Resolution.Daily)}) algorithm.RegisterIndicator(symbol, self.cslope, Resolution.Daily) self.mom.append({"symbol":symbol, "indicator":self.cslope.Value}) def Update(self, algorithm, data): insights = [] ordered = sorted(self.mom, key=lambda kv: kv["indicator"].Current.Value, reverse=True)[:4] for x in ordered: symbol = x['symbol'] insights.append( Insight.Price(symbol, timedelta(1), InsightDirection.Up) ) return insights

 

Author