Notebook

Scoring based upon multiple conditions

Sometimes it's easier doing logic outside of the pipeline. Conditional scoring is probably one of those times. This is a sample of how pipeline output can be appended with a score based upon logical conditions.

The 'score' column could be used as the alpha objective in 'order_optimal_portfolio()' or analyzed using Alphalens.

In [1]:
# Import pipeline stuff
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline, volumes, prices

# Import the data we need
from quantopian.pipeline.data import Fundamentals, USEquityPricing

# Import the filters and factors and classifiers we want to use
from quantopian.pipeline.factors import SimpleMovingAverage, ExponentialWeightedMovingAverage, Returns, MACDSignal, VWAP
from quantopian.pipeline.filters import QTradableStocksUS
from quantopian.pipeline.classifiers.fundamentals import Sector

# Import pandas and numpy because they rock
import pandas as pd
import numpy as np
In [2]:
# First create a pipeline to fetch all the data factors we need
def make_pipeline():
    # base universe filter
    base_universe = QTradableStocksUS()
    
    # factors
    roe = Fundamentals.roe.latest
    sma_200 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=200, mask=base_universe)
    sma_20 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=20, mask=base_universe)
    ema_9 = ExponentialWeightedMovingAverage(inputs=[USEquityPricing.close], window_length=9, decay_rate=0.875, mask=base_universe)
    ema_12 = ExponentialWeightedMovingAverage(inputs=[USEquityPricing.close], window_length=12, decay_rate=0.875, mask=base_universe)
    ema_26 = ExponentialWeightedMovingAverage(inputs=[USEquityPricing.close], window_length=26, decay_rate=0.875, mask=base_universe)
    macd = MACDSignal()
    volume = USEquityPricing.volume.latest
    price = USEquityPricing.close.latest
    average_volume = SimpleMovingAverage(inputs=[USEquityPricing.volume], window_length=200, mask=base_universe)
    recent_change = Returns(window_length=2, mask=base_universe)
    year_performance = Returns(window_length=365, mask=base_universe)
    month_performance = Returns(window_length=20, mask=base_universe)
    week_performance = Returns(window_length=5, mask=base_universe)
    eps = Fundamentals.basic_eps_earnings_reports.latest
    eps_growth = Fundamentals.diluted_eps_growth.latest
    
    # additional filters based upon above factors
    volume_filter = volume > 500000
    average_volume_filter = average_volume > 500000
    
    # redefine our universe
    universe = base_universe & volume_filter & average_volume_filter
    
    # create our pipeline with all the data factors
    return Pipeline(
        columns = {'roe' : roe,
                   'sma_200' : sma_200,
                   'sma_20' : sma_20,
                   'ema_9' : ema_9,
                   'ema_12' : ema_12,
                   'ema_26' : ema_26,
                   'macd' : macd,
                   'volume' : volume,
                   'price' : price,
                   'average_volume' : average_volume,
                   'recent_change' : recent_change,
                   'year_performance' : year_performance,
                   'month_performance' : month_performance,
                   'week_performance' : week_performance,
                   'eps' : eps,
                   'eps_growth' : eps_growth,
                   },
        screen = universe
    )
In [3]:
# run the pipeline
period_start = '2017-01-10'
period_end = '2018-06-10'

pipeline_output = run_pipeline(make_pipeline(), period_start, period_end)
pipeline_output
Out[3]:
average_volume ema_12 ema_26 ema_9 eps eps_growth macd month_performance price recent_change roe sma_20 sma_200 volume week_performance year_performance
2017-01-10 00:00:00+00:00 Equity(2 [ARNC]) 6.214499e+06 19.790960 19.924127 19.768123 0.339999 0.222222 -0.300563 -0.063791 20.400 -0.014493 0.012336 20.124250 27.094297 4069665.0 0.063054 -0.303045
Equity(24 [AAPL]) 2.902304e+07 117.044983 116.602975 117.108078 1.690000 -0.142132 1.193401 0.044226 119.000 0.009244 0.070756 116.256150 105.744183 27278020.0 0.024625 0.002871
Equity(62 [ABT]) 7.736315e+06 39.387723 39.244869 39.539104 -0.220000 -0.211538 0.166790 0.039276 40.750 -0.000736 -0.015874 38.913000 40.478410 7688771.0 0.044069 -0.172382
Equity(64 [GOLD]) 1.687286e+07 16.232648 15.988255 16.507153 0.150000 0.250000 0.326060 0.097671 16.970 0.002955 0.023553 15.374500 17.732883 14799746.0 0.034756 1.433398
Equity(67 [ADSK]) 1.482925e+06 76.935821 76.965313 77.150202 -0.640000 0.600000 -0.088092 -0.018740 79.590 0.003657 -0.119383 76.940000 64.977550 974423.0 0.044900 0.573236
Equity(76 [TAP]) 1.393785e+06 98.398495 98.254158 98.551010 0.940000 9.444444 0.182888 -0.007573 98.290 -0.015229 0.020484 98.138500 99.860052 1017369.0 0.004394 0.432437
Equity(114 [ADBE]) 1.866924e+06 105.564046 105.366817 105.634725 0.540000 0.588235 0.358203 0.040840 108.570 0.002493 0.037282 105.110000 100.708900 2095251.0 0.049188 0.335589
Equity(122 [ADI]) 1.765959e+06 72.518541 72.542752 72.359232 0.960000 2.064516 0.038528 -0.016544 71.930 0.004609 0.058362 72.912500 61.982905 1789326.0 -0.007862 0.275310
Equity(128 [ADM]) 2.560810e+06 45.427404 45.511228 45.425575 0.580000 0.414634 0.063948 -0.038453 44.760 0.000894 0.019379 45.804000 41.975124 2890039.0 -0.030749 -0.021170
Equity(154 [AEM]) 1.959719e+06 42.844289 42.081018 43.468443 0.220000 21.000000 1.057750 0.152781 44.140 -0.016927 0.011178 40.317500 47.762068 1488978.0 0.025319 1.070869
Equity(161 [AEP]) 1.973796e+06 62.894875 62.703369 62.867254 -1.560000 0.159091 0.636868 0.021810 62.310 -0.013145 -0.042892 62.683300 63.959499 1814280.0 -0.007012 0.168446
Equity(166 [AES]) 4.123003e+06 11.652653 11.679328 11.629371 0.260000 0.000000 -0.020289 -0.032691 11.540 -0.023689 0.061969 11.785500 11.672962 2876120.0 -0.010292 -0.044832
Equity(168 [AET]) 1.925911e+06 123.895788 124.413162 123.807387 1.720000 0.069182 -1.366145 -0.044372 122.940 -0.008451 0.033555 125.006049 116.809309 1885624.0 0.002849 0.091823
Equity(185 [AFL]) 1.493083e+06 69.969728 69.883661 69.927639 1.540000 0.159091 0.119663 0.007097 69.530 -0.009403 0.027749 69.818500 69.733200 1137239.0 -0.003440 0.127115
Equity(197 [AGCO]) 7.084119e+05 59.290075 59.163241 59.525364 0.500000 -0.350649 0.232640 0.002652 60.490 -0.000826 0.013736 58.764250 51.145078 769106.0 0.037564 0.118985
Equity(216 [HES]) 3.236753e+06 62.365424 62.353790 62.177031 -1.120000 -0.984238 0.671298 -0.030575 60.610 -0.020840 -0.017570 62.919747 55.019057 1681486.0 -0.035180 0.033585
Equity(239 [AIG]) 5.034811e+06 66.035008 66.004865 65.979973 0.430000 -0.750000 0.230592 0.008354 66.390 -0.006286 0.005173 66.098700 57.946488 3608667.0 0.019362 0.061593
Equity(266 [AJG]) 7.975199e+05 52.407520 52.142276 52.476391 0.690000 -0.080000 0.576779 0.032512 52.400 -0.013925 0.033707 51.771000 48.097723 674346.0 0.003063 0.155234
Equity(270 [AKRX]) 1.288508e+06 22.260533 21.908773 22.383092 0.380000 -0.025641 0.668427 0.214785 22.595 0.001551 0.060327 21.344000 26.630795 969092.0 0.023324 -0.512303
Equity(300 [ALK]) 1.146244e+06 88.419024 88.418291 88.167863 2.080000 -0.032710 0.576682 -0.026275 87.460 0.005519 0.093243 88.855000 71.393377 917362.0 -0.006136 0.187986
Equity(337 [AMAT]) 1.053200e+07 32.458273 32.431404 32.403583 0.560000 0.964286 0.103068 0.013292 32.780 0.023096 0.086919 32.494100 26.661112 8011942.0 0.026621 0.919082
Equity(351 [AMD]) 3.292217e+07 11.462948 11.294552 11.449041 -0.500000 0.000000 0.475765 0.111756 11.490 0.015018 -1.764706 11.210500 6.268070 35905881.0 0.006130 4.953368
Equity(353 [AME]) 1.501360e+06 49.392624 49.455431 49.392132 0.560000 -0.138462 -0.061878 -0.024371 49.640 -0.008786 0.038838 49.557000 47.634311 1057273.0 0.008738 -0.059788
Equity(368 [AMGN]) 2.338714e+06 151.941654 151.031241 152.679705 2.700000 0.098361 1.686551 0.107564 158.880 0.013395 0.066233 149.157500 156.626521 3305884.0 0.054070 -0.041023
Equity(448 [APA]) 2.996922e+06 63.905226 64.362552 63.526223 -1.600000 -0.484252 -0.633317 -0.062810 62.370 -0.012039 -0.089193 65.359500 57.009583 1852597.0 -0.021801 0.377069
Equity(455 [APC]) 4.047218e+06 70.759346 70.718306 70.733232 -1.610000 -0.733333 0.415491 -0.006532 69.960 -0.024948 -0.069763 70.853050 57.159735 3147926.0 -0.004128 -0.075734
Equity(460 [APD]) 8.838905e+05 144.701384 145.132252 144.554802 1.820000 0.139241 -0.624670 -0.015629 146.340 0.013786 0.055788 145.964726 135.162614 1407992.0 0.020573 0.160826
Equity(547 [ASB]) 7.144024e+05 24.945257 24.894200 24.921241 0.340000 0.096774 0.231386 -0.015968 24.650 -0.014000 0.017470 24.922500 19.489462 852737.0 -0.008048 0.293538
Equity(624 [ATW]) 3.887580e+06 13.228627 13.192371 13.195538 0.060000 -0.974138 0.389548 -0.038889 12.975 -0.022599 0.001317 13.386750 9.981620 3445642.0 -0.048754 -0.385431
Equity(630 [ADP]) 1.376318e+06 103.047967 102.352326 103.099688 0.820000 0.125000 1.717379 0.043478 102.480 -0.006110 0.084451 101.588500 90.096276 873589.0 -0.009759 0.326834
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2018-06-11 00:00:00+00:00 Equity(50537 [WRD]) 6.155387e+05 26.990341 26.903314 27.037621 -1.240000 -0.759280 0.146990 -0.018552 26.980 -0.028798 -0.113377 26.619000 17.843195 930026.0 -0.013168 0.873611
Equity(50612 [FRAC]) 9.763249e+05 14.240590 14.577042 14.061579 -0.070000 7.250000 -0.525989 -0.147355 13.540 -0.040397 -0.016099 15.218150 15.613290 1883409.0 -0.011679 NaN
Equity(50633 [JAG]) 1.009250e+06 11.467623 11.824443 11.374350 -0.180000 NaN -0.707635 -0.150189 11.260 -0.028054 -0.054926 12.309500 13.559845 1492820.0 0.036355 NaN
Equity(50634 [JELD]) 6.137987e+05 28.326983 28.371890 28.380789 0.380000 0.093023 -0.197444 0.036585 29.750 0.009844 0.048976 28.199000 34.259850 678792.0 0.081818 NaN
Equity(50642 [INVH]) 1.906039e+06 22.085080 22.158127 22.117986 -0.030000 NaN -0.253363 -0.059847 22.150 -0.004047 -0.002059 22.185250 22.487022 1676735.0 -0.008949 NaN
Equity(50683 [SNAP]) 2.423540e+07 12.150359 11.904663 12.363289 -0.300000 0.000000 0.293397 0.186594 13.100 0.029227 -0.133393 11.323600 14.641250 28415200.0 0.063312 NaN
Equity(50690 [CJ]) 6.462748e+05 26.452627 27.119124 26.160036 0.310000 -0.670213 -1.135384 -0.142177 25.220 -0.044335 0.015518 28.200500 28.936875 912186.0 -0.019059 NaN
Equity(50713 [GOOS]) 7.555158e+05 42.368693 41.801241 42.739788 NaN 0.696970 1.284315 0.166037 43.190 0.011357 0.241191 40.807500 29.797460 642714.0 0.000463 NaN
Equity(50716 [DXC]) 1.102310e+06 83.538832 84.246251 83.401273 1.970000 -0.279851 -1.622825 -0.054687 85.550 0.013746 0.042547 84.905047 83.387865 1119996.0 0.014948 NaN
Equity(50718 [PUMP]) 1.432430e+06 15.762405 16.411949 15.370608 0.440000 2.230769 -1.030629 -0.257560 14.240 -0.071708 0.084975 17.702000 16.867245 4314899.0 -0.049399 NaN
Equity(50735 [AYX]) 5.555456e+05 35.629330 35.068447 36.100845 -0.090000 NaN 0.823563 0.134971 37.420 0.015744 -0.033498 33.718950 28.189095 530804.0 0.061862 NaN
Equity(50749 [BTU]) 9.282912e+05 45.156250 44.300500 45.688586 0.830000 -0.867955 1.862912 0.212342 46.850 -0.000640 0.027896 42.845398 35.838760 627012.0 0.029897 NaN
Equity(50758 [OKTA]) 1.232515e+06 53.626650 52.813624 54.028859 -0.210000 NaN 2.007748 0.015449 51.270 0.007665 -0.154218 51.853000 34.081580 3326694.0 -0.106483 NaN
Equity(50763 [SNDR]) 5.182494e+05 29.076670 28.979434 29.079405 0.270000 0.928571 0.374297 0.019553 29.200 0.025641 0.024891 28.947500 26.374914 651804.0 -0.002051 NaN
Equity(50780 [HCC]) 7.708998e+05 28.501582 28.231698 28.812823 3.360000 0.631068 0.664276 0.085448 29.090 -0.023826 0.358128 27.574000 19.463721 941568.0 0.022496 NaN
Equity(50781 [YEXT]) 5.338812e+05 16.659455 16.332991 16.933617 -0.190000 NaN 0.679567 0.203804 17.720 0.040517 -0.224258 15.692500 12.904195 1246476.0 0.010839 NaN
Equity(50782 [UPL]) 2.836674e+06 1.823934 1.886417 1.817120 0.240000 -0.563636 -0.140508 0.112069 1.935 -0.007692 -0.014423 1.916200 6.287430 3789396.0 0.131579 NaN
Equity(50807 [CVNA]) 5.371846e+05 31.073384 30.275009 31.845982 -0.530000 NaN 1.251171 0.309818 36.020 0.020108 -0.387596 28.466750 20.185620 1079891.0 0.211775 NaN
Equity(50810 [CLDR]) 1.594726e+06 16.424195 16.341594 16.490016 -0.350000 NaN 0.262591 0.010645 16.140 0.006862 -0.163985 16.186650 17.041130 3031891.0 -0.045535 NaN
Equity(50860 [VST]) 3.338367e+06 24.369951 24.142580 24.452913 -0.710000 NaN 0.408498 0.070619 24.560 -0.004459 -0.049347 23.762250 19.787400 2049582.0 0.012784 NaN
Equity(50869 [GDI]) 7.218188e+05 32.722689 32.893141 32.595675 0.210000 -0.753086 -0.078448 -0.047833 31.850 -0.038055 0.027854 33.343200 30.773420 1156133.0 -0.020271 NaN
Equity(50891 [CARS]) 1.140657e+06 26.396206 26.171581 26.670578 0.010000 -0.995283 0.082126 0.063535 27.620 0.002541 0.000553 25.470750 27.237545 1519961.0 0.050190 NaN
Equity(50900 [SGH]) 5.093431e+05 45.780097 45.647080 45.842289 1.680000 0.739130 0.648566 -0.100369 41.410 -0.089890 0.299553 45.750500 35.200925 3034081.0 -0.109462 NaN
Equity(50910 [JHG]) 6.078668e+05 31.671008 31.850022 31.578723 0.820000 1.157895 -0.273417 -0.055793 31.950 -0.003089 0.033959 32.216519 34.413490 594331.0 0.025024 NaN
Equity(50970 [ATUS]) 2.020238e+06 17.574342 17.506237 17.699209 -0.170000 NaN 0.318401 0.087292 17.790 0.004517 -0.023683 17.503757 19.549919 8075811.0 -0.007540 NaN
Equity(50990 [APRN]) 2.920812e+06 3.182443 3.106911 3.202237 -0.170000 0.000000 0.196177 0.302041 3.190 0.000000 -0.150543 2.980750 3.536865 1993861.0 -0.056213 NaN
Equity(51012 [BHGE]) 3.640783e+06 34.559140 34.823261 34.437937 0.170000 1.428571 -0.447548 -0.024475 34.700 0.000577 0.004834 35.264086 32.300848 2488753.0 0.061812 NaN
Equity(51046 [BHF]) 6.194677e+05 47.082689 47.272606 46.916890 -0.560000 NaN -0.522199 -0.029516 46.690 -0.000214 -0.004765 47.551000 55.997820 524457.0 -0.004478 NaN
Equity(51079 [RDFN]) 8.697728e+05 22.500820 22.444384 22.576709 -0.440000 NaN 0.059586 0.003050 23.020 0.006559 -0.163887 22.232500 23.602725 614478.0 0.041158 NaN
Equity(51157 [DWDP]) 5.797952e+06 67.459544 67.343623 67.678945 0.470000 -0.347222 0.379802 0.044464 69.480 0.001153 0.010893 66.933877 68.877571 4364725.0 0.035315 NaN

364243 rows × 16 columns

Now that we have all our data returned in a dataframe we can calculate a score based upon that data.

In [4]:
# Make a couple of helper functions to add and subtract from score
# This makes the rules easier to read
# Also, implements the try-except logic which would clutter the code a lot if in line

def add_to_score_if(rule, amount=1, df=pipeline_output, score_field='score'):
    try:
        df[score_field].loc[df.query(rule).index] += amount
    except:
        pass

def subtract_from_score_if(rule, amount=1, df=pipeline_output, score_field='score'):
    try:
        df[score_field].loc[df.query(rule).index] -= amount
    except:
        pass    
In [5]:
# Start by adding a column to the output for score
pipeline_output['score'] = 0



# Display the output. Notice the last column is the new calculated score
pipeline_output
Out[5]:
average_volume ema_12 ema_26 ema_9 eps eps_growth macd month_performance price recent_change roe sma_20 sma_200 volume week_performance year_performance score
2017-01-10 00:00:00+00:00 Equity(2 [ARNC]) 6.214499e+06 19.790960 19.924127 19.768123 0.339999 0.222222 -0.300563 -0.063791 20.400 -0.014493 0.012336 20.124250 27.094297 4069665.0 0.063054 -0.303045 0
Equity(24 [AAPL]) 2.902304e+07 117.044983 116.602975 117.108078 1.690000 -0.142132 1.193401 0.044226 119.000 0.009244 0.070756 116.256150 105.744183 27278020.0 0.024625 0.002871 0
Equity(62 [ABT]) 7.736315e+06 39.387723 39.244869 39.539104 -0.220000 -0.211538 0.166790 0.039276 40.750 -0.000736 -0.015874 38.913000 40.478410 7688771.0 0.044069 -0.172382 0
Equity(64 [GOLD]) 1.687286e+07 16.232648 15.988255 16.507153 0.150000 0.250000 0.326060 0.097671 16.970 0.002955 0.023553 15.374500 17.732883 14799746.0 0.034756 1.433398 0
Equity(67 [ADSK]) 1.482925e+06 76.935821 76.965313 77.150202 -0.640000 0.600000 -0.088092 -0.018740 79.590 0.003657 -0.119383 76.940000 64.977550 974423.0 0.044900 0.573236 0
Equity(76 [TAP]) 1.393785e+06 98.398495 98.254158 98.551010 0.940000 9.444444 0.182888 -0.007573 98.290 -0.015229 0.020484 98.138500 99.860052 1017369.0 0.004394 0.432437 0
Equity(114 [ADBE]) 1.866924e+06 105.564046 105.366817 105.634725 0.540000 0.588235 0.358203 0.040840 108.570 0.002493 0.037282 105.110000 100.708900 2095251.0 0.049188 0.335589 0
Equity(122 [ADI]) 1.765959e+06 72.518541 72.542752 72.359232 0.960000 2.064516 0.038528 -0.016544 71.930 0.004609 0.058362 72.912500 61.982905 1789326.0 -0.007862 0.275310 0
Equity(128 [ADM]) 2.560810e+06 45.427404 45.511228 45.425575 0.580000 0.414634 0.063948 -0.038453 44.760 0.000894 0.019379 45.804000 41.975124 2890039.0 -0.030749 -0.021170 0
Equity(154 [AEM]) 1.959719e+06 42.844289 42.081018 43.468443 0.220000 21.000000 1.057750 0.152781 44.140 -0.016927 0.011178 40.317500 47.762068 1488978.0 0.025319 1.070869 0
Equity(161 [AEP]) 1.973796e+06 62.894875 62.703369 62.867254 -1.560000 0.159091 0.636868 0.021810 62.310 -0.013145 -0.042892 62.683300 63.959499 1814280.0 -0.007012 0.168446 0
Equity(166 [AES]) 4.123003e+06 11.652653 11.679328 11.629371 0.260000 0.000000 -0.020289 -0.032691 11.540 -0.023689 0.061969 11.785500 11.672962 2876120.0 -0.010292 -0.044832 0
Equity(168 [AET]) 1.925911e+06 123.895788 124.413162 123.807387 1.720000 0.069182 -1.366145 -0.044372 122.940 -0.008451 0.033555 125.006049 116.809309 1885624.0 0.002849 0.091823 0
Equity(185 [AFL]) 1.493083e+06 69.969728 69.883661 69.927639 1.540000 0.159091 0.119663 0.007097 69.530 -0.009403 0.027749 69.818500 69.733200 1137239.0 -0.003440 0.127115 0
Equity(197 [AGCO]) 7.084119e+05 59.290075 59.163241 59.525364 0.500000 -0.350649 0.232640 0.002652 60.490 -0.000826 0.013736 58.764250 51.145078 769106.0 0.037564 0.118985 0
Equity(216 [HES]) 3.236753e+06 62.365424 62.353790 62.177031 -1.120000 -0.984238 0.671298 -0.030575 60.610 -0.020840 -0.017570 62.919747 55.019057 1681486.0 -0.035180 0.033585 0
Equity(239 [AIG]) 5.034811e+06 66.035008 66.004865 65.979973 0.430000 -0.750000 0.230592 0.008354 66.390 -0.006286 0.005173 66.098700 57.946488 3608667.0 0.019362 0.061593 0
Equity(266 [AJG]) 7.975199e+05 52.407520 52.142276 52.476391 0.690000 -0.080000 0.576779 0.032512 52.400 -0.013925 0.033707 51.771000 48.097723 674346.0 0.003063 0.155234 0
Equity(270 [AKRX]) 1.288508e+06 22.260533 21.908773 22.383092 0.380000 -0.025641 0.668427 0.214785 22.595 0.001551 0.060327 21.344000 26.630795 969092.0 0.023324 -0.512303 0
Equity(300 [ALK]) 1.146244e+06 88.419024 88.418291 88.167863 2.080000 -0.032710 0.576682 -0.026275 87.460 0.005519 0.093243 88.855000 71.393377 917362.0 -0.006136 0.187986 0
Equity(337 [AMAT]) 1.053200e+07 32.458273 32.431404 32.403583 0.560000 0.964286 0.103068 0.013292 32.780 0.023096 0.086919 32.494100 26.661112 8011942.0 0.026621 0.919082 0
Equity(351 [AMD]) 3.292217e+07 11.462948 11.294552 11.449041 -0.500000 0.000000 0.475765 0.111756 11.490 0.015018 -1.764706 11.210500 6.268070 35905881.0 0.006130 4.953368 0
Equity(353 [AME]) 1.501360e+06 49.392624 49.455431 49.392132 0.560000 -0.138462 -0.061878 -0.024371 49.640 -0.008786 0.038838 49.557000 47.634311 1057273.0 0.008738 -0.059788 0
Equity(368 [AMGN]) 2.338714e+06 151.941654 151.031241 152.679705 2.700000 0.098361 1.686551 0.107564 158.880 0.013395 0.066233 149.157500 156.626521 3305884.0 0.054070 -0.041023 0
Equity(448 [APA]) 2.996922e+06 63.905226 64.362552 63.526223 -1.600000 -0.484252 -0.633317 -0.062810 62.370 -0.012039 -0.089193 65.359500 57.009583 1852597.0 -0.021801 0.377069 0
Equity(455 [APC]) 4.047218e+06 70.759346 70.718306 70.733232 -1.610000 -0.733333 0.415491 -0.006532 69.960 -0.024948 -0.069763 70.853050 57.159735 3147926.0 -0.004128 -0.075734 0
Equity(460 [APD]) 8.838905e+05 144.701384 145.132252 144.554802 1.820000 0.139241 -0.624670 -0.015629 146.340 0.013786 0.055788 145.964726 135.162614 1407992.0 0.020573 0.160826 0
Equity(547 [ASB]) 7.144024e+05 24.945257 24.894200 24.921241 0.340000 0.096774 0.231386 -0.015968 24.650 -0.014000 0.017470 24.922500 19.489462 852737.0 -0.008048 0.293538 0
Equity(624 [ATW]) 3.887580e+06 13.228627 13.192371 13.195538 0.060000 -0.974138 0.389548 -0.038889 12.975 -0.022599 0.001317 13.386750 9.981620 3445642.0 -0.048754 -0.385431 0
Equity(630 [ADP]) 1.376318e+06 103.047967 102.352326 103.099688 0.820000 0.125000 1.717379 0.043478 102.480 -0.006110 0.084451 101.588500 90.096276 873589.0 -0.009759 0.326834 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2018-06-11 00:00:00+00:00 Equity(50537 [WRD]) 6.155387e+05 26.990341 26.903314 27.037621 -1.240000 -0.759280 0.146990 -0.018552 26.980 -0.028798 -0.113377 26.619000 17.843195 930026.0 -0.013168 0.873611 0
Equity(50612 [FRAC]) 9.763249e+05 14.240590 14.577042 14.061579 -0.070000 7.250000 -0.525989 -0.147355 13.540 -0.040397 -0.016099 15.218150 15.613290 1883409.0 -0.011679 NaN 0
Equity(50633 [JAG]) 1.009250e+06 11.467623 11.824443 11.374350 -0.180000 NaN -0.707635 -0.150189 11.260 -0.028054 -0.054926 12.309500 13.559845 1492820.0 0.036355 NaN 0
Equity(50634 [JELD]) 6.137987e+05 28.326983 28.371890 28.380789 0.380000 0.093023 -0.197444 0.036585 29.750 0.009844 0.048976 28.199000 34.259850 678792.0 0.081818 NaN 0
Equity(50642 [INVH]) 1.906039e+06 22.085080 22.158127 22.117986 -0.030000 NaN -0.253363 -0.059847 22.150 -0.004047 -0.002059 22.185250 22.487022 1676735.0 -0.008949 NaN 0
Equity(50683 [SNAP]) 2.423540e+07 12.150359 11.904663 12.363289 -0.300000 0.000000 0.293397 0.186594 13.100 0.029227 -0.133393 11.323600 14.641250 28415200.0 0.063312 NaN 0
Equity(50690 [CJ]) 6.462748e+05 26.452627 27.119124 26.160036 0.310000 -0.670213 -1.135384 -0.142177 25.220 -0.044335 0.015518 28.200500 28.936875 912186.0 -0.019059 NaN 0
Equity(50713 [GOOS]) 7.555158e+05 42.368693 41.801241 42.739788 NaN 0.696970 1.284315 0.166037 43.190 0.011357 0.241191 40.807500 29.797460 642714.0 0.000463 NaN 0
Equity(50716 [DXC]) 1.102310e+06 83.538832 84.246251 83.401273 1.970000 -0.279851 -1.622825 -0.054687 85.550 0.013746 0.042547 84.905047 83.387865 1119996.0 0.014948 NaN 0
Equity(50718 [PUMP]) 1.432430e+06 15.762405 16.411949 15.370608 0.440000 2.230769 -1.030629 -0.257560 14.240 -0.071708 0.084975 17.702000 16.867245 4314899.0 -0.049399 NaN 0
Equity(50735 [AYX]) 5.555456e+05 35.629330 35.068447 36.100845 -0.090000 NaN 0.823563 0.134971 37.420 0.015744 -0.033498 33.718950 28.189095 530804.0 0.061862 NaN 0
Equity(50749 [BTU]) 9.282912e+05 45.156250 44.300500 45.688586 0.830000 -0.867955 1.862912 0.212342 46.850 -0.000640 0.027896 42.845398 35.838760 627012.0 0.029897 NaN 0
Equity(50758 [OKTA]) 1.232515e+06 53.626650 52.813624 54.028859 -0.210000 NaN 2.007748 0.015449 51.270 0.007665 -0.154218 51.853000 34.081580 3326694.0 -0.106483 NaN 0
Equity(50763 [SNDR]) 5.182494e+05 29.076670 28.979434 29.079405 0.270000 0.928571 0.374297 0.019553 29.200 0.025641 0.024891 28.947500 26.374914 651804.0 -0.002051 NaN 0
Equity(50780 [HCC]) 7.708998e+05 28.501582 28.231698 28.812823 3.360000 0.631068 0.664276 0.085448 29.090 -0.023826 0.358128 27.574000 19.463721 941568.0 0.022496 NaN 0
Equity(50781 [YEXT]) 5.338812e+05 16.659455 16.332991 16.933617 -0.190000 NaN 0.679567 0.203804 17.720 0.040517 -0.224258 15.692500 12.904195 1246476.0 0.010839 NaN 0
Equity(50782 [UPL]) 2.836674e+06 1.823934 1.886417 1.817120 0.240000 -0.563636 -0.140508 0.112069 1.935 -0.007692 -0.014423 1.916200 6.287430 3789396.0 0.131579 NaN 0
Equity(50807 [CVNA]) 5.371846e+05 31.073384 30.275009 31.845982 -0.530000 NaN 1.251171 0.309818 36.020 0.020108 -0.387596 28.466750 20.185620 1079891.0 0.211775 NaN 0
Equity(50810 [CLDR]) 1.594726e+06 16.424195 16.341594 16.490016 -0.350000 NaN 0.262591 0.010645 16.140 0.006862 -0.163985 16.186650 17.041130 3031891.0 -0.045535 NaN 0
Equity(50860 [VST]) 3.338367e+06 24.369951 24.142580 24.452913 -0.710000 NaN 0.408498 0.070619 24.560 -0.004459 -0.049347 23.762250 19.787400 2049582.0 0.012784 NaN 0
Equity(50869 [GDI]) 7.218188e+05 32.722689 32.893141 32.595675 0.210000 -0.753086 -0.078448 -0.047833 31.850 -0.038055 0.027854 33.343200 30.773420 1156133.0 -0.020271 NaN 0
Equity(50891 [CARS]) 1.140657e+06 26.396206 26.171581 26.670578 0.010000 -0.995283 0.082126 0.063535 27.620 0.002541 0.000553 25.470750 27.237545 1519961.0 0.050190 NaN 0
Equity(50900 [SGH]) 5.093431e+05 45.780097 45.647080 45.842289 1.680000 0.739130 0.648566 -0.100369 41.410 -0.089890 0.299553 45.750500 35.200925 3034081.0 -0.109462 NaN 0
Equity(50910 [JHG]) 6.078668e+05 31.671008 31.850022 31.578723 0.820000 1.157895 -0.273417 -0.055793 31.950 -0.003089 0.033959 32.216519 34.413490 594331.0 0.025024 NaN 0
Equity(50970 [ATUS]) 2.020238e+06 17.574342 17.506237 17.699209 -0.170000 NaN 0.318401 0.087292 17.790 0.004517 -0.023683 17.503757 19.549919 8075811.0 -0.007540 NaN 0
Equity(50990 [APRN]) 2.920812e+06 3.182443 3.106911 3.202237 -0.170000 0.000000 0.196177 0.302041 3.190 0.000000 -0.150543 2.980750 3.536865 1993861.0 -0.056213 NaN 0
Equity(51012 [BHGE]) 3.640783e+06 34.559140 34.823261 34.437937 0.170000 1.428571 -0.447548 -0.024475 34.700 0.000577 0.004834 35.264086 32.300848 2488753.0 0.061812 NaN 0
Equity(51046 [BHF]) 6.194677e+05 47.082689 47.272606 46.916890 -0.560000 NaN -0.522199 -0.029516 46.690 -0.000214 -0.004765 47.551000 55.997820 524457.0 -0.004478 NaN 0
Equity(51079 [RDFN]) 8.697728e+05 22.500820 22.444384 22.576709 -0.440000 NaN 0.059586 0.003050 23.020 0.006559 -0.163887 22.232500 23.602725 614478.0 0.041158 NaN 0
Equity(51157 [DWDP]) 5.797952e+06 67.459544 67.343623 67.678945 0.470000 -0.347222 0.379802 0.044464 69.480 0.001153 0.010893 66.933877 68.877571 4364725.0 0.035315 NaN 0

364243 rows × 17 columns

In [6]:
# Rules to add and subtract from score
add_to_score_if('price > sma_200')
subtract_from_score_if('price <= sma_200')

add_to_score_if('roe > 0.1')

add_to_score_if('macd > 0') 
subtract_from_score_if('macd <= 0')

add_to_score_if('ema_9 > 0')
subtract_from_score_if('ema_9 <= 0')

add_to_score_if('year_performance > 0')
subtract_from_score_if('year_performance <= 0') 

# Verify the following logic is what's intended
add_to_score_if('month_performance > 0 and week_performance < 0 and ema_9 > 0')
subtract_from_score_if('month_performance < 0 and week_performance < 0 and ema_9 >= 0')

add_to_score_if('recent_change > 0')
subtract_from_score_if('recent_change <= 0')

add_to_score_if('eps > 0')
subtract_from_score_if('eps <= 0')

add_to_score_if('eps_growth > 0')
subtract_from_score_if('eps_growth <= 0')

pipeline_output
/usr/local/lib/python2.7/dist-packages/pandas/core/indexing.py:132: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self._setitem_with_indexer(indexer, value)
Out[6]:
average_volume ema_12 ema_26 ema_9 eps eps_growth macd month_performance price recent_change roe sma_20 sma_200 volume week_performance year_performance score
2017-01-10 00:00:00+00:00 Equity(2 [ARNC]) 6.214499e+06 19.790960 19.924127 19.768123 0.339999 0.222222 -0.300563 -0.063791 20.400 -0.014493 0.012336 20.124250 27.094297 4069665.0 0.063054 -0.303045 -1
Equity(24 [AAPL]) 2.902304e+07 117.044983 116.602975 117.108078 1.690000 -0.142132 1.193401 0.044226 119.000 0.009244 0.070756 116.256150 105.744183 27278020.0 0.024625 0.002871 5
Equity(62 [ABT]) 7.736315e+06 39.387723 39.244869 39.539104 -0.220000 -0.211538 0.166790 0.039276 40.750 -0.000736 -0.015874 38.913000 40.478410 7688771.0 0.044069 -0.172382 -1
Equity(64 [GOLD]) 1.687286e+07 16.232648 15.988255 16.507153 0.150000 0.250000 0.326060 0.097671 16.970 0.002955 0.023553 15.374500 17.732883 14799746.0 0.034756 1.433398 5
Equity(67 [ADSK]) 1.482925e+06 76.935821 76.965313 77.150202 -0.640000 0.600000 -0.088092 -0.018740 79.590 0.003657 -0.119383 76.940000 64.977550 974423.0 0.044900 0.573236 3
Equity(76 [TAP]) 1.393785e+06 98.398495 98.254158 98.551010 0.940000 9.444444 0.182888 -0.007573 98.290 -0.015229 0.020484 98.138500 99.860052 1017369.0 0.004394 0.432437 3
Equity(114 [ADBE]) 1.866924e+06 105.564046 105.366817 105.634725 0.540000 0.588235 0.358203 0.040840 108.570 0.002493 0.037282 105.110000 100.708900 2095251.0 0.049188 0.335589 7
Equity(122 [ADI]) 1.765959e+06 72.518541 72.542752 72.359232 0.960000 2.064516 0.038528 -0.016544 71.930 0.004609 0.058362 72.912500 61.982905 1789326.0 -0.007862 0.275310 6
Equity(128 [ADM]) 2.560810e+06 45.427404 45.511228 45.425575 0.580000 0.414634 0.063948 -0.038453 44.760 0.000894 0.019379 45.804000 41.975124 2890039.0 -0.030749 -0.021170 4
Equity(154 [AEM]) 1.959719e+06 42.844289 42.081018 43.468443 0.220000 21.000000 1.057750 0.152781 44.140 -0.016927 0.011178 40.317500 47.762068 1488978.0 0.025319 1.070869 3
Equity(161 [AEP]) 1.973796e+06 62.894875 62.703369 62.867254 -1.560000 0.159091 0.636868 0.021810 62.310 -0.013145 -0.042892 62.683300 63.959499 1814280.0 -0.007012 0.168446 2
Equity(166 [AES]) 4.123003e+06 11.652653 11.679328 11.629371 0.260000 0.000000 -0.020289 -0.032691 11.540 -0.023689 0.061969 11.785500 11.672962 2876120.0 -0.010292 -0.044832 -4
Equity(168 [AET]) 1.925911e+06 123.895788 124.413162 123.807387 1.720000 0.069182 -1.366145 -0.044372 122.940 -0.008451 0.033555 125.006049 116.809309 1885624.0 0.002849 0.091823 3
Equity(185 [AFL]) 1.493083e+06 69.969728 69.883661 69.927639 1.540000 0.159091 0.119663 0.007097 69.530 -0.009403 0.027749 69.818500 69.733200 1137239.0 -0.003440 0.127115 4
Equity(197 [AGCO]) 7.084119e+05 59.290075 59.163241 59.525364 0.500000 -0.350649 0.232640 0.002652 60.490 -0.000826 0.013736 58.764250 51.145078 769106.0 0.037564 0.118985 3
Equity(216 [HES]) 3.236753e+06 62.365424 62.353790 62.177031 -1.120000 -0.984238 0.671298 -0.030575 60.610 -0.020840 -0.017570 62.919747 55.019057 1681486.0 -0.035180 0.033585 0
Equity(239 [AIG]) 5.034811e+06 66.035008 66.004865 65.979973 0.430000 -0.750000 0.230592 0.008354 66.390 -0.006286 0.005173 66.098700 57.946488 3608667.0 0.019362 0.061593 3
Equity(266 [AJG]) 7.975199e+05 52.407520 52.142276 52.476391 0.690000 -0.080000 0.576779 0.032512 52.400 -0.013925 0.033707 51.771000 48.097723 674346.0 0.003063 0.155234 3
Equity(270 [AKRX]) 1.288508e+06 22.260533 21.908773 22.383092 0.380000 -0.025641 0.668427 0.214785 22.595 0.001551 0.060327 21.344000 26.630795 969092.0 0.023324 -0.512303 1
Equity(300 [ALK]) 1.146244e+06 88.419024 88.418291 88.167863 2.080000 -0.032710 0.576682 -0.026275 87.460 0.005519 0.093243 88.855000 71.393377 917362.0 -0.006136 0.187986 4
Equity(337 [AMAT]) 1.053200e+07 32.458273 32.431404 32.403583 0.560000 0.964286 0.103068 0.013292 32.780 0.023096 0.086919 32.494100 26.661112 8011942.0 0.026621 0.919082 7
Equity(351 [AMD]) 3.292217e+07 11.462948 11.294552 11.449041 -0.500000 0.000000 0.475765 0.111756 11.490 0.015018 -1.764706 11.210500 6.268070 35905881.0 0.006130 4.953368 3
Equity(353 [AME]) 1.501360e+06 49.392624 49.455431 49.392132 0.560000 -0.138462 -0.061878 -0.024371 49.640 -0.008786 0.038838 49.557000 47.634311 1057273.0 0.008738 -0.059788 -1
Equity(368 [AMGN]) 2.338714e+06 151.941654 151.031241 152.679705 2.700000 0.098361 1.686551 0.107564 158.880 0.013395 0.066233 149.157500 156.626521 3305884.0 0.054070 -0.041023 5
Equity(448 [APA]) 2.996922e+06 63.905226 64.362552 63.526223 -1.600000 -0.484252 -0.633317 -0.062810 62.370 -0.012039 -0.089193 65.359500 57.009583 1852597.0 -0.021801 0.377069 -2
Equity(455 [APC]) 4.047218e+06 70.759346 70.718306 70.733232 -1.610000 -0.733333 0.415491 -0.006532 69.960 -0.024948 -0.069763 70.853050 57.159735 3147926.0 -0.004128 -0.075734 -2
Equity(460 [APD]) 8.838905e+05 144.701384 145.132252 144.554802 1.820000 0.139241 -0.624670 -0.015629 146.340 0.013786 0.055788 145.964726 135.162614 1407992.0 0.020573 0.160826 5
Equity(547 [ASB]) 7.144024e+05 24.945257 24.894200 24.921241 0.340000 0.096774 0.231386 -0.015968 24.650 -0.014000 0.017470 24.922500 19.489462 852737.0 -0.008048 0.293538 4
Equity(624 [ATW]) 3.887580e+06 13.228627 13.192371 13.195538 0.060000 -0.974138 0.389548 -0.038889 12.975 -0.022599 0.001317 13.386750 9.981620 3445642.0 -0.048754 -0.385431 0
Equity(630 [ADP]) 1.376318e+06 103.047967 102.352326 103.099688 0.820000 0.125000 1.717379 0.043478 102.480 -0.006110 0.084451 101.588500 90.096276 873589.0 -0.009759 0.326834 6
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2018-06-11 00:00:00+00:00 Equity(50537 [WRD]) 6.155387e+05 26.990341 26.903314 27.037621 -1.240000 -0.759280 0.146990 -0.018552 26.980 -0.028798 -0.113377 26.619000 17.843195 930026.0 -0.013168 0.873611 0
Equity(50612 [FRAC]) 9.763249e+05 14.240590 14.577042 14.061579 -0.070000 7.250000 -0.525989 -0.147355 13.540 -0.040397 -0.016099 15.218150 15.613290 1883409.0 -0.011679 NaN -3
Equity(50633 [JAG]) 1.009250e+06 11.467623 11.824443 11.374350 -0.180000 NaN -0.707635 -0.150189 11.260 -0.028054 -0.054926 12.309500 13.559845 1492820.0 0.036355 NaN -3
Equity(50634 [JELD]) 6.137987e+05 28.326983 28.371890 28.380789 0.380000 0.093023 -0.197444 0.036585 29.750 0.009844 0.048976 28.199000 34.259850 678792.0 0.081818 NaN 2
Equity(50642 [INVH]) 1.906039e+06 22.085080 22.158127 22.117986 -0.030000 NaN -0.253363 -0.059847 22.150 -0.004047 -0.002059 22.185250 22.487022 1676735.0 -0.008949 NaN -4
Equity(50683 [SNAP]) 2.423540e+07 12.150359 11.904663 12.363289 -0.300000 0.000000 0.293397 0.186594 13.100 0.029227 -0.133393 11.323600 14.641250 28415200.0 0.063312 NaN 0
Equity(50690 [CJ]) 6.462748e+05 26.452627 27.119124 26.160036 0.310000 -0.670213 -1.135384 -0.142177 25.220 -0.044335 0.015518 28.200500 28.936875 912186.0 -0.019059 NaN -3
Equity(50713 [GOOS]) 7.555158e+05 42.368693 41.801241 42.739788 NaN 0.696970 1.284315 0.166037 43.190 0.011357 0.241191 40.807500 29.797460 642714.0 0.000463 NaN 6
Equity(50716 [DXC]) 1.102310e+06 83.538832 84.246251 83.401273 1.970000 -0.279851 -1.622825 -0.054687 85.550 0.013746 0.042547 84.905047 83.387865 1119996.0 0.014948 NaN 2
Equity(50718 [PUMP]) 1.432430e+06 15.762405 16.411949 15.370608 0.440000 2.230769 -1.030629 -0.257560 14.240 -0.071708 0.084975 17.702000 16.867245 4314899.0 -0.049399 NaN -1
Equity(50735 [AYX]) 5.555456e+05 35.629330 35.068447 36.100845 -0.090000 NaN 0.823563 0.134971 37.420 0.015744 -0.033498 33.718950 28.189095 530804.0 0.061862 NaN 3
Equity(50749 [BTU]) 9.282912e+05 45.156250 44.300500 45.688586 0.830000 -0.867955 1.862912 0.212342 46.850 -0.000640 0.027896 42.845398 35.838760 627012.0 0.029897 NaN 2
Equity(50758 [OKTA]) 1.232515e+06 53.626650 52.813624 54.028859 -0.210000 NaN 2.007748 0.015449 51.270 0.007665 -0.154218 51.853000 34.081580 3326694.0 -0.106483 NaN 4
Equity(50763 [SNDR]) 5.182494e+05 29.076670 28.979434 29.079405 0.270000 0.928571 0.374297 0.019553 29.200 0.025641 0.024891 28.947500 26.374914 651804.0 -0.002051 NaN 7
Equity(50780 [HCC]) 7.708998e+05 28.501582 28.231698 28.812823 3.360000 0.631068 0.664276 0.085448 29.090 -0.023826 0.358128 27.574000 19.463721 941568.0 0.022496 NaN 5
Equity(50781 [YEXT]) 5.338812e+05 16.659455 16.332991 16.933617 -0.190000 NaN 0.679567 0.203804 17.720 0.040517 -0.224258 15.692500 12.904195 1246476.0 0.010839 NaN 3
Equity(50782 [UPL]) 2.836674e+06 1.823934 1.886417 1.817120 0.240000 -0.563636 -0.140508 0.112069 1.935 -0.007692 -0.014423 1.916200 6.287430 3789396.0 0.131579 NaN -2
Equity(50807 [CVNA]) 5.371846e+05 31.073384 30.275009 31.845982 -0.530000 NaN 1.251171 0.309818 36.020 0.020108 -0.387596 28.466750 20.185620 1079891.0 0.211775 NaN 3
Equity(50810 [CLDR]) 1.594726e+06 16.424195 16.341594 16.490016 -0.350000 NaN 0.262591 0.010645 16.140 0.006862 -0.163985 16.186650 17.041130 3031891.0 -0.045535 NaN 2
Equity(50860 [VST]) 3.338367e+06 24.369951 24.142580 24.452913 -0.710000 NaN 0.408498 0.070619 24.560 -0.004459 -0.049347 23.762250 19.787400 2049582.0 0.012784 NaN 1
Equity(50869 [GDI]) 7.218188e+05 32.722689 32.893141 32.595675 0.210000 -0.753086 -0.078448 -0.047833 31.850 -0.038055 0.027854 33.343200 30.773420 1156133.0 -0.020271 NaN -1
Equity(50891 [CARS]) 1.140657e+06 26.396206 26.171581 26.670578 0.010000 -0.995283 0.082126 0.063535 27.620 0.002541 0.000553 25.470750 27.237545 1519961.0 0.050190 NaN 4
Equity(50900 [SGH]) 5.093431e+05 45.780097 45.647080 45.842289 1.680000 0.739130 0.648566 -0.100369 41.410 -0.089890 0.299553 45.750500 35.200925 3034081.0 -0.109462 NaN 4
Equity(50910 [JHG]) 6.078668e+05 31.671008 31.850022 31.578723 0.820000 1.157895 -0.273417 -0.055793 31.950 -0.003089 0.033959 32.216519 34.413490 594331.0 0.025024 NaN 0
Equity(50970 [ATUS]) 2.020238e+06 17.574342 17.506237 17.699209 -0.170000 NaN 0.318401 0.087292 17.790 0.004517 -0.023683 17.503757 19.549919 8075811.0 -0.007540 NaN 2
Equity(50990 [APRN]) 2.920812e+06 3.182443 3.106911 3.202237 -0.170000 0.000000 0.196177 0.302041 3.190 0.000000 -0.150543 2.980750 3.536865 1993861.0 -0.056213 NaN -1
Equity(51012 [BHGE]) 3.640783e+06 34.559140 34.823261 34.437937 0.170000 1.428571 -0.447548 -0.024475 34.700 0.000577 0.004834 35.264086 32.300848 2488753.0 0.061812 NaN 4
Equity(51046 [BHF]) 6.194677e+05 47.082689 47.272606 46.916890 -0.560000 NaN -0.522199 -0.029516 46.690 -0.000214 -0.004765 47.551000 55.997820 524457.0 -0.004478 NaN -4
Equity(51079 [RDFN]) 8.697728e+05 22.500820 22.444384 22.576709 -0.440000 NaN 0.059586 0.003050 23.020 0.006559 -0.163887 22.232500 23.602725 614478.0 0.041158 NaN 1
Equity(51157 [DWDP]) 5.797952e+06 67.459544 67.343623 67.678945 0.470000 -0.347222 0.379802 0.044464 69.480 0.001153 0.010893 66.933877 68.877571 4364725.0 0.035315 NaN 4

364243 rows × 17 columns

The 'score' field can be used in Alphalens just like a factor returned by pipeline.

Below is a (undocumented) example of this.

In [7]:
pricing_data = get_pricing(
  symbols=pipeline_output.index.levels[1], # Finds all assets that appear at least once in "factor_data"  
  start_date=period_start,
  end_date='2019-03-10', # must be after run_pipeline()'s end date. Explained more in lesson 4
  fields='open_price' # Generally, you should use open pricing. Explained more in lesson 4
)

# Show the first 5 rows of pricing_data
pricing_data.head(5)
Out[7]:
Equity(2 [ARNC]) Equity(24 [AAPL]) Equity(39 [DDC]) Equity(62 [ABT]) Equity(64 [GOLD]) Equity(67 [ADSK]) Equity(76 [TAP]) Equity(110 [RAMP]) Equity(114 [ADBE]) Equity(122 [ADI]) ... Equity(50910 [JHG]) Equity(50970 [ATUS]) Equity(50990 [APRN]) Equity(51012 [BHGE]) Equity(51016 [JBGS]) Equity(51046 [BHF]) Equity(51079 [RDFN]) Equity(51091 [VNTR]) Equity(51124 [KL]) Equity(51157 [DWDP])
2017-01-10 00:00:00+00:00 19.699 114.670 9.432 38.986 16.656 79.29 93.599 26.61 108.57 68.570 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-01-11 00:00:00+00:00 20.236 114.641 9.629 39.469 16.392 79.97 91.848 26.84 108.23 68.952 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-01-12 00:00:00+00:00 20.431 114.791 9.708 39.219 16.676 80.72 90.801 27.24 107.99 69.095 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-01-13 00:00:00+00:00 20.441 114.998 9.639 39.180 16.392 80.72 91.496 27.26 108.84 69.037 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2017-01-17 00:00:00+00:00 20.206 114.255 10.023 39.103 17.214 80.97 92.838 27.41 107.79 68.913 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 1530 columns

In [8]:
from alphalens.utils import get_clean_factor_and_forward_returns

merged_data = get_clean_factor_and_forward_returns(
  factor=pipeline_output['score'], 
  prices=pricing_data, quantiles=2

)

# Show the first 5 rows of merged_data
merged_data.head(5)
Dropped 0.1% entries from factor data: 0.1% in forward returns computation and 0.0% in binning phase (set max_loss=0 to see potentially suppressed Exceptions).
max_loss is 35.0%, not exceeded: OK!
Out[8]:
1D 5D 10D factor factor_quantile
date asset
2017-01-10 00:00:00+00:00 Equity(2 [ARNC]) 0.027260 0.027260 0.108026 -1 1
Equity(24 [AAPL]) -0.000253 0.010351 0.013892 5 2
Equity(62 [ABT]) 0.012389 0.012389 -0.019443 -1 1
Equity(64 [GOLD]) -0.015850 0.009426 0.042867 5 2
Equity(67 [ADSK]) 0.008576 -0.002396 0.045151 3 2
In [9]:
from alphalens.tears import create_full_tear_sheet, create_information_tear_sheet

create_information_tear_sheet(merged_data)
Information Analysis
1D 5D 10D
IC Mean 0.011 0.020 0.020
IC Std. 0.130 0.135 0.127
Risk-Adjusted IC 0.084 0.149 0.157
t-stat(IC) 1.594 2.816 2.972
p-value(IC) 0.112 0.005 0.003
IC Skew -0.311 -0.174 0.190
IC Kurtosis -0.213 -0.206 -0.353
<matplotlib.figure.Figure at 0x7f1d6beb4810>
In [10]:
from alphalens.tears import create_returns_tear_sheet

create_returns_tear_sheet(merged_data)
Returns Analysis
1D 5D 10D
Ann. alpha 0.027 0.047 0.042
beta -0.141 -0.185 -0.179
Mean Period Wise Return Top Quantile (bps) 0.436 0.521 0.313
Mean Period Wise Return Bottom Quantile (bps) -0.684 -0.490 -0.355
Mean Period Wise Spread (bps) 1.120 1.003 0.660
<matplotlib.figure.Figure at 0x7f1d6ba89810>
In [ ]: