Notebook
In [1]:
from quantopian.pipeline.data import Fundamentals
from quantopian.pipeline.data import morningstar
from quantopian.research import run_pipeline
from quantopian.pipeline import Pipeline
from quantopian.pipeline.factors import Returns
from quantopian.pipeline.factors import SimpleMovingAverage
from quantopian.pipeline.factors import Latest
from quantopian.pipeline.factors import CustomFactor, AverageDollarVolume, RSI
from quantopian.pipeline.data.psychsignal import stocktwits
from quantopian.pipeline.data import USEquityPricing
from quantopian.pipeline.experimental import QTradableStocksUS
from quantopian.pipeline import CustomFactor
from quantopian.pipeline.factors.morningstar import MarketCap
from quantopian.pipeline.classifiers.morningstar import Sector
from quantopian.pipeline.data.psychsignal import aggregated_twitter_withretweets_stocktwits
from quantopian.research import symbols
from quantopian.pipeline.data.zacks import EarningsSurprises
from collections import OrderedDict

import alphalens as al
from quantopian.research import prices
import pandas as pd
import numpy as np
import talib
import matplotlib.pyplot as plt
import matplotlib as mpl
from scipy import stats
from statsmodels.tsa.stattools import adfuller
from time import time
from sklearn import linear_model, decomposition, ensemble, preprocessing, isotonic, metrics
In [10]:
def nanfill(arr):  
    mask = np.isnan(arr)  
    idx  = np.where(~mask,np.arange(mask.shape[1]),0)  
    np.maximum.accumulate(idx,axis=1, out=idx)  
    arr[mask] = arr[np.nonzero(mask)[0], idx[mask]]  
    return arr  
In [73]:
cfs = morningstar.cash_flow_statement

def make_factors():
    class Capex_To_Cashflows(CustomFactor):
        inputs=[cfs.capital_expenditure, cfs.free_cash_flow]
        window_length=10
        def compute(self, today, assets, out, capital_expenditure, free_cash_flow):
            out[:] = (capital_expenditure[-1] * 4.) / (free_cash_flow[-1] * 4.)
            
    class Capex_To_Cashflows_forwardfill(CustomFactor):
        inputs=[cfs.capital_expenditure, cfs.free_cash_flow]
        window_length=10
        def compute(self, today, assets, out, capital_expenditure, free_cash_flow):
            
            capital_expenditure = nanfill(capital_expenditure)
            free_cash_flow      = nanfill(free_cash_flow)
            
            out[:] = (capital_expenditure[-1] * 4.) / (free_cash_flow[-1] * 4.)
            #out[:] = nanfill((capital_expenditure * 4.) / (free_cash_flow * 4.))
                   
    all_factors = {
        'Capex to Cashflows': Capex_To_Cashflows,
        'Capex_To_Cashflows_forwardfill': Capex_To_Cashflows_forwardfill
    }        
    
    return all_factors
In [80]:
def make_ml_pipeline(factors):
    factors_pipe = OrderedDict()
    for name, f in factors.iteritems():
        factors_pipe[name] = f(window_length=240)
    
    pipe = Pipeline(screen=QTradableStocksUS(), columns=factors_pipe)
    
    return pipe
In [81]:
ml_pipe=make_ml_pipeline(make_factors())
In [82]:
start_timer = time()
start = pd.Timestamp("2016-02-26") # Can't choose a much longer time-period or we run out of RAM
end = pd.Timestamp("2016-03-01")

results = run_pipeline(ml_pipe, start_date=start, end_date=end)

end_timer = time()

