Hi All,
I have a question how to get the latest close form a pipeline output.
When I run code below on Monday 3.2.2020, 'USEquityPricing.close.latest' doesn't return latest Friday price.Instead Thursday price is returned (Equity(5 [AAPL]) : 273.52).
How to get correct latest price?
from zipline import run_algorithm
from zipline.api import *
from zipline.pipeline import CustomFactor, Pipeline
from zipline.pipeline.data import USEquityPricing
from zipline.pipeline.factors import Returns, SimpleMovingAverage
import zipline.pipeline.filters as Filters
import pytz
import pandas as pd
def initialize(context):
attach_pipeline(make_pipeline(context), 'my_pipeline')
#schedule_function(rebalance, date_rules.month_start(), time_rules.market_open())
#schedule_function(record_vars, date_rules.month_start(), time_rules.market_close())
def make_pipeline(context):
context.symbols = symbols('SPY')
universe = Filters.StaticAssets(context.symbols)
yesterday_close = USEquityPricing.close.latest
return Pipeline(
columns = {
'yesterday_close' : yesterday_close,
},
screen = universe,
)
def before_trading_start(context, data):
global p
p = pipeline_output('my_pipeline')
start = datetime(2020, 2, 27, tzinfo=pytz.UTC)
end = datetime(2020, 3, 1, tzinfo=pytz.UTC)
results = run_algorithm(start=start, end=end,
initialize=initialize,
before_trading_start=before_trading_start,
capital_base=10000,
data_frequency='daily',
bundle='yh_etf' )
print(p)