shlomiku / zipline-trader

Zipline Trader, a Pythonic Algorithmic Trading Library with broker integration
https://github.com/shlomikushchi/zipline-trader
Apache License 2.0
317 stars 71 forks source link

International Equities in Pipeline #173

Closed paulb66 closed 3 years ago

paulb66 commented 3 years ago

Hi,

I am still running Zipline 1.41 from the latest quantopian, and had an issue which I am not sure if its been addressed or not in the latest version.

Using Norgate Data to create bundles for both US and Australian (ASX) stocks.

Both run fine with correct trading calendar using handle data, however when using pipeline on the Australian stocks there is no valid pipeline loader if pricing or volume is included (works fine with US stocks):

The error is ValueError: No PipelineLoader registered for column EquityPricing.close::float64

The error is called from ~ line 175 in run_algo.py, I have attempted to change the loader to EquityPricing which appears consistent with the code changes and added some print statements but can't see if this is a flaw in the code or something else is incorrect. Adding domain does not change the issue

Any help appreciated

def choose_loader(column):

    #if column in USEquityPricing.columns:
    # return pipeline_loader
    #raise ValueError(
    # "No PipelineLoader registered for column %s." % column
    #)
    print('Column', column)
    print('Equity Columns',EquityPricing.columns)
    print('Equity Pricing',EquityPricing)
    print('Pipeline Loader',pipeline_loader)
    if column in EquityPricing.columns:
    return pipeline_loader
    raise ValueError(
    "No PipelineLoader registered for column %s." % column

The issue appears to be the as the valid EquityPricing.Columns are below:

Equity Columns frozenset({EquityPricing.close::float64, EquityPricing.low::float64, EquityPricing.high::float64, EquityPricing.volume::float64, EquityPricing.open::float64, EquityPricing.currency::object})

def make_index_pipeline(context): indexconstituent = NorgateDataIndexConstituent('XJO.au') dollar_volume = AverageDollarVolume(window_length=30) high_dollar_volume = (dollar_volume > dollar_min) return Pipeline( columns={ 'NorgateDataIndexConstituent':indexconstituent}, screen = indexconstituent&high_dollar_volume, )

shlomiku commented 3 years ago

Hi, Norgate data is outside of the scope of this project currently. they are working on making this possible. please open the issue in their channels.