mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-15 12:15:22 +08:00
ENH: Preliminary support for Futures slippage and commission models
This commit is contained in:
+14
-15
@@ -67,7 +67,7 @@ from zipline.errors import (
|
||||
)
|
||||
from zipline.finance.trading import TradingEnvironment
|
||||
from zipline.finance.blotter import Blotter
|
||||
from zipline.finance.commission import PerShare, CommissionModel
|
||||
from zipline.finance.commission import CommissionModel
|
||||
from zipline.finance.controls import (
|
||||
LongOnly,
|
||||
MaxOrderCount,
|
||||
@@ -84,17 +84,14 @@ from zipline.finance.execution import (
|
||||
)
|
||||
from zipline.finance.performance import PerformanceTracker
|
||||
from zipline.finance.asset_restrictions import Restrictions
|
||||
from zipline.finance.slippage import (
|
||||
VolumeShareSlippage,
|
||||
SlippageModel
|
||||
)
|
||||
from zipline.finance.slippage import SlippageModel
|
||||
from zipline.finance.cancel_policy import NeverCancel, CancelPolicy
|
||||
from zipline.finance.asset_restrictions import (
|
||||
NoRestrictions,
|
||||
StaticRestrictions,
|
||||
SecurityListRestrictions,
|
||||
)
|
||||
from zipline.assets import Asset, Future
|
||||
from zipline.assets import Asset, Equity, Future
|
||||
from zipline.gens.tradesimulation import AlgorithmSimulator
|
||||
from zipline.pipeline import Pipeline
|
||||
from zipline.pipeline.engine import (
|
||||
@@ -324,10 +321,8 @@ class TradingAlgorithm(object):
|
||||
self.blotter = Blotter(
|
||||
data_frequency=self.data_frequency,
|
||||
asset_finder=self.asset_finder,
|
||||
slippage_func=VolumeShareSlippage(),
|
||||
commission=PerShare(),
|
||||
# Default to NeverCancel in zipline
|
||||
cancel_policy=self.cancel_policy
|
||||
cancel_policy=self.cancel_policy,
|
||||
)
|
||||
|
||||
# The symbol lookup date specifies the date to use when resolving
|
||||
@@ -493,16 +488,16 @@ class TradingAlgorithm(object):
|
||||
capital_base={capital_base}
|
||||
sim_params={sim_params},
|
||||
initialized={initialized},
|
||||
slippage={slippage},
|
||||
commission={commission},
|
||||
slippage_models={slippage_models},
|
||||
commission_models={commission_models},
|
||||
blotter={blotter},
|
||||
recorded_vars={recorded_vars})
|
||||
""".strip().format(class_name=self.__class__.__name__,
|
||||
capital_base=self.sim_params.capital_base,
|
||||
sim_params=repr(self.sim_params),
|
||||
initialized=self.initialized,
|
||||
slippage=repr(self.blotter.slippage_func),
|
||||
commission=repr(self.blotter.commission),
|
||||
slippage_models=repr(self.blotter.slippage_models),
|
||||
commission_models=repr(self.blotter.commission_models),
|
||||
blotter=repr(self.blotter),
|
||||
recorded_vars=repr(self.recorded_vars))
|
||||
|
||||
@@ -1662,7 +1657,9 @@ class TradingAlgorithm(object):
|
||||
raise UnsupportedSlippageModel()
|
||||
if self.initialized:
|
||||
raise SetSlippagePostInit()
|
||||
self.blotter.slippage_func = slippage
|
||||
# TODO: Create separate API methods for setting Equity and Future
|
||||
# slippage models.
|
||||
self.blotter.slippage_models[Equity] = slippage
|
||||
|
||||
@api_method
|
||||
def set_commission(self, commission):
|
||||
@@ -1685,7 +1682,9 @@ class TradingAlgorithm(object):
|
||||
if self.initialized:
|
||||
raise SetCommissionPostInit()
|
||||
|
||||
self.blotter.commission = commission
|
||||
# TODO: Create separate API methods for setting Equity and Future
|
||||
# commission models.
|
||||
self.blotter.commission_models[Equity] = commission
|
||||
|
||||
@api_method
|
||||
def set_cancel_policy(self, cancel_policy):
|
||||
|
||||
Reference in New Issue
Block a user