from quantopian.pipeline import Pipeline
from quantopian.pipeline.data.alpha_vertex import (
# Top 100 Securities
precog_top_100 as dataset_100,
# Top 500 Securities|
precog_top_500 as dataset_500
)
from quantopian.research import run_pipeline
import alphalens
from quantopian.pipeline.filters.morningstar import Q1500US
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import SimpleMovingAverage,RSI
from quantopian.interactive.data.zacks import earnings_surprises_free as dataset
from odo import odo
import pandas as pd
def make_pipeline():
sma_10 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=10)
sma_20 = SimpleMovingAverage(inputs=[USEquityPricing.close], window_length=20)
EPS_mean_estimate = dataset.eps_mean_est
EPS_std_est = dataset.eps_std_dev_est
eps_act = dataset.eps_act
percent_diff = (sma_10 - sma_20)/sma_20
top_bottom_scores = (
percent_diff.top(350) | percent_diff.bottom(350)
)
universe = (Q1500US &
top_bottom_scores &
dataset.eps_mean_est.notnull() &
dataset.eps_std_dev_est.notnull() &
dataset.eps_act.notnull())
return Pipeline(
columns={
"percent diff" : percent_diff,
'EPS mean estimate': EPS_mean_estimate,
'EPS std est': EPS_std_est,
'eps_act':eps_act,
'SUE': (eps_act - EPS_mean_estimate)/EPS_std_est,
'score': percent_diff
},
screen=universe
)
results = run_pipeline(make_pipeline(), start_date='2007-01-01', end_date='2010-01-01')
results.head()
assets = results.index.levels[1].unique()
pricing = get_pricing(assets, start_date='2005-12-01', end_date='2012-02-01', fields='open_price')
factor_data = alphalens.utils.get_clean_factor_and_forward_returns(factor = results['percent diff'],
prices = pricing,
quantiles=3,
periods=(5,10,20,30),
max_loss = 0.60)
alphalens.tears.create_full_tear_sheet(factor_data)