Could you please help how to setup zipline (offline) run_pipeline to get yesterday price?
a) Zipline (offline) run_pipeline returns only
2020-03-10 00:00:00+00:00 Equity(8554 [SPY]) 274.42
Zipline (offline) doesn't return yesterday price:
2020-03-11 00:00:00+00:00 Equity(8554 [SPY]) 288.45
I have verified that offline bundle ingested data up to yesterday price 288.45
b) Quantopian run_pipeline returns correctly:
2020-03-10 00:00:00+00:00 Equity(8554 [SPY]) 274.42
2020-03-11 00:00:00+00:00 Equity(8554 [SPY]) 288.45
a) local zipline environment
import pandas as pd
import os
from zipline.data import bundles
from zipline.pipeline.data import USEquityPricing
from zipline.pipeline.engine import SimplePipelineEngine
from zipline.pipeline.loaders import USEquityPricingLoader
from zipline.utils.calendars import get_calendar
from zipline.utils.run_algo import load_extensions
from zipline.pipeline.filters import StaticAssets
from zipline.pipeline import Pipeline
from zipline.utils.run_algo import load_extensions
load_extensions(
default=True,
extensions=[],
strict=True,
environ=os.environ,
)
trading_calendar = get_calendar('NYSE')
bundle_data = bundles.load('yh_spy')
assets = bundle_data.asset_finder.lookup_symbols(['spy'], as_of_date=None)
pipeline_loader = USEquityPricingLoader(
bundle_data.equity_daily_bar_reader,
bundle_data.adjustment_reader,
)
def choose_loader(column):
if column in USEquityPricing.columns:
return pipeline_loader
return my_dispatcher(column)
engine = SimplePipelineEngine(
get_loader=choose_loader,
calendar=trading_calendar.all_sessions,
asset_finder=bundle_data.asset_finder,
)
p = Pipeline(
columns={
'price': USEquityPricing.close.latest,
},
screen=StaticAssets(assets)
)
df = engine.run_pipeline(
p,
pd.Timestamp('2020-03-10', tz='utc'),
pd.Timestamp('2020-03-11', tz='utc')
)
print(df)
returns:
"2020-03-10 00:00:00+00:00 Equity(1 [SPY]) 274.42"
b) quantopian environment