I'm trying to calculate some simple tech indicator by using Pipeline and by simply calculating mean of last 20 days.
And numbers were mismatching.
from quantopian.pipeline import CustomFactor, Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.factors import SimpleMovingAverage
from quantopian.pipeline.data.builtin import USEquityPricing
import pandas as pd
security = symbols('SPY')
def make_pipeline():
sma = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=20)
latest_close = USEquityPricing.close.latest
return Pipeline(
columns = {
'latest_close':latest_close,
'sma':sma
},
)
result = run_pipeline(make_pipeline(), '2016-01-01', '2016-06-30')
result = result.reset_index()
result = result[result['level_1']==security][['level_0','latest_close','sma']]
result = result.rename(columns={'level_0':'date'}).set_index('date')
print 'factor',result.tail(1)['sma'].values[0]
print 'calulation',result.tail(20)['latest_close'].mean()
factor 207.688491281
calulation 208.232578
maybe I doesn't understand some theoretical concept about SMA ???