Pipeline Execution Time: 1.21 Seconds
In [83]:
results.iloc[50:100]
Out[83]:
Capex to Cashflows Capex_To_Cashflows_forwardfill
2016-02-26 00:00:00+00:00 Equity(538 [ARW]) 0.289635 0.289635
Equity(547 [ASB]) -0.090912 -0.090912
Equity(557 [ASGN]) -0.161367 -0.161367
Equity(559 [ASH]) -17.666667 -17.666667
Equity(579 [ASTE]) -1.621968 -1.621968
Equity(600 [OA]) -0.239499 -0.239499
Equity(610 [ATNI]) -1.288844 -1.288844
Equity(612 [ATO]) 1.318712 1.318712
Equity(617 [ATRO]) -0.191250 -0.191250
Equity(624 [ATW]) -1.484712 -1.484712
Equity(630 [ADP]) -0.352404 -0.352404
Equity(659 [AMAG]) -0.017730 -0.017730
Equity(660 [AVP]) -0.194286 -0.194286
Equity(661 [AVT]) -0.569549 -0.569549
Equity(663 [AVY]) -0.470443 -0.470443
Equity(679 [AXP]) -0.189655 -0.189655
Equity(693 [AZO]) -0.426099 -0.426099
Equity(694 [AZZ]) -0.267834 -0.267834
Equity(697 [B]) -0.344868 -0.344868
Equity(698 [BA]) -0.244125 -0.244125
Equity(700 [BAC]) -0.006982 -0.006982
Equity(734 [BAX]) 0.734818 0.734818
Equity(739 [BBBY]) 29.270431 29.270431
Equity(754 [BBY]) 4.444444 4.444444
Equity(755 [BC]) -0.361497 -0.361497
Equity(766 [BCE]) NaN -0.852248
Equity(779 [BCR]) -0.144832 -0.144832
Equity(794 [BDX]) -0.437888 -0.437888
Equity(799 [BEAV]) -0.234663 -0.234663
Equity(812 [BEN]) -0.069178 -0.069178
Equity(822 [BF_B]) 2.076923 2.076923
Equity(845 [BGG]) 0.456899 0.456899
Equity(856 [BHE]) -0.112945 -0.112945
Equity(869 [BID]) 0.116570 0.116570
Equity(879 [BIO]) -0.431412 -0.431412
Equity(903 [BK]) -0.093042 -0.093042
Equity(913 [BKH]) 4.534756 4.534756
Equity(915 [BKE]) -0.766190 -0.766190
Equity(916 [WRB]) -0.098036 -0.098036
Equity(932 [BCPC]) -0.801367 -0.801367
Equity(935 [CNR]) -0.087616 -0.087616
Equity(939 [BLL]) -0.503903 -0.503903
Equity(957 [BLX]) 0.004036 0.004036
Equity(969 [BMI]) -1.623921 -1.623921
Equity(975 [BMS]) -1.037736 -1.037736
Equity(980 [BMY]) -0.806897 -0.806897
Equity(1010 [BNS]) NaN -0.852248
Equity(1016 [BOBE]) -1.220283 -1.220283
Equity(1023 [BOH]) -0.074316 -0.074316
Equity(1024 [BOKF]) 0.003720 0.003720
In [84]:
results.iloc[100:150]
Out[84]:
Capex to Cashflows Capex_To_Cashflows_forwardfill
2016-02-26 00:00:00+00:00 Equity(1028 [BXS]) -0.697435 -0.697435
Equity(1062 [BPOP]) -0.047437 -0.047437
Equity(1068 [BPT]) NaN 1960.591133
Equity(1078 [BRC]) -0.060631 -0.060631
Equity(1097 [BRO]) -0.070683 -0.070683
Equity(1131 [BSX]) -0.207101 -0.207101
Equity(1195 [CAL]) 0.594231 0.594231
Equity(1209 [CA]) -0.033846 -0.033846
Equity(1216 [CACC]) -0.009107 -0.009107
Equity(1218 [CACI]) -0.059612 -0.059612
Equity(1219 [CATO]) 1.218515 1.218515
Equity(1228 [CAG]) -0.376438 -0.376438
Equity(1234 [CAKE]) 5.301029 5.301029
Equity(1244 [CAMP]) -0.097867 -0.097867
Equity(1266 [CASY]) -3.291971 -3.291971
Equity(1267 [CAT]) -0.930769 -0.930769
Equity(1270 [CATY]) -0.034169 -0.034169
Equity(1287 [CBI]) 3.505238 3.505238
Equity(1297 [CBM]) -0.550777 -0.550777
Equity(1308 [CBRL]) -0.284285 -0.284285
Equity(1312 [CBSH]) -0.092159 -0.092159
Equity(1313 [CBU]) -0.138859 -0.138859
Equity(1315 [CBT]) -0.406780 -0.406780
Equity(1331 [CCC]) -1.309194 -1.309194
Equity(1332 [CCEP]) -0.219373 -0.219373
Equity(1335 [C]) -0.045465 -0.045465
Equity(1343 [CCK]) -0.245283 -0.245283
Equity(1374 [CDE]) -1.928006 -1.928006
Equity(1376 [CAH]) -0.067104 -0.067104
Equity(1385 [CDNS]) -0.095554 -0.095554
Equity(1402 [CEF]) NaN 108.620837
Equity(1406 [CELG]) -0.215444 -0.215444
Equity(1419 [CERN]) 0.236473 0.236473
Equity(1427 [CFR]) -0.101417 -0.101417
Equity(1460 [CGNX]) -0.056394 -0.056394
Equity(1482 [CHD]) -0.094895 -0.094895
Equity(1521 [CPK]) 1.413074 1.413074
Equity(1551 [CINF]) -0.007067 -0.007067
Equity(1577 [CKEC]) 0.441898 0.441898
Equity(1581 [CKH]) 1.869749 1.869749
Equity(1582 [CL]) -0.253541 -0.253541
Equity(1585 [CLC]) -0.338144 -0.338144
Equity(1597 [CLH]) -1.393146 -1.393146
Equity(1616 [CLX]) 20.000000 20.000000
Equity(1620 [CMA]) -0.097959 -0.097959
Equity(1636 [CMC]) -0.053593 -0.053593
Equity(1637 [CMCS_A]) -0.993195 -0.993195
Equity(1655 [CMO]) NaN -7.228215
Equity(1665 [CMS]) 1.480243 1.480243
Equity(1684 [CNA]) -0.056485 -0.056485
In [9]:
results.iloc[150:200,:]
Out[9]:
Capex to Cashflows Capex_To_Cashflows_forwardfill
2016-02-26 00:00:00+00:00 Equity(1706 [CNMD]) -0.607014 -0.607014
Equity(1722 [CMD]) -0.265065 -0.265065
Equity(1746 [COG]) -6.781369 -6.781369
Equity(1751 [COHR]) -0.501737 -0.501737
Equity(1753 [COKE]) 6.087550 6.087550
Equity(1755 [COLB]) -0.075527 -0.075527
Equity(1769 [COO]) -1.261821 -1.261821
Equity(1787 [COST]) -7.447917 -7.447917
Equity(1789 [COT]) -0.457143 -0.457143
Equity(1792 [CP]) NaN -0.457143
Equity(1795 [CPB]) -0.482993 -0.482993
Equity(1796 [CPF]) -0.048669 -0.048669
Equity(1835 [CR]) -0.111546 -0.111546
Equity(1874 [CRS]) -1.866667 -1.866667
Equity(1882 [CRUS]) -0.111794 -0.111794
Equity(1898 [CSC]) -1.853933 -1.853933
Equity(1900 [CSCO]) -0.087029 -0.087029
Equity(1909 [CSL]) -0.078753 -0.078753
Equity(1937 [CSX]) -2.009709 -2.009709
Equity(1941 [CTAS]) -0.942933 -0.942933
Equity(1942 [CTB]) -0.476827 -0.476827
Equity(1960 [CTL]) -1.083333 -1.083333
Equity(1979 [CUB]) 0.172819 0.172819
Equity(1985 [CMI]) -0.405000 -0.405000
Equity(1995 [CUZ]) 3.889360 3.889360
Equity(1999 [CVBF]) -0.021855 -0.021855
Equity(2015 [CW]) -0.082900 -0.082900
Equity(2034 [CWT]) -1.653446 -1.653446
Equity(2043 [CY]) -1.827670 -1.827670
Equity(2069 [FTR]) -2.285714 -2.285714
Equity(2071 [D]) -40.709677 -40.709677
Equity(2100 [DBD]) 0.455729 0.455729
Equity(2105 [ASNA]) 0.667145 0.667145
Equity(2109 [DCI]) -0.590659 -0.590659
Equity(2119 [DD]) 2.307190 2.307190
Equity(2126 [DDS]) 1.634812 1.634812
Equity(2127 [DE]) -0.655408 -0.655408
Equity(2169 [CVA]) -1.411765 -1.411765
Equity(2170 [DHR]) -0.187313 -0.187313
Equity(2185 [DIOD]) 18.400382 18.400382
Equity(2190 [DIS]) -1.470711 -1.470711
Equity(2212 [DLX]) -0.085657 -0.085657
Equity(2237 [DNB]) -0.240550 -0.240550
Equity(2248 [RRD]) -0.565027 -0.565027
Equity(2262 [DOV]) -0.245348 -0.245348
Equity(2263 [DOW]) -0.623142 -0.623142
Equity(2293 [DRE]) 2.572955 2.572955
Equity(2295 [LCII]) -5.702875 -5.702875
Equity(2298 [DHI]) 0.930556 0.930556
Equity(2329 [UFS]) -66.000000 -66.000000
In [ ]: