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.
# 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
# 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
)
# 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
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.
# 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
# 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
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
# 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)
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.
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)
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
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!
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 |
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>
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>