Last active
July 1, 2019 10:51
-
-
Save scubamut/4a00b0c5664f43716c33e97f72ff4880 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# import research | |
from quantopian.research import run_pipeline | |
# import pipeline methods | |
# from quantopian.algorithm import attach_pipeline, pipeline_output | |
from quantopian.pipeline import Pipeline, CustomFilter | |
# Fundamantals | |
from quantopian.pipeline.data import Fundamentals | |
from quantopian.pipeline.data import morningstar | |
# Factors | |
from quantopian.pipeline.factors import CustomFactor | |
from quantopian.pipeline.factors import AverageDollarVolume, SimpleMovingAverage, Latest | |
from quantopian.pipeline.factors import Returns | |
import quantopian.pipeline.factors as Factors | |
# Classifiers | |
from quantopian.pipeline.classifiers.fundamentals import Sector | |
# Filters | |
import quantopian.pipeline.filters as Filters | |
from quantopian.pipeline.filters.morningstar import IsPrimaryShare | |
from quantopian.pipeline.filters import StaticAssets | |
# import optimize | |
import quantopian.optimize as opt | |
# import any datasets we need | |
from quantopian.pipeline.data.builtin import USEquityPricing | |
# Experimental | |
from quantopian.pipeline.experimental import QTradableStocksUS | |
# import numpy and pandas just in case | |
import numpy as np | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
# define any constants. | |
pass | |
# Make a custom factor to return the last days close price | |
# This is really the same as the '.latest' method | |
class Latest_Close(CustomFactor): | |
""" | |
Gets the latest close price for each asset | |
""" | |
inputs = [USEquityPricing.close] | |
window_length = 1 | |
def compute(self, today, assets, out, close): | |
out[:] = close[-1] | |
# Create a static list of some random iShares ETFs | |
my_etfs = (StaticAssets(symbols([ | |
'IVV', #iShares Core S&P 500 ETF | |
'EFA', #iShares MSCI EAFE ETF | |
'AGG', #iShares Core U.S. Aggregate Bond ETF | |
'IJH', #iShares Core S&P Mid-Cap ETF | |
'IWM', #iShares Russell 2000 ETF | |
'IWD', #iShares Russell 1000 Value ETF | |
'IWF', #iShares Russell 1000 Growth ETF | |
'LQD', #iShares iBoxx $ Investment Grade Corporate Bond ETF | |
'EEM', #iShares MSCI Emerging Markets ETF | |
'EZU', #'iShares MSCI Eurozone ETF | |
]))) | |
# instantiate the Latest_10 factor | |
latest_price = Latest_Close(mask = my_etfs) | |
high = USEquityPricing.high.latest | |
low = USEquityPricing.low.latest | |
open_price = USEquityPricing.open.latest | |
close = USEquityPricing.close.latest | |
volume = USEquityPricing.volume.latest | |
# Create a pipline with each of the factor outputs as columns | |
pipe = Pipeline( | |
columns = { | |
'high' : high, | |
'low' : low, | |
'close' : close, | |
'open_price' : open_price, | |
'volume' : volume, | |
'latest_price' : latest_price, | |
}, | |
screen = my_etfs | |
) | |
# Run the pipeline and show the results | |
results = run_pipeline(pipe, '2016-07-08', '2016-07-08') | |
results |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment