Skip to content

Instantly share code, notes, and snippets.

@scubamut
Last active July 1, 2019 10:51
Show Gist options
  • Save scubamut/4a00b0c5664f43716c33e97f72ff4880 to your computer and use it in GitHub Desktop.
Save scubamut/4a00b0c5664f43716c33e97f72ff4880 to your computer and use it in GitHub Desktop.
# 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