Notebook
In [5]:
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)
Today: 2017-3-21
Out[5]:
_return close yesterday
2017-03-21 00:00:00+00:00 Equity(44989 [ESPR]) 0.741350 41.270 23.700
Equity(24572 [NKTR]) 0.427097 22.120 15.500
Equity(42247 [MEMP]) 0.405172 0.163 0.116
Equity(48635 [BLPH]) 0.343137 1.370 1.020
Equity(49859 [VKTX_W]) 0.296296 0.350 0.270
Equity(49470 [CTMX]) 0.242763 18.890 15.200
Equity(15531 [MVIS]) 0.239234 2.590 2.090
Equity(49782 [DRIO_W]) 0.232877 0.900 0.730
Equity(39 [DDC]) 0.229839 12.200 9.920
Equity(33985 [YGE]) 0.183784 2.190 1.850
Equity(22382 [MCF]) 0.177172 6.910 5.870
Equity(49534 [WINS]) 0.173077 305.000 260.000
Equity(44882 [BIOA_WS]) 0.166667 0.070 0.060
Equity(26776 [NAK]) 0.163569 1.565 1.345
Equity(26150 [HOS]) 0.162754 3.715 3.195
Equity(48912 [HRMN_W]) 0.162228 0.480 0.413
Equity(49906 [JSYN_W]) 0.160000 0.290 0.250
Equity(47621 [AUPH]) 0.143229 8.780 7.680
Equity(20158 [TST]) 0.138889 0.820 0.720
Equity(25805 [TZOO]) 0.137725 9.500 8.350
Equity(48015 [VRAY]) 0.134775 6.820 6.010
Equity(42477 [UGAZ]) 0.127075 19.690 17.470
Equity(50160 [KDMN]) 0.121051 4.010 3.577
Equity(3265 [GLF]) 0.120321 0.419 0.374
Equity(38827 [OMER]) 0.117759 11.770 10.530
Equity(35961 [NOG]) 0.112245 2.725 2.450
Equity(50036 [ONSI_W]) 0.110937 0.711 0.640
Equity(27247 [XRM]) 0.109937 5.250 4.730
Equity(46836 [WHLR_W]) 0.108696 0.051 0.046
Equity(1602 [CLSN]) 0.107407 0.299 0.270
In [53]:
type(result)
Out[53]:
<class 'pandas.core.frame.DataFrame'>
In [61]:
print result.head(5).index.values[0]
(Timestamp('2017-03-21 00:00:00+0000', tz='UTC'), Equity(44989, symbol=u'ESPR', asset_name=u'ESPERION THERAPEUTICS INC', exchange=u'NASDAQ', start_date=Timestamp('2013-06-25 00:00:00+0000', tz='UTC'), end_date=Timestamp('2017-03-21 00:00:00+0000', tz='UTC'), first_traded=None, auto_close_date=Timestamp('2017-03-24 00:00:00+0000', tz='UTC'), exchange_full=u'NASDAQ GLOBAL MARKET'))
In [58]:
type(result.head(5).index.values[0])
Out[58]:
<type 'tuple'>
In [59]:
type(result.head(5).index.values[0][1])
Out[59]:
<type 'zipline.assets._assets.Equity'>
In [60]:
dir(result.head(5).index.values[0][1])
Out[60]:
['asset_name',
 'auto_close_date',
 'end_date',
 'exchange',
 'exchange_full',
 'first_traded',
 'from_dict',
 'is_alive_for_session',
 'is_exchange_open',
 'security_end_date',
 'security_name',
 'security_start_date',
 'sid',
 'start_date',
 'symbol',
 'to_dict']
In [62]:
def getSidList(df):
    return map(lambda a: a[1].sid, df.index.values)

print getSidList(result.head(30))
        
[44989, 24572, 42247, 48635, 49859, 49470, 15531, 49782, 39, 33985, 22382, 49534, 44882, 26776, 26150, 48912, 49906, 47621, 20158, 25805, 48015, 42477, 50160, 3265, 38827, 35961, 50036, 27247, 46836, 1602]
In [70]:
def getSymbolList(df):
    return map(lambda a: str(a[1].symbol), df.index.values)

print getSymbolList(result.head(30))
['ESPR', 'NKTR', 'MEMP', 'BLPH', 'VKTX_W', 'CTMX', 'MVIS', 'DRIO_W', 'DDC', 'YGE', 'MCF', 'WINS', 'BIOA_WS', 'NAK', 'HOS', 'HRMN_W', 'JSYN_W', 'AUPH', 'TST', 'TZOO', 'VRAY', 'UGAZ', 'KDMN', 'GLF', 'OMER', 'NOG', 'ONSI_W', 'XRM', 'WHLR_W', 'CLSN']
In [ ]: