mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-15 12:15:22 +08:00
MAINT: Removes the ability to reference a global TradingEnvironment
This commit removes the ability to reference a shared TradingEnvironment through the zipline.finance.trading module. In place, the classes that require a TradingEnvironment, or its child AssetFinder, contain their own references to those objects. This commit also adds serialization utilities that allow for the pickling/unpickling of objects without unintentionally their TradingEnvironments or AssetFinders.
This commit is contained in:
@@ -23,7 +23,7 @@ from zipline.protocol import Account
|
||||
from zipline.protocol import Portfolio
|
||||
from zipline.protocol import Position as ProtocolPosition
|
||||
|
||||
from zipline.finance.trading import SimulationParameters
|
||||
from zipline.finance.trading import SimulationParameters, TradingEnvironment
|
||||
|
||||
from zipline.utils import factory
|
||||
|
||||
@@ -41,17 +41,19 @@ def stringify_cases(cases, func=None):
|
||||
results.append(new_case)
|
||||
return results
|
||||
|
||||
|
||||
cases_env = TradingEnvironment()
|
||||
sim_params_daily = SimulationParameters(
|
||||
datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
|
||||
datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
|
||||
10000,
|
||||
emission_rate='daily')
|
||||
emission_rate='daily',
|
||||
env=cases_env)
|
||||
sim_params_minute = SimulationParameters(
|
||||
datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
|
||||
datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
|
||||
10000,
|
||||
emission_rate='minute')
|
||||
emission_rate='minute',
|
||||
env=cases_env)
|
||||
returns = factory.create_returns_from_list(
|
||||
[1.0], sim_params_daily)
|
||||
|
||||
@@ -65,14 +67,17 @@ def object_serialization_cases(skip_daily=False):
|
||||
(PerTrade, (), {}, 'dict'),
|
||||
(PerDollar, (), {}, 'dict'),
|
||||
(PerformancePeriod,
|
||||
(10000,), {'position_tracker': PositionTracker()}, 'to_dict'),
|
||||
(10000, cases_env.asset_finder),
|
||||
{'position_tracker': PositionTracker(cases_env.asset_finder)},
|
||||
'to_dict'),
|
||||
(Position, (8554,), {}, 'dict'),
|
||||
(PositionTracker, (), {}, 'dict'),
|
||||
(PerformanceTracker, (sim_params_minute,), {}, 'to_dict'),
|
||||
(RiskMetricsCumulative, (sim_params_minute,), {}, 'to_dict'),
|
||||
(PositionTracker, (cases_env.asset_finder,), {}, 'dict'),
|
||||
(PerformanceTracker, (sim_params_minute, cases_env), {}, 'to_dict'),
|
||||
(RiskMetricsCumulative, (sim_params_minute, cases_env), {}, 'to_dict'),
|
||||
(RiskMetricsPeriod,
|
||||
(returns.index[0], returns.index[0], returns), {}, 'to_dict'),
|
||||
(RiskReport, (returns, sim_params_minute), {}, 'to_dict'),
|
||||
(returns.index[0], returns.index[0], returns, cases_env),
|
||||
{}, 'to_dict'),
|
||||
(RiskReport, (returns, sim_params_minute, cases_env), {}, 'to_dict'),
|
||||
(FixedSlippage, (), {}, 'dict'),
|
||||
(Transaction,
|
||||
(8554, 10, datetime.datetime(2013, 6, 19), 100, "0000"), {},
|
||||
@@ -85,9 +90,12 @@ def object_serialization_cases(skip_daily=False):
|
||||
|
||||
if not skip_daily:
|
||||
cases.extend([
|
||||
(PerformanceTracker, (sim_params_daily,), {}, 'to_dict'),
|
||||
(RiskMetricsCumulative, (sim_params_daily,), {}, 'to_dict'),
|
||||
(RiskReport, (returns, sim_params_daily), {}, 'to_dict'),
|
||||
(PerformanceTracker,
|
||||
(sim_params_daily, cases_env), {}, 'to_dict'),
|
||||
(RiskMetricsCumulative,
|
||||
(sim_params_daily, cases_env), {}, 'to_dict'),
|
||||
(RiskReport,
|
||||
(returns, sim_params_daily, cases_env), {}, 'to_dict'),
|
||||
])
|
||||
|
||||
return stringify_cases(cases)
|
||||
|
||||
Reference in New Issue
Block a user