Notebook
In [1]:
# def initialize(context):
from quantopian.pipeline import Pipeline
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import ExponentialWeightedMovingAverage, EWMA
from quantopian.pipeline.factors.morningstar import MarketCap
from quantopian.research import run_pipeline
In [9]:
# def make_pipeline(context): context is optional and used only if make_pipeline will be used on an external variable

def make_pipeline():
    
    mktcap = MarketCap()
    mktcap_500 = mktcap.top(500)
    
    #Calculates EMA for security
    EMA20 = EWMA.from_span(inputs=[USEquityPricing.close], window_length=20, span=20, mask=mktcap_500)
    EMA50 = EWMA.from_span(inputs=[USEquityPricing.close], window_length=50, span=50, mask=mktcap_500)
    EMA200 = EWMA.from_span(inputs=[USEquityPricing.close], window_length=200, span=200, mask=mktcap_500)
    
    #Checks if EMA is in uptrend
    EMA2050_upcheck = (EMA20 > EMA50)
    EMA50200_upcheck = (EMA50 > EMA200)

    #Checks if EMA is in downtrend, could also use = ~ inversion filter
    EMA2050_downcheck = (EMA20 < EMA50)
    EMA50200_downcheck = (EMA50 < EMA200)
    
    EMA_uptrend = (EMA2050_upcheck & EMA50200_upcheck)
    
    #Create table and assign variables as columns   
    pipe_columns ={
            'EMA20': EMA20,
            'EMA50': EMA50,
            'EMA200': EMA200,
            'EMA2050_upcheck': EMA2050_upcheck,
            'EMA50200_upcheck': EMA50200_upcheck,
            'EMA2050_downcheck': EMA2050_downcheck,
            'EMA50200_downcheck': EMA50200_downcheck,
            'mktcap': mktcap,
            'mktcap_500': mktcap_500,  # added this as a flag to see which securities are being filtered
            'EMA_uptrend': EMA_uptrend,  #added this in place of setting a sccreen to see all results
            }
      
    #outputs table with columns (can omit to remove columns), and screens to only show securities where EMA_uptrend is TRUE
    return Pipeline(pipe_columns)
    
In [10]:
# def before_trading_start(context, data):
In [11]:
# def compute_weights(context):
In [12]:
# def rebalance(context,data):
In [13]:
# def record_vars(context, data):
In [18]:
my_pipe = make_pipeline()
#mktCap = MarketCap()
#my_pipe.add(mktCap, 'mktCap')
result = run_pipeline(my_pipe, '2012-05-17', '2012-05-17')
result.sort_values('mktcap', ascending=False).head(501)
Out[18]:
EMA20 EMA200 EMA2050_downcheck EMA2050_upcheck EMA50 EMA50200_downcheck EMA50200_upcheck EMA_uptrend mktcap mktcap_500
2012-05-17 00:00:00+00:00 Equity(24 [AAPL]) 569.205039 501.758688 True False 584.813559 False True False 5.460580e+11 True
Equity(8347 [XOM]) 83.605027 82.202334 True False 84.230097 False True False 4.037400e+11 True
Equity(21439 [PTR]) 139.372071 138.172763 True False 141.736273 False True False 2.723720e+11 True
Equity(5061 [MSFT]) 30.832716 29.218556 True False 31.182746 False True False 2.689540e+11 True
Equity(3766 [IBM]) 201.809315 192.743650 True False 202.836232 False True False 2.388640e+11 True
Equity(27470 [RDS_B]) 69.156111 69.968955 True False 69.730233 True False False 2.331910e+11 True
Equity(27487 [RDS_A]) 66.950982 68.609106 True False 68.051716 True False False 2.274060e+11 True
Equity(25066 [CHL]) 54.694511 51.005186 False True 54.087494 False True True 2.221580e+11 True
Equity(23112 [CVX]) 102.295060 102.866763 True False 103.419898 False True False 2.102080e+11 True
Equity(8229 [WMT]) 58.968484 58.222535 True False 59.437470 False True False 2.083580e+11 True
Equity(3149 [GE]) 19.136566 18.249550 True False 19.335305 False True False 2.073000e+11 True
Equity(863 [BHP]) 69.973281 73.433060 True False 71.215766 True False False 1.986740e+11 True
Equity(1091 [BRK_A]) 121815.625515 117627.572598 False True 121274.306018 False True True 1.986000e+11 True
Equity(26578 [GOOG_L]) 609.949008 606.190218 True False 616.417741 False True False 1.971960e+11 True
Equity(6653 [T]) 32.945132 30.084717 False True 32.064845 False True True 1.929510e+11 True
Equity(11100 [BRK_B]) 80.949971 78.338753 False True 80.709348 False True True 1.889470e+11 True
Equity(4151 [JNJ]) 64.359608 64.147915 True False 64.535036 False True False 1.787890e+11 True
Equity(8151 [WFC]) 32.909709 29.943518 True False 33.118749 False True False 1.775650e+11 True
Equity(5938 [PG]) 64.303156 64.488421 True False 65.235944 False True False 1.743800e+11 True
Equity(5923 [PFE]) 22.492709 20.932228 False True 22.264712 False True True 1.726070e+11 True
Equity(4283 [KO]) 76.613330 70.349804 False True 74.869384 False True True 1.723260e+11 True
Equity(25165 [BBL]) 60.193437 61.551935 True False 61.064240 True False False 1.720950e+11 True
Equity(25006 [JPM]) 39.880087 38.318291 True False 41.965409 False True False 1.636110e+11 True
Equity(20373 [HSBC]) 43.994140 41.896418 False True 43.964174 False True True 1.626540e+11 True
Equity(21916 [PBR]) 21.541190 25.881142 True False 23.354916 True False False 1.535660e+11 True
Equity(35902 [PM]) 87.035152 79.799236 True False 87.267390 False True False 1.526650e+11 True
Equity(5692 [ORCL]) 27.890467 28.919688 True False 28.529143 True False False 1.462680e+11 True
Equity(22467 [PBR_A]) 20.612717 24.375930 True False 22.369623 True False False 1.445330e+11 True
Equity(3951 [INTC]) 27.481188 25.792101 True False 27.642155 False True False 1.428550e+11 True
Equity(19675 [BP]) 40.138716 42.439679 True False 41.781178 True False False 1.376080e+11 True
... ... ... ... ... ... ... ... ... ... ...
Equity(20208 [FFIV]) 128.205324 117.690389 True False 129.605490 False True False 1.058520e+10 True
Equity(40755 [NLSN]) 28.773253 29.002583 True False 29.185863 False True False 1.054180e+10 True
Equity(32046 [QVCA]) 18.340348 17.580180 True False 18.619513 False True False 1.051920e+10 True
Equity(32043 [QVCB]) NaN NaN False False NaN False False False 1.048570e+10 True
Equity(8354 [XRX]) 7.644061 7.946854 True False 7.831020 True False False 1.048550e+10 True
Equity(14884 [BVN]) 38.752605 40.174601 True False 39.650038 True False False 1.047270e+10 True
Equity(13612 [BAP]) 127.126100 116.620791 True False 128.233729 False True False 1.044140e+10 True
Equity(18513 [YZC]) 19.469174 NaN True False 20.610243 False False False 1.041720e+10 True
Equity(2 [ARNC]) 9.191205 9.937090 True False 9.544858 True False False 1.037900e+10 True
Equity(16586 [AMTD]) 17.991425 17.470737 True False 18.600802 False True False 1.030320e+10 True
Equity(4094 [IX]) 45.165579 45.521424 True False 46.249300 False True False 1.025540e+10 True
Equity(22247 [NXY]) 17.439779 18.022862 True False 18.098761 False True False 1.023450e+10 True
Equity(4823 [MGA]) 43.156960 41.624065 True False 44.734507 False True False 1.023280e+10 True
Equity(9189 [KGC]) 8.097285 11.110754 True False 8.807124 True False False 1.019330e+10 True
Equity(4010 [IR]) 42.636182 37.111635 False True 41.689721 False True True 1.013870e+10 True
Equity(19147 [RSG]) 27.120406 28.594703 True False 28.661539 False True False 1.013320e+10 True
Equity(8132 [WDC]) 39.956641 36.054527 True False 40.180137 False True False 1.012940e+10 True
Equity(3306 [GPC]) 64.465066 60.936556 False True 63.906542 False True True 1.009980e+10 True
Equity(24547 [EGO]) 12.125619 14.755662 True False 12.938481 True False False 1.008730e+10 True
Equity(42173 [DLPH]) 29.196193 NaN True False 30.330109 False False False 1.007380e+10 True
Equity(1283 [CBE]) 60.806409 57.933729 True False 61.667546 False True False 9.952990e+09 True
Equity(12099 [RELX]) 32.706121 32.505007 True False 33.044455 False True False 9.937030e+09 True
Equity(22876 [FIS]) 32.825247 29.704506 True False 32.872351 False True False 9.926040e+09 True
Equity(6543 [ROP]) 101.137814 91.858892 False True 100.012974 False True True 9.873360e+09 True
Equity(17116 [RYAA_Y]) 34.084180 32.095077 True False 34.413508 False True False 9.801960e+09 True
Equity(938 [OIBR]) 14.643007 13.847629 False True 14.425563 False True True 9.801930e+09 True
Equity(24833 [FLR]) 54.952378 56.789967 True False 57.252777 False True False 9.766630e+09 True
Equity(17632 [CHRW]) 61.101298 65.458187 True False 62.765067 True False False 9.720650e+09 True
Equity(67 [ADSK]) 37.450935 36.169578 True False 38.993981 False True False 9.619340e+09 True
Equity(166 [AES]) NaN NaN False False NaN False False False 9.608970e+09 False

501 rows × 10 columns

In [126]:
from quantopian.pipeline.factors.morningstar import MarketCap
mktcap = MarketCap()
print mktcap
MarketCap((valuation.market_cap::float64,), window_length=1)
In [ ]: