from quantopian.pipeline import Pipeline,CustomFactor
from quantopian.research import run_pipeline
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.filters import QTradableStocksUS
import numpy as np
# Create a custom factor to calculate ratio between closing price of a US stocks and SPY
class ratio_SPY(CustomFactor):
inputs = [USEquityPricing.close]
window_length = 1
def compute(self, today, assets, out, price):
out[:]=price[-1]/price[-1][np.where(assets==8554)]
# # Create a custom factor to calculate 52-week highs on US stocks
class High52W(CustomFactor):
inputs = [USEquityPricing.close]
window_length = 252
def compute(self, today, assets, out, price):
out[:]=np.max(price,axis=0)
# Create a pipeline to print
def make_pipeline():
# price stores last closing prices
price= USEquityPricing.close.latest
# calculates last value of the ratio
Ratio_to_SPY = ratio_SPY()
high=High52W()
return Pipeline(columns={'Relative_SP500': Ratio_to_SPY ,
'close_price':price,'52_Week_high':high},screen=QTradableStocksUS())
results=run_pipeline(make_pipeline(), '2019-05-02', '2019-05-02')
results