mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-29 04:25:37 +08:00
83 lines
2.0 KiB
Python
83 lines
2.0 KiB
Python
from importlib import import_module
|
|
import os
|
|
|
|
from toolz import merge
|
|
|
|
from zipline import run_algorithm
|
|
|
|
|
|
# These are used by test_examples.py to discover the examples to run.
|
|
from zipline.utils.calendars import register_calendar, get_calendar
|
|
|
|
EXAMPLE_MODULES = {}
|
|
for f in os.listdir(os.path.dirname(__file__)):
|
|
if not f.endswith('.py') or f == '__init__.py':
|
|
continue
|
|
modname = f[:-len('.py')]
|
|
mod = import_module('.' + modname, package=__name__)
|
|
EXAMPLE_MODULES[modname] = mod
|
|
globals()[modname] = mod
|
|
|
|
# Remove noise from loop variables.
|
|
del f, modname, mod
|
|
|
|
|
|
# Columns that we expect to be able to reliably deterministic
|
|
# Doesn't include fields that have UUIDS.
|
|
_cols_to_check = [
|
|
'algo_volatility',
|
|
'algorithm_period_return',
|
|
'alpha',
|
|
'benchmark_period_return',
|
|
'benchmark_volatility',
|
|
'beta',
|
|
'capital_used',
|
|
'ending_cash',
|
|
'ending_exposure',
|
|
'ending_value',
|
|
'excess_return',
|
|
'gross_leverage',
|
|
'long_exposure',
|
|
'long_value',
|
|
'longs_count',
|
|
'max_drawdown',
|
|
'max_leverage',
|
|
'net_leverage',
|
|
'period_close',
|
|
'period_label',
|
|
'period_open',
|
|
'pnl',
|
|
'portfolio_value',
|
|
'positions',
|
|
'returns',
|
|
'short_exposure',
|
|
'short_value',
|
|
'shorts_count',
|
|
'sortino',
|
|
'starting_cash',
|
|
'starting_exposure',
|
|
'starting_value',
|
|
'trading_days',
|
|
'treasury_period_return',
|
|
]
|
|
|
|
|
|
def run_example(example_name, environ):
|
|
"""
|
|
Run an example module from zipline.examples.
|
|
"""
|
|
mod = EXAMPLE_MODULES[example_name]
|
|
|
|
register_calendar("YAHOO", get_calendar("NYSE"), force=True)
|
|
|
|
return run_algorithm(
|
|
initialize=getattr(mod, 'initialize', None),
|
|
handle_data=getattr(mod, 'handle_data', None),
|
|
before_trading_start=getattr(mod, 'before_trading_start', None),
|
|
analyze=getattr(mod, 'analyze', None),
|
|
bundle='test',
|
|
environ=environ,
|
|
# Provide a default capital base, but allow the test to override.
|
|
**merge({'capital_base': 1e7}, mod._test_args())
|
|
)
|