import numpy, datetime
from quantopian.research import run_pipeline
from quantopian.pipeline import Pipeline, CustomFactor
from quantopian.pipeline.data.builtin import USEquityPricing
class DailyReturn(CustomFactor):
inputs = [USEquityPricing.close] ### Default is only using close price
window_length = 2 ### Default is only using today and yesterday
def compute(self, today, asset_ids, out, values):
out[:] = (values[1]-values[0])/values[0]
class DailyClose(CustomFactor):
inputs = [USEquityPricing.close] ### Default is using close price
window_length = 1 ### Default is using today's data only
def compute(self, today, asset_ids, out, values):
out[:] = values[0]
def make_pipeline():
r = DailyReturn()
c = DailyClose()
y = DailyClose(window_length=2)
return Pipeline(columns= {
'_return':r,
'close':c,
'yesterday':y
})
def date_str(d):
return ("%s-%s-%s" % (d.year, d.month, d.day))
#today = date_str(datetime.date.today()-datetime.timedelta(0));
today = date_str(datetime.date.today()-datetime.timedelta(1));
print "Today: "+today
my_pipe = make_pipeline()
result = run_pipeline(my_pipe,today,today)
result.sort_values(by='_return',ascending=False,inplace=True,na_position='last')
result.head(30)
type(result)
print result.head(5).index.values[0]
type(result.head(5).index.values[0])
type(result.head(5).index.values[0][1])
dir(result.head(5).index.values[0][1])
def getSidList(df):
return map(lambda a: a[1].sid, df.index.values)
print getSidList(result.head(30))
def getSymbolList(df):
return map(lambda a: str(a[1].symbol), df.index.values)
print getSymbolList(result.head(30))