Zipline 3.0 中文文档(二)(3)https://developer.aliyun.com/article/1523937
返回:
assets – 与 sids 长度相同的列表,包含与请求的 sids 对应的 Assets(或 Nones)。
返回类型:
list[Asset or None]
引发:
SidsNotFound – 当请求的 sid 未找到且 default_none=False 时。
retrieve_asset(sid, default_none=False)
检索给定 sid 的资产。
retrieve_equities(sids)
为 sid 列表检索 Equity 对象。
用户通常不需要使用此方法(相反,他们应该更喜欢更通用/友好的 retrieve_assets),但由于它在上游使用,因此它具有文档化的接口和测试。
参数:
sids (iterable*[int]*) –
返回:
equities
返回类型:
dict[int -> Equity]
引发:
EquitiesNotFound – 当请求的任何资产未找到时。
retrieve_futures_contracts(sids)
为 sid 的可迭代对象检索 Future 对象。
用户通常不需要使用此方法(相反,他们应该更喜欢更通用/友好的 retrieve_assets),但由于它在上游使用,因此它具有文档化的接口和测试。
参数:
sids (iterable*[int]*) –
返回:
equities
返回类型:
dict[int -> Equity]
引发:
EquitiesNotFound – 当请求的任何资产未找到时。
property sids
资产查找器中的所有 sid。
class zipline.data.data_portal.DataPortal(asset_finder, trading_calendar, first_trading_day, equity_daily_reader=None, equity_minute_reader=None, future_daily_reader=None, future_minute_reader=None, adjustment_reader=None, last_available_session=None, last_available_minute=None, minute_history_prefetch_length=1560, daily_history_prefetch_length=40)
接口到 zipline 模拟所需的所有数据。
这由模拟运行器用于回答有关数据的问题,例如获取给定日期的资产价格或服务历史调用。
参数:
- 资产查找器 (zipline.assets.assets.AssetFinder) – 用于解析资产的 AssetFinder 实例。
- 交易日历 (zipline.utils.calendar.exchange_calendar.TradingCalendar) – 提供分钟到会话信息的日历实例。
- 首个交易日 (pd.Timestamp) – 模拟的首个交易日。
- 股票日读取器 (BcolzDailyBarReader*,* 可选) – 股票的日条形图读取器。用于服务日数据回测或分钟回测中的日历史调用。如果没有提供日条形图读取器但提供了分钟条形图读取器,则分钟将汇总以服务日请求。
- 股票分钟读取器 (BcolzMinuteBarReader, 可选) – 股票的分钟条形图读取器。用于服务分钟数据回测或分钟历史调用。如果没有提供日条形图读取器,则可用于服务日调用。
- 期货日读取器 (BcolzDailyBarReader*,* 可选) – 期货的日条形图读取器。用于服务日数据回测或分钟回测中的日历史调用。如果没有提供日条形图读取器但提供了分钟条形图读取器,则分钟将汇总以服务日请求。
- 期货分钟读取器 (BcolzFutureMinuteBarReader, 可选) – 期货的分钟条形图读取器。用于服务分钟数据回测或分钟历史调用。如果没有提供日条形图读取器,则可用于服务日调用。
- 调整读取器 (SQLiteAdjustmentWriter*,* 可选) – 调整读取器。用于将拆分、股息和其他调整数据应用于读取器提供的原始数据。
- 最后可用会话 (pd.Timestamp, 可选) – 会话级数据中可用的最后一个会话。
- 最后可用分钟 (pd.Timestamp, 可选) – 分钟级数据中可用的最后一分钟。
get_adjusted_value(asset, field, dt, perspective_dt, data_frequency, spot_value=None)
返回一个标量值,表示在给定 dt 时所需资产字段的值,已应用调整。
参数:
- 资产 (Asset) – 所需数据的资产。
- 字段 ({‘开盘’,‘最高’,‘最低’,‘收盘’,‘成交量’,‘价格’,‘最后交易’}) – 资产的所需字段。
- dt (pd.Timestamp) – 所需值的时间戳。
- 视角时间戳 (pd.Timestamp) – 从该时间戳回看数据。
- 数据频率 (字符串) – 要查询的数据频率;即数据是“每日”还是“分钟”条形图
返回:
值 – 在 dt
时对 资产
的给定 字段
的值,已知由 perspective_dt
应用的任何调整。返回类型基于所请求的 字段
。如果字段是“开盘”、“最高”、“最低”、“收盘”或“价格”之一,则值将为浮点数。如果 字段
是“成交量”,则值将为整数。如果 字段
是“最后交易”,则值将为时间戳。
返回类型:
get_adjustments(assets, field, dt, perspective_dt)
返回给定字段和资产列表在 dt 和 perspective_dt 之间的调整列表。
参数:
- 资产 (列表 的 类型资产*,或* 资产) – 所需调整的资产或资产。
- 字段 ({‘开盘’**, ‘最高’**, ‘最低’**, ‘收盘’**, ‘成交量’**, ‘价格’**, ‘最后交易’}) – 资产的所需字段。
- dt (pd.Timestamp) – 所需值的时间戳。
- perspective_dt (pd.Timestamp) – 从哪个时间戳查看数据。
返回:
调整 – 对该字段的调整。
返回类型:
列表 [调整]
get_current_future_chain(continuous_future, dt)
根据连续期货规范,检索给定 dt 的合约的期货链。
返回:
期货链 – 活跃期货的列表,其中第一个索引是由连续期货定义指定的当前合约,第二个是下一个即将到来的合约,依此类推。
返回类型:
列表[期货]
get_fetcher_assets(dt)
返回当前日期定义的资产列表,由提取器数据定义。
返回:
列表
返回类型:
资产对象的列表。
get_history_window(assets, end_dt, bar_count, frequency, field, data_frequency, ffill=True)
公共 API 方法,返回包含所请求历史窗口的数据框。数据完全调整。
参数:
- 资产 (列表 的 zipline.data.Asset 对象) – 所需数据的资产。
- bar_count (整数) – 所需条形图的数量。
- 频率 (字符串) – “1d” 或 “1m”
- 字段 (字符串) – 资产的所需字段。
- 数据频率 (字符串) – 要查询的数据频率;即数据是“每日”还是“分钟”条形图。
- ffill (布尔值) – 前向填充缺失值。仅在字段为“价格”时有效。
返回类型:
包含所请求数据的数据框。
get_last_traded_dt(asset, dt, data_frequency)
给定资产和 dt,返回从给定 dt 视角的最后交易 dt。
如果在 dt 上有交易,答案是提供的 dt。
get_scalar_asset_spot_value(asset, field, dt, data_frequency)
公共 API 方法,返回一个标量值,表示在给定 dt 时所需资产字段的值。
参数:
- assets (Asset) – 所需数据的资产或资产。这不能是任意的 AssetConvertible。
- field ({‘open’**, ‘high’**, ‘low’**, ‘close’**, ‘volume’**,) – ‘price’, ‘last_traded’} 资产的所需字段。
- dt (pd.Timestamp) – 所需值的时间戳。
- data_frequency (str) – 要查询的数据频率;即数据是‘每日’还是‘分钟’条形图
返回:
value – field
对于asset
的即期价值。返回类型基于所请求的field
。如果字段是‘open’, ‘high’, ‘low’, ‘close’, 或‘price’之一,值将是一个浮点数。如果field
是‘volume’,值将是一个整数。如果field
是‘last_traded’,值将是一个时间戳。
返回类型:
get_splits(assets, dt)
返回给定 sids 和给定 dt 的任何分割。
参数:
- assets (容器) – 我们想要分割的资产。
- dt (pd.Timestamp) – 我们正在检查分割的日期。注意:这预计是 UTC 午夜。
返回:
splits – 分割列表,其中每个分割是(资产, 比率)元组。
返回类型:
get_spot_value(assets, field, dt, data_frequency)
公共 API 方法,返回一个标量值,表示在给定 dt 时所需资产字段的值。
参数:
- assets (Asset*,* ContinuousFuture*, 或* iterable of same.) – 所需数据的资产或资产。
- field ({‘open’**, ‘high’**, ‘low’**, ‘close’**, ‘volume’**,) – ‘price’, ‘last_traded’} 资产的所需字段。
- dt (pd.Timestamp) – 所需值的时间戳。
- data_frequency (str) – 要查询的数据频率;即数据是‘每日’还是‘分钟’条形图
返回:
value – field
对于asset
的即期价值。返回类型基于所请求的field
。如果字段是‘open’, ‘high’, ‘low’, ‘close’, 或‘price’之一,值将是一个浮点数。如果field
是‘volume’,值将是一个整数。如果field
是‘last_traded’,值将是一个时间戳。
返回类型:
get_stock_dividends(sid, trading_days)
返回给定交易范围内特定 sid 的所有股票红利。
参数:
- sid (int) – 应返回其股票红利的资产。
- trading_days (pd.DatetimeIndex) – 交易范围。
返回:
- list (一个包含所有相关属性填充的对象列表。)
- 所有时间戳字段都转换为 pd.Timestamps。
handle_extra_source(source_df, sim_params)
额外来源总是有一个 sid 列。
我们将给定数据(通过前向填充)扩展到模拟日期的完整范围,以便在模拟期间快速查找。
class zipline.sources.benchmark_source.BenchmarkSource(benchmark_asset, trading_calendar, sessions, data_portal, emission_rate='daily', benchmark_returns=None)
daily_returns(start, end=None)
返回给定期间的每日回报。
参数:
- start (datetime) – 包含的起始会话标签。
- end (datetime*,* 可选) – 包含的结束会话标签。如果不提供,将
start
视为标量键。
返回:
returns – 给定期间的回报。索引将是[start, end]范围内的交易日历。如果只提供start
,则返回那天的标量值。
返回类型:
pd.Series 或 float
get_range(start_dt, end_dt)
查找给定期间的回报。
参数:
- start_dt (datetime) – 包含的起始标签。
- end_dt (datetime) – 包含的结束标签。
返回:
returns – 返回的序列。
返回类型:
pd.Series
另请参阅
zipline.sources.benchmark_source.BenchmarkSource.daily_returns
如果
emission_rate == ‘minute’,此方法期望分钟输入,当
emission_rate == 'daily’时,期望会话标签。
```py`
get_value(dt)
查找给定 dt 的回报。 参数: **dt** (*datetime*) – 要查找的标签。 返回: **returns** – 给定 dt 或会话的回报。 返回类型: [float](https://docs.python.org/3/library/functions.html#float "(in Python v3.11)") 另请参阅 `zipline.sources.benchmark_source.BenchmarkSource.daily_returns` `如果`emission_rate == 'minute'`,此方法期望分钟输入,当`emission_rate == 'daily'`时,期望会话标签。`` ``### 捆绑包 ```py zipline.data.bundles.register(name='__no__default__', f='__no__default__', calendar_name='NYSE', start_session=None, end_session=None, minutes_per_day=390, create_writers=True)
注册数据捆绑包摄取函数。
参数:
- name (str) – 捆绑包的名称。
- f (callable) –
摄取函数。此函数将被传递:
environmapping
此操作的环境。
asset_db_writerAssetDBWriter
用于写入的资产数据库写入器。
minute_bar_writerBcolzMinuteBarWriter
用于写入的分钟条形写入器。
daily_bar_writerBcolzDailyBarWriter
用于写入的每日条形写入器。
adjustment_writerSQLiteAdjustmentWriter
用于写入的调整数据库写入器。
calendartrading_calendars.TradingCalendar
要摄取的交易日历。
start_sessionpd.Timestamp
要摄取的数据的第一个会话。
end_sessionpd.Timestamp
要摄取的数据的最后一个会话。
cacheDataFrameCache
用于临时存储数据帧的映射对象。在加载失败的情况下,应使用此对象来缓存中间结果。在成功加载后,这将自动清理。
显示进度布尔值
尽可能显示当前加载的进度。
- 日历名称 (str*, 可选) – 用于对齐包数据的日历的名称。默认为 ‘NYSE’。
- 开始会话 (pd.Timestamp, 可选) – 我们想要获取数据的第一个会话。如果没有提供,或者日期超出了日历支持的范围,则使用日历的第一个会话。
- 结束会话 (pd.Timestamp, 可选) – 我们想要获取数据的最后一个会话。如果没有提供,或者日期超出了日历支持的范围,则使用日历的最后一个会话。
- 每天分钟数 (int*, 可选) – 每个正常交易日的分钟数。
- 创建写入器 (bool*, 可选) – 是否应该为摄取函数创建写入器。在不需要它们的情况下,例如
quantopian-quandl
包,可以禁用此功能以进行优化。
注释
此函数可以用作装饰器,例如:
@register('quandl') def quandl_ingest_function(...): ...
另请参阅
zipline.data.bundles.bundles
zipline.data.bundles.ingest(name, environ=os.environ, date=None, show_progress=True)
为给定的包摄取数据。
参数:
- 名称 (str) – 包的名称。
- 环境 (映射, 可选) – 环境变量。默认为 os.environ。
- 时间戳 (datetime, 可选) – 用于加载的时间戳。默认情况下,这是当前时间。
- 资产版本 (可迭代int], 可选) – 要降级的资产数据库的版本。
- 显示进度 (bool*, 可选) – 告诉摄取函数在可能的情况下显示进度。
zipline.data.bundles.load(name, environ=os.environ, date=None)
加载以前摄取的包。
参数:
- 名称 (str) – 包的名称。
- 环境 (映射, 可选) – 环境变量。默认为 os.environ。
- 时间戳 (datetime, 可选) – 要查找的数据的时间戳。默认为当前时间。
返回:
包数据 – 此包的原始数据读取器。
返回类型:
BundleData
zipline.data.bundles.unregister(name)
注销一个捆绑包。
参数:
name (str) – 要注销的捆绑包的名称。
引发:
UnknownBundle – 当没有使用给定名称注册的捆绑包时引发。
另请参阅
zipline.data.bundles.bundles
zipline.data.bundles.bundles
已注册的捆绑包,作为从捆绑包名称到捆绑包数据的映射。此映射是不可变的,只能通过register()
或unregister()
更新。
## 风险指标
算法状态
class zipline.finance.ledger.Ledger(trading_sessions, capital_base, data_frequency)
账本跟踪所有订单和交易,以及投资组合和持仓的当前状态。
portfolio
正在管理中的更新后的投资组合。
类型:
zipline.protocol.Portfolio
account
正在管理中的更新后的账户。
类型:
zipline.protocol.Account
position_tracker
当前持仓集合。
类型:
PositionTracker
todays_returns
当天的回报。在分钟排放模式下,这是部分日的回报。在每日排放模式下,这是daily_returns[session]
。
类型:
daily_returns_series
每日回报系列。尚未完成的交易日将持有np.nan
值。
类型:
pd.Series
daily_returns_array
作为 ndarray 的每日回报。尚未完成的交易日将持有np.nan
值。
类型:
np.ndarray
orders(dt=None)
检索给定条形图或整个模拟中所有订单的字典形式。
参数:
dt (pd.Timestamp 或 None, 可选) – 用于查询订单的特定时间戳。如果未传入或明确传入 None,则将返回所有订单。
返回:
orders – 订单信息。
返回类型:
override_account_fields(settled_cash=sentinel('not_overridden'), accrued_interest=sentinel('not_overridden'), buying_power=sentinel('not_overridden'), equity_with_loan=sentinel('not_overridden'), total_positions_value=sentinel('not_overridden'), total_positions_exposure=sentinel('not_overridden'), regt_equity=sentinel('not_overridden'), regt_margin=sentinel('not_overridden'), initial_margin_requirement=sentinel('not_overridden'), maintenance_margin_requirement=sentinel('not_overridden'), available_funds=sentinel('not_overridden'), excess_liquidity=sentinel('not_overridden'), cushion=sentinel('not_overridden'), day_trades_remaining=sentinel('not_overridden'), leverage=sentinel('not_overridden'), net_leverage=sentinel('not_overridden'), net_liquidation=sentinel('not_overridden'))
覆盖self.account
上的字段。
property portfolio
计算当前投资组合。
笔记
这是缓存的,重复访问不会重新计算投资组合,除非投资组合可能已更改。
process_commission(commission)
处理佣金。
参数:
commission (zp.Event) – 正在支付的佣金。
process_dividends(next_session, asset_finder, adjustment_reader)
处理下一交易日的股息。
这将为我们赚取下一个交易日的除息日股息,以及支付下一个交易日的支付日股息。
process_order(order)
跟踪已下的订单。
参数:
order (zp.Order) – 要记录的订单。
process_splits(splits)
处理一系列拆分,根据需要修改任何持仓。
参数:
splits (列表([资产, 浮点数)**]) – 一组拆分。每个拆分是一个元组(资产,比率)。
process_transaction(transaction)
向账本添加一笔交易,并根据需要更新当前状态。
参数:
transaction (zp.Transaction) – 要执行的交易。
transactions(dt=None)
检索给定时间段内或整个模拟中的所有交易的字典形式。
参数:
dt (pd.Timestamp or None*,* optional) – 要查找交易的具体时间。如果未传递或明确传递 None,则将返回所有交易。
返回:
transactions – 交易信息。
返回类型:
update_portfolio()
强制计算当前投资组合状态。
class zipline.protocol.Portfolio(start_date=None, capital_base=0.0)
提供对当前投资组合状态只读访问的对象。
参数:
- start_date (pd.Timestamp) – 记录周期的开始日期。
- capital_base (浮点数) – 投资组合的起始价值。这将用作起始现金、当前现金和投资组合价值。
positions
包含当前持有仓位信息的类似字典的对象。
类型:
zipline.protocol.Positions
cash
投资组合中当前持有的现金金额。
类型:
portfolio_value
投资组合持仓的当前清算价值。等于现金 + 总和(份额 * 价格)
类型:
starting_cash
回测开始时投资组合中的现金金额。
类型:
property current_portfolio_weights
通过计算其持有价值除以所有仓位的总价值来计算投资组合中每项资产的权重。
每项股票的价值是其价格乘以持有的股份数量。每份期货合约的价值是其单价乘以持有的股份数量乘以乘数。
class zipline.protocol.Account
账户对象跟踪有关交易账户的信息。随着算法运行,这些值会更新,而其键保持不变。如果连接到经纪人,可以使用经纪人报告的交易账户值来更新这些值。
class zipline.finance.ledger.PositionTracker(data_frequency)
持有的仓位当前状态。
参数:
data_frequency ({‘daily’**, ‘minute’}) – 模拟的数据频率。
earn_dividends(cash_dividends, stock_dividends)
给定一组除息日均为下一个交易日,计算并存储每个股息的现金和/或股票支付金额。
参数:
- cash_dividends (iterable of (资产, 金额*,* 支付日期*)* namedtuples) –
- stock_dividends (iterable of (asset, payment_asset*,* ratio*,* pay_date*)*) – namedtuples。
handle_splits(splits)
处理一系列拆分,根据需要修改任何持仓。
参数:
splits (list) – 拆分列表。每个拆分是一个 (资产, 比率) 的元组。
返回:
int – 持仓。
返回类型:
修改每个持仓后,剩余的现金来自分数股。
pay_dividends(next_trading_day)
根据累积的账本记录,返回基于应支付的股息的现金支付。
property stats
持仓的当前状态。
返回:
stats – 当前的持仓统计数据。
返回类型:
PositionStats
注意
这是缓存的,重复访问不会重新计算统计数据,除非统计数据可能已更改。
class zipline.finance._finance_ext.PositionStats
从当前持仓计算出的值。
gross_exposure
总持仓暴露度。
类型:
浮点数 64 位
gross_value
总持仓价值。
类型:
浮点数 64 位
long_exposure
仅多头持仓的暴露度。
类型:
浮点数 64 位
long_value
仅多头持仓的价值。
类型:
浮点数 64 位
net_exposure
净持仓暴露度。
类型:
浮点数 64 位
net_value
净持仓价值。
类型:
浮点数 64 位
short_exposure
仅空头持仓的暴露度。
类型:
浮点数 64 位
short_value
仅空头持仓的价值。
类型:
浮点数 64 位
longs_count
多头持仓的数量。
类型:
整数 64 位
shorts_count
空头持仓的数量。
类型:
整数 64 位
position_exposure_array
每个持仓的暴露度,顺序与 position_tracker.positions
相同。
类型:
np.ndarray[float64]
position_exposure_series
每个持仓的暴露度,顺序与 position_tracker.positions
相同。索引是每个资产的数字 sid。
类型:
pd.Series[float64]
注意
position_exposure_array
和 position_exposure_series
共享相同的底层内存。如果你每分钟都在访问,应该优先使用数组接口以获得更好的性能。
position_exposure_array
和 position_exposure_series
在位置跟踪器下一次更新统计数据时可能会被修改。不要依赖这些对象在访问 stats
时保持不变。如果需要冻结这些值,必须进行复制。
内置指标
class zipline.finance.metrics.metric.SimpleLedgerField(ledger_field, packet_field=None)
每栏或每节发出账本字段的当前值。
参数:
class zipline.finance.metrics.metric.DailyLedgerField(ledger_field, packet_field=None)
类似于 SimpleLedgerField
,但也将当前值放入 cumulative_perf
部分。
参数:
class zipline.finance.metrics.metric.StartOfPeriodLedgerField(ledger_field, packet_field=None)
记录周期开始时账本字段的价值。
参数:
class zipline.finance.metrics.metric.StartOfPeriodLedgerField(ledger_field, packet_field=None)
记录周期开始时账本字段的价值。
参数:
class zipline.finance.metrics.metric.Returns
跟踪算法的每日和累积回报。
class zipline.finance.metrics.metric.BenchmarkReturnsAndVolatility
跟踪基准的每日和累积回报以及基准回报的波动性。
class zipline.finance.metrics.metric.CashFlow
跟踪每日和累积现金流。
注释
由于历史原因,此字段在数据包中名为‘capital_used’。
class zipline.finance.metrics.metric.Orders
跟踪每日订单。
class zipline.finance.metrics.metric.Transactions
跟踪每日交易。
class zipline.finance.metrics.metric.Positions
跟踪每日持仓。
class zipline.finance.metrics.metric.ReturnsStatistic(function, field_name=None)
报告模拟结束标量或从算法返回计算的时间序列的指标。
参数:
- 函数 (可调用) – 对每日回报调用的函数。
- 字段名称 (str, 可选) – 字段的名称。如果未提供,它将是
function.__name__
。
class zipline.finance.metrics.metric.AlphaBeta
将模拟结束的 alpha 和 beta 添加到基准。
class zipline.finance.metrics.metric.MaxLeverage
跟踪最大账户杠杆。
指标集
zipline.finance.metrics.register(name, function=None)
注册新的指标集。
参数:
- 名称 (str) – 指标集的名称
- 函数 (可调用) – 产生指标集的可调用对象。
注释
如果只传递名称
,则可以用作装饰器。
另请参阅
zipline.finance.metrics.get_metrics_set
, zipline.finance.metrics.unregister_metrics_set
zipline.finance.metrics.load(name)
返回与给定名称注册的指标集的实例。
返回:
指标 – 指标集的新实例。
返回类型:
集合[指标]
引发:
ValueError – 当没有指标集注册到名称
时引发。
zipline.finance.metrics.unregister(name)
注销现有的指标集。
参数:
名称 (str) – 指标集的名称
另请参阅
zipline.finance.metrics.register_metrics_set
zipline.data.finance.metrics.metrics_sets
已注册的指标集作为指标集名称到加载函数的映射。这个映射是不可变的,只能通过 register()
或 unregister()
更新。
实用工具
缓存
class zipline.utils.cache.CachedObject(value, expires)
一个简单的结构,用于维护带有过期日期的缓存对象。
参数:
- 值(对象) ——要缓存的对象。
- 过期(类似 datetime)——值的过期日期。对于过期日期严格大于过期日期的日期,缓存被认为无效。
示例
>>> from pandas import Timestamp, Timedelta >>> expires = Timestamp('2014', tz='UTC') >>> obj = CachedObject(1, expires) >>> obj.unwrap(expires - Timedelta('1 minute')) 1 >>> obj.unwrap(expires) 1 >>> obj.unwrap(expires + Timedelta('1 minute')) ... Traceback (most recent call last): ... Expired: 2014-01-01 00:00:00+00:00
class zipline.utils.cache.ExpiringCache(cache=None, cleanup=<function ExpiringCache.<lambda>>)
多个 CachedObjects 的缓存,它返回包装的值,或者在值过期时引发并删除 CachedObject。
参数:
- 缓存(类似字典,可选)——一个类似字典的对象实例,至少需要支持:del、getitem、setitem。如果为 None,则默认使用字典。
- 清理(可调用,可选)——一个接受单个参数(缓存对象)的方法,在缓存对象过期时被调用,在删除对象之前。如果不提供,默认为无操作。
示例
>>> from pandas import Timestamp, Timedelta >>> expires = Timestamp('2014', tz='UTC') >>> value = 1 >>> cache = ExpiringCache() >>> cache.set('foo', value, expires) >>> cache.get('foo', expires - Timedelta('1 minute')) 1 >>> cache.get('foo', expires + Timedelta('1 minute')) Traceback (most recent call last): ... KeyError: 'foo'
class zipline.utils.cache.dataframe_cache(path=None, lock=None, clean_on_failure=True, serialization='pickle')
数据帧的磁盘缓存。
dataframe_cache
是一个可变的字符串名称到 pandas DataFrame 对象的映射。这个对象可以用作上下文管理器,在退出时删除缓存目录。
参数:
- 路径(str*,可选)——缓存的目录路径。文件将写为
path/
。 - 锁(Lock,可选)——用于多线程/多进程访问缓存的线程锁。如果不提供,将不会使用锁。
- 在失败时清理(bool*,可选)——如果在上下文管理器中引发异常,是否应该清理目录。
- 序列化({‘msgpack’,‘pickle:’},可选)——数据应该如何被序列化。如果传递了
'pickle'
,可以传递一个可选的 pickle 协议,例如:'pickle:3'
,表示使用 pickle 协议 3。
注意
cache[:]
语法将所有键值对加载到内存中作为一个字典。缓存使用的是临时文件格式,该格式可能会在 zipline 的不同版本之间发生变化。
class zipline.utils.cache.working_file(final_path, *args, **kwargs)
一个用于管理临时文件的上下文管理器,如果上下文中没有引发异常,则将文件移动到非临时位置。
参数:
- 最终路径(str) ——提交时移动文件的位置。
- *args ——转发到 NamedTemporaryFile。
- **kwargs ——转发到 NamedTemporaryFile。
注意
如果没有异常,文件在 exit 时被移动。working_file
使用 shutil.move()
移动实际文件,这意味着它具有与 shutil.move()
一样强的保证。
class zipline.utils.cache.working_dir(final_path, *args, **kwargs)
用于管理临时目录的上下文管理器,如果在上下文中没有引发异常,则将其移动到非临时位置。
参数:
- 最终路径(str)- 提交时移动文件的位置。
- *args – 转发到 tmp_dir。
- **kwargs – 转发到 tmp_dir。
笔记
如果没有异常,文件在 exit 时被移动。working_dir
使用 dir_util.copy_tree()
移动实际文件,这意味着它具有与 dir_util.copy_tree()
一样强的保证。
命令行
zipline.utils.cli.maybe_show_progress(it, show_progress, **kwargs)
可选择为给定的迭代器显示进度条。
参数:
- it(可迭代)- 底层迭代器。
- show_progress(bool)- 是否显示进度。
- **kwargs – 转发到 click 进度条。
返回:
itercontext – 一个上下文管理器,其 enter 是实际使用的迭代器。
返回类型:
上下文管理器
示例
with maybe_show_progress([1, 2, 3], True) as ns: for n in ns: ...
运行回测
函数 run_algorithm()
创建一个代表交易策略和执行策略参数的 TradingAlgorithm
实例。
zipline.run_algorithm(...)
运行交易算法。
参数:
- 开始(datetime)- 回测的开始日期。
- 结束(datetime)- 回测的结束日期。
- 初始化(可调用[上下文 -> 无])- 用于算法的初始化函数。该函数在回测开始时被调用一次,应被用于设置算法所需的任何状态。
- 资本基础(浮点数)- 回测的起始资本。
- handle_data(可调用(上下文,[BarData)-> 无],可选)- 用于算法的 handle_data 函数。当
data_frequency == 'minute'
时,每分钟被调用一次,或者当data_frequency == 'daily'
时,每天被调用一次。 - before_trading_start(可调用(上下文,[BarData)-> 无],可选)- 算法的 before_trading_start 函数。在每个交易日开始前被调用一次(在第一天的 initialize 之后)。
- 分析(可调用[(上下文,pd.DataFrame)-> 无],可选)- 用于算法的分析函数。该函数在回测结束时被调用一次,并传递上下文和性能数据。
- 数据频率 ({‘daily’, ‘minute’}, 可选) – 算法运行的数据频率。
- 包 (str*, 可选) – 用于加载运行回测所需数据的包的名称。默认值为‘quantopian-quandl’。
- 包时间戳 (datetime, 可选) – 查找包数据的时间戳。默认值为当前时间。
- 交易日历 (TradingCalendar, 可选) – 用于回测的交易日历。
- 指标集 (可迭代[Metric]或str, 可选) – 模拟中要计算的指标集。如果传递的是字符串,则使用
zipline.finance.metrics.load()
解析该集。 - 基准回报 (pd.Series, 可选) – 用于作为基准的回报序列。
- 默认扩展 (bool*, 可选) – 是否加载默认的 zipline 扩展。该扩展位于
$ZIPLINE_ROOT/extension.py
。 - 扩展 (可迭代[str]*, 可选) – 要加载的任何其他扩展的名称。每个元素可以是像
a.b.c
这样的点分模块路径,也可以是像a/b/c.py
这样的以.py
结尾的 python 文件路径。 - 严格扩展 (bool*, 可选) – 如果加载任何扩展失败,是否应使运行失败。如果此项为假,则会发出警告而不是失败。
- 环境 (映射[str -> str], 可选) – 要使用的操作系统环境。许多扩展使用此参数来获取参数。默认值为
os.environ
。 - 交易记录 (str 或 zipline.finance.blotter.Blotter, 可选) – 与该算法一起使用的交易记录。如果作为字符串传递,我们会在
zipline.extensions.register
注册的交易记录构造函数中查找,并调用它,不带任何参数。默认值是一个永远不会取消订单的zipline.finance.blotter.SimulationBlotter
。
返回值:
perf – 算法的日绩效。
返回类型:
pd.DataFrame
另请参阅
zipline.data.bundles.bundles
可用的数据包。
交易算法 API
以下方法可在initialize
、handle_data
和before_trading_start
API 函数中使用。
在所有列出的函数中,self
参数指的是当前执行的TradingAlgorithm
实例。
数据对象
class zipline.protocol.BarData
提供从算法 API 函数访问每分钟和每日价格/成交量数据的方法。
还提供实用方法来确定资产是否存活,以及它是否有最近的交易数据。
该对象的一个实例作为data
传递给handle_data()
和before_trading_start()
。
参数:
- data_portal (DataPortal) – 条形价格数据的提供者。
- simulation_dt_func (可调用) – 返回当前模拟时间的函数。这通常绑定到 TradingSimulation 的方法。
- 数据频率 ({‘分钟’**, ‘每日’}) – 条形数据的频率;即数据是每日还是分钟条形图
- 限制条件 (zipline.finance.asset_restrictions.Restrictions) – 结合并返回来自多个来源的限制列表信息的对象
can_trade()
对于给定的资产或资产的可迭代对象,如果以下所有条件都为真,则返回 True:
- 资产在当前模拟时间的会话期间存活(如果当前模拟时间不是市场分钟,我们使用下一个会话)。
- 资产的交易所当前模拟时间或模拟日历的下一个市场分钟是开放的。
- 资产有已知的最后价格。
参数:
资产 (zipline.assets.Asset 或 可迭代 的 zipline.assets.Asset) – 应确定可交易性的资产。
注释
上述第二个条件需要进一步解释:
- 如果资产的交易所日历与模拟日历相同,则此条件始终返回 True。
- 如果模拟日历中有市场分钟超出该资产的交易所交易时间(例如,如果模拟运行在 CMES 日历上,但资产是 MSFT,它在 NYSE 交易),在这些分钟内,此条件将返回 False(例如,东部时间工作日早上 3:15,此时 CMES 开放但 NYSE 关闭)。
返回:
可交易 – 布尔值或布尔序列,指示在当前分钟内请求的资产是否可以交易。
返回类型:
current()
返回给定资产在当前模拟时间的给定字段的“当前”值。
参数:
- 资产 (zipline.assets.Asset 或 可迭代 的 zipline.assets.Asset) – 请求数据的资产。
- 字段 (str 或 可迭代[str]**) – 请求的数据字段。有效字段名包括:“价格”、“最后交易价”、“开盘价”、“最高价”、“最低价”、“收盘价”和“成交量”。
返回:
当前值 – 请参见下面的注释。
返回类型:
标量、pandas 系列或 pandas 数据框。
注释
此函数的返回类型取决于其输入的类型:
- 如果请求了单个资产和单个字段,返回值是一个标量(根据字段的不同,可能是浮点数或
pd.Timestamp
)。 - 如果请求了单个资产和字段列表,返回值是一个
pd.Series
,其索引是请求的字段。 - 如果请求了资产列表和单个字段,返回值是一个
pd.Series
,其索引是资产。 - 如果请求了资产列表和字段列表,返回值是一个
pd.DataFrame
。返回的数据框的列将是请求的字段,数据框的索引将是请求的资产。
对于字段
产生的值如下:
- 请求“价格”将返回资产的最新收盘价,如果本分钟没有交易,则从较早的时间点前向填充。如果没有最新已知值(可能是因为资产从未交易过,或者已经退市),则返回 NaN。如果找到值,并且为了获取该值我们不得不跨越调整边界(如拆分、股息等),则在返回之前将该值调整为当前模拟时间。
- 请求“开盘”、“最高”、“最低”或“收盘”将返回当前分钟的开盘、最高、最低或收盘价。如果本分钟没有交易发生,则返回
NaN
。 - 请求“成交量”将返回当前分钟的成交总量。如果本分钟没有交易发生,则返回 0。
- 请求“最后交易”将返回资产最后一次交易的分钟时间,即使资产已经停止交易。如果没有最后一次已知值,则返回
pd.NaT
。
如果当前模拟时间对于某个资产不是有效的市场时间,我们将使用最近的市场收盘价。
history()
返回一个长度为bar_count
的尾随窗口,包含给定资产、字段和频率的数据,并根据当前模拟时间调整了拆分、股息和合并。
缺失数据的行为与current()
的注释中描述的行为相同。
参数:
- 资产 (zipline.assets.Asset 或 zipline.assets.Asset的可迭代对象) – 请求数据的资产。
- 字段 (字符串 或 字符串的可迭代对象) – 请求的数据字段。有效字段名称包括:“价格”、“最后交易”、“开盘”、“最高”、“最低”、“收盘”和“成交量”。
- bar_count (int) – 请求的数据观测值数量。
- 频率 (str) – 字符串,指示是加载每日数据还是每分钟数据。传递‘1m’表示每分钟数据,‘1d’表示每日数据。
返回值:
历史记录 – 请参阅下面的注释。
返回类型:
pd.Series 或 pd.DataFrame 或 pd.Panel
注意
此函数的返回类型取决于assets
和fields
的类型:
- 如果请求单个资产和单个字段,返回的值是一个长度为
bar_count
的pd.Series
,其索引为pd.DatetimeIndex
。 - 如果请求单个资产和多个字段,返回的值是一个具有形状
(bar_count, len(fields))
的pd.DataFrame
。该数据框的索引将是一个pd.DatetimeIndex
,其列将是fields
。 - 如果请求多个资产和单个字段,返回的值是一个具有形状
(bar_count, len(assets))
的pd.DataFrame
。该数据框的索引将是一个pd.DatetimeIndex
,其列将是assets
。 - 如果请求多个资产和多个字段,返回的值是一个具有 pd.MultiIndex 的
pd.DataFrame
,包含pd.DatetimeIndex
和assets
的对,而列将包含字段(s)。它具有形状(bar_count * len(assets), len(fields))
。pd.MultiIndex 的名称是
date
如果频率 == ‘1d’或 `date_time` 如果频率 == ‘1m
, 和asset
如果当前模拟时间不是有效的市场时间,我们使用最后一个市场收盘价代替。
is_stale()
对于给定的资产或资产的可迭代对象,如果资产存活且当前模拟时间没有交易数据,则返回 True。
如果资产从未交易过,返回 False。
如果当前模拟时间不是有效的市场时间,我们使用当前时间检查资产是否存活,但我们使用最后一个市场分钟/天进行交易数据检查。
参数:
assets (zipline.assets.Asset 或 iterable of zipline.assets.Asset) – 应确定其过时性的资产(s)。
返回值:
is_stale – 布尔值或布尔序列,指示所请求的资产(s)是否过时。
返回类型:
调度函数
zipline.api.schedule_function(self, func, date_rule=None, time_rule=None, half_days=True, calendar=None)
安排一个函数在未来重复调用。
参数:
- func (可调用) – 规则触发时要执行的函数。
func
应该与handle_data
具有相同的签名。 - date_rule (zipline.utils.events.EventRule*,* 可选) – 用于确定执行
func
的日期的规则。如果未传递,则函数将在每个交易日运行。 - time_rule (zipline.utils.events.EventRule*,* 可选) – 用于确定执行
func
的时间的规则。如果未传递,则函数将在一天的第一个市场分钟的末尾执行。 - half_days (bool, 可选) – 此规则是否应在半天内触发?默认为 True。
- calendar (Sentinel*,* 可选) – 用于计算依赖交易日历的规则的日历。
另请参阅
zipline.api.date_rules
, zipline.api.time_rules
class zipline.api.date_rules
用于基于日期的schedule_function()
规则的工厂。
另请参阅
schedule_function()
static every_day()
创建一个每天触发的规则。
返回:
rule
返回类型:
zipline.utils.events.EventRule
static month_end(days_offset=0)
创建一个规则,该规则在每月结束前固定数量的交易天数触发。
参数:
days_offset (int, optional) – 触发前距离月末的交易天数。默认值为 0,即在每月最后一天触发。
返回:
rule
返回类型:
zipline.utils.events.EventRule
static month_start(days_offset=0)
创建一个规则,该规则在每月开始后固定数量的交易天数触发。
参数:
days_offset (int, optional) – 每个月触发前等待的交易天数。默认值为 0,即在每月第一个交易日触发。
返回:
rule
返回类型:
zipline.utils.events.EventRule
static week_end(days_offset=0)
创建一个规则,该规则在每周结束前固定数量的交易天数触发。
参数:
days_offset (int, optional) – 触发前距离周末的交易天数。默认值为 0,即在每周最后一个交易日触发。
static week_start(days_offset=0)
创建一个规则,该规则在每周开始后固定数量的交易天数触发。
参数:
days_offset (int, optional) – 每周触发前等待的交易天数。默认值为 0,即在每周第一个交易日触发。
class zipline.api.time_rules
用于基于时间的schedule_function()
规则的工厂。
另请参阅
schedule_function()
every_minute
别名为Always
static market_close(offset=None, hours=None, minutes=None)
创建一个规则,该规则在收盘时固定偏移量触发。
偏移量可以指定为datetime.timedelta
,或者指定为小时和分钟数。
参数:
- offset (datetime.timedelta, optional) – 如果传递,则在收盘时触发的偏移量。必须至少为 1 分钟。
- hours (int, optional) – 如果传递,则在收盘前等待的小时数。
- minutes (int, 可选) – 如果传入,这是市场收盘前等待的分钟数。
返回:
rule
返回类型:
zipline.utils.events.EventRule
注意
如果没有传入参数,默认的偏移量是市场收盘前一分钟。
如果传入offset
,则不得传入hours
和minutes
。相反,如果传入了hours
或minutes
,则不得传入offset
。
static market_open(offset=None, hours=None, minutes=None)
创建一个在市场开盘后固定偏移量触发的规则。
偏移量可以指定为datetime.timedelta
,或者指定为小时和分钟数。
参数:
- offset (datetime.timedelta, 可选) – 如果传入,这是触发时距离市场开盘的偏移量。必须至少为 1 分钟。
- hours (int, 可选) – 如果传入,这是市场开盘后等待的小时数。
- minutes (int, 可选) – 如果传入,这是市场开盘后等待的分钟数。
返回:
rule
返回类型:
zipline.utils.events.EventRule
注意
如果没有传入参数,默认的偏移量是市场开盘后一分钟。
如果传入offset
,则不得传入hours
和minutes
。相反,如果传入了hours
或minutes
,则不得传入offset
。
订单
zipline.api.order(self, asset, amount, limit_price=None, stop_price=None, style=None)
下订单购买固定数量的股票。
参数:
- asset (Asset) – 要订购的资产。
- amount (int) – 要订购的股票数量。如果
amount
为正数,这是要购买或平仓的股票数量。如果amount
为负数,这是要出售或做空的股票数量。 - limit_price (float, 可选) – 订单的限价。
- stop_price (float, 可选) – 订单的止损价。
- style (ExecutionStyle*,* 可选) – 订单的执行风格。
返回:
order_id – 此订单的唯一标识符,如果没有下订单,则为 None。
返回类型:
str 或 None
注意
limit_price
和 stop_price
参数提供了传递常见执行风格的简写方式。传递 limit_price=N
等同于 style=LimitOrder(N)
。类似地,传递 stop_price=M
等同于 style=StopOrder(M)
,而传递 limit_price=N
和 stop_price=M
等同于 style=StopLimitOrder(N, M)
。同时传递 style
和 limit_price
或 stop_price
是错误的。
另请参阅
zipline.finance.execution.ExecutionStyle
, zipline.api.order_value()
, zipline.api.order_percent()
zipline.api.order_value(self, asset, value, limit_price=None, stop_price=None, style=None)
下固定金额的订单。
等同于 order(asset, value / data.current(asset, 'price'))
。
参数:
- asset (Asset) – 要订购的资产。
- value (float) – 要交易的
asset
的价值量。买入或卖出的股票数量将等于value / current_price
。 - limit_price (float, optional) – 订单的限价。
- stop_price (float, optional) – 订单的止损价。
- style (ExecutionStyle) – 订单的执行风格。
返回:
order_id – 该订单的唯一标识符。
返回类型:
注意
有关 limit_price
、stop_price
和 style
的更多信息,请参阅 zipline.api.order()
另请参阅
zipline.finance.execution.ExecutionStyle
, zipline.api.order()
, zipline.api.order_percent()
zipline.api.order_percent(self, asset, percent, limit_price=None, stop_price=None, style=None)
根据当前投资组合价值的指定百分比,在特定资产中下订单。
参数:
- asset (Asset) – 该订单所针对的资产。
- percent (float) – 将投资组合价值的百分比分配给
asset
。这以小数形式指定,例如:0.50 表示 50%。 - limit_price (float, optional) – 订单的限价。
- stop_price (float, optional) – 订单的止损价。
- 风格 (ExecutionStyle) – 订单的执行风格。
Returns:
订单 ID – 此订单的唯一标识符。
Return type:
Notes
“有关limit_price
、stop_price
和style
的更多信息,请参阅zipline.api.order()
”
See also
zipline.finance.execution.ExecutionStyle
, zipline.api.order()
, zipline.api.order_value()
zipline.api.order_target(self, asset, target, limit_price=None, stop_price=None, style=None)
“下达订单以调整持仓至目标股数。如果持仓不存在,这相当于下达新订单。如果持仓存在,这相当于下达订单以实现目标股数与当前股数之间的差额。”
Parameters:
- 资产 (Asset) – 此订单所涉及的资产。
- 目标 (int) –
asset
的期望股数。 - 限价 (float, optional) – 订单的限价。
- 止损价 (float, optional) – 订单的止损价。
- 风格 (ExecutionStyle) – 订单的执行风格。
Returns:
订单 ID – 此订单的唯一标识符。
Return type:
Notes
order_target
不考虑任何未完成的订单。例如:
order_target(sid(0), 10) order_target(sid(0), 10)
“此代码将导致sid(0)
的 20 股,因为第一个order_target
调用尚未执行时,第二个order_target
调用已经执行。”
“有关limit_price
、stop_price
和style
的更多信息,请参阅zipline.api.order()
”
See also
zipline.finance.execution.ExecutionStyle
, zipline.api.order()
, zipline.api.order_target_percent()
, zipline.api.order_target_value()
zipline.api.order_target_value(self, asset, target, limit_price=None, stop_price=None, style=None)
下订单以调整持仓至目标价值。如果持仓不存在,这相当于下新订单。如果持仓已存在,这相当于下订单以弥补目标价值与当前价值之间的差额。如果所订购的资产是期货,则计算的“目标价值”实际上是目标风险敞口,因为期货没有“价值”。
参数:
- 资产 (资产) – 此订单所针对的资产。
- 目标 (浮点数) –
资产
的期望总价值。 - 限价 (浮点数, 可选) – 订单的限价。
- 止损价 (浮点数, 可选) – 订单的止损价。
- 风格 (执行风格) – 订单的执行风格。
返回:
订单 ID – 此订单的唯一标识符。
返回类型:
注意
order_target_value
不考虑任何未完成订单。例如:
order_target_value(sid(0), 10) order_target_value(sid(0), 10)
这段代码将导致sid(0)
的 20 美元,因为第一次调用order_target_value
时,第二次order_target_value
调用尚未完成。
有关limit_price
、stop_price
和style
的更多信息,请参阅 zipline.api.order()
另请参阅
zipline.finance.execution.ExecutionStyle
, zipline.api.order()
, zipline.api.order_target()
, zipline.api.order_target_percent()
zipline.api.order_target_percent(self, asset, target, limit_price=None, stop_price=None, style=None)
下订单以调整持仓至当前资产组合价值的目标百分比。如果持仓不存在,这相当于下新订单。如果持仓已存在,这相当于下订单以弥补目标百分比与当前百分比之间的差额。
参数:
- 资产 (资产) – 此订单所针对的资产。
- 目标 (浮点数) – 希望分配给
资产
的资产组合价值的百分比。这以小数形式指定,例如:0.50 表示 50%。 - 限价 (浮点数, 可选) – 订单的限价。
- 止损价 (浮点数, 可选) – 订单的止损价。
- 样式 (执行样式) – 订单的执行样式。
返回:
订单 ID – 此订单的唯一标识符。
返回类型:
注意
order_target_value
不考虑任何未成交的订单。例如:
order_target_percent(sid(0), 10) order_target_percent(sid(0), 10)
这段代码将导致 20%的资产分配给 sid(0),因为在第二次调用order_target_percent
时,第一次调用order_target_percent
尚未成交。
有关限价
、止损价
和样式
的更多信息,请参阅zipline.api.order()
另请参阅
zipline.finance.execution.ExecutionStyle
, zipline.api.order()
, zipline.api.order_target()
, zipline.api.order_target_value()
class zipline.finance.execution.ExecutionStyle
订单执行样式的基类。
property exchange
此订单应发送至的交易所。
abstract get_limit_price(is_buy)
获取此订单的限价。返回值为 None 或一个大于等于 0 的数值。
abstract get_stop_price(is_buy)
获取此订单的止损价。返回值为 None 或一个大于等于 0 的数值。
class zipline.finance.execution.MarketOrder(exchange=None)
执行样式,订单应以当前市场价格成交。
这是使用order()
下达的订单的默认设置。
class zipline.finance.execution.LimitOrder(limit_price, asset=None, exchange=None)
执行样式,订单应以等于或优于指定限价的价格成交。
参数:
限价 (浮点数) – 买入的最高价格,或卖出的最低价格,订单应在此价格成交。
class zipline.finance.execution.StopOrder(stop_price, asset=None, exchange=None)
执行样式,表示如果市场价格达到阈值,则应下达市价订单。
参数:
止损价 (浮点数) – 应下达订单的价格阈值。对于卖出,如果市场价格低于此值,则下达订单。对于买入,如果市场价格高于此值,则下达订单。
class zipline.finance.execution.StopLimitOrder(limit_price, stop_price, asset=None, exchange=None)
执行样式,表示如果市场价格达到阈值,则应下达限价订单。
参数:
- 限价 (浮点数) – 买入的最高价格,或卖出的最低价格,订单应在此价格或更优价格成交。
- stop_price (浮点数) – 应下达订单的价格阈值。对于卖出,如果市场价格低于此值,将下达订单。对于买入,如果市场价格高于此值,将下达订单。
zipline.api.get_order(self, order_id)
根据订单函数返回的订单 id 查找订单。
参数:
order_id (字符串) – 订单的唯一标识符。
返回:
order – 订单对象。
返回类型:
订单
zipline.api.get_open_orders(self, asset=None)
检索所有当前的未结订单。
参数:
asset (Asset) – 如果传递且不为 None,则仅返回给定资产的未结订单,而不是所有未结订单。
返回:
open_orders – 如果没有传递资产,这将返回一个字典,将资产映射到包含该资产所有未结订单的列表。如果传递了资产,则这将返回该资产的未结订单列表。
返回类型:
zipline.api.cancel_order(self, order_param)
取消一个未结订单。
参数:
order_param (字符串 或 Order) – 要取消的 order_id 或订单对象。
订单取消政策
zipline.api.set_cancel_policy(self, cancel_policy)
为模拟设置订单取消政策。
参数:
cancel_policy (CancelPolicy) – 要使用的取消政策。
另请参阅
zipline.api.EODCancel
, zipline.api.NeverCancel
class zipline.finance.cancel_policy.CancelPolicy
抽象取消政策接口。
abstract should_cancel(event)
是否应该取消所有未结订单?
参数:
event (枚举值) –
事件类型之一:
zipline.gens.sim_engine.BAR
zipline.gens.sim_engine.DAY_START
zipline.gens.sim_engine.DAY_END
zipline.gens.sim_engine.MINUTE_END
返回:
should_cancel – 是否应取消所有未结订单?
返回类型:
zipline.api.EODCancel(warn_on_cancel=True)
该政策在一天结束时取消未结订单。目前,Zipline 仅将此政策应用于每分钟模拟。
参数:
warn_on_cancel (布尔值, 可选) – 如果这导致订单被取消,是否应发出警告?
zipline.api.NeverCancel()
订单不会自动取消。
资产
zipline.api.symbol(self, symbol_str, country_code=None)
通过其股票代码查找股票。
参数:
返回:
equity – 在当前符号查找日期持有股票代码的股票。
返回类型:
zipline.assets.Equity
引发:
SymbolNotFound – 当符号在当前查找日期未被持有时引发。
另请参阅
zipline.api.set_symbol_lookup_date()
zipline.api.symbols(self, *args, **kwargs)
查找多个股票作为列表。
参数:
返回:
equities – 在当前符号查找日期持有给定股票代码的股票。
返回类型:
list[zipline.assets.Equity]
引发:
SymbolNotFound – 当其中一个符号在当前查找日期未被持有时引发。
另请参阅
zipline.api.set_symbol_lookup_date()
zipline.api.future_symbol(self, symbol)
使用给定符号查找期货合约。
参数:
symbol (str) – 所需合约的符号。
返回:
future – 以symbol
名称交易的期货。
返回类型:
zipline.assets.Future
引发:
SymbolNotFound – 当未找到名为‘symbol’的合约时引发。
zipline.api.set_symbol_lookup_date(self, dt)
设置符号解析为其资产的日期(符号可能在不同时间映射到不同的公司或底层资产)
参数:
dt (datetime) – 新的符号查找日期。
zipline.api.sid(self, sid)
通过其唯一资产标识符查找资产。
参数:
sid (int) – 标识资产的唯一整数。
返回:
asset – 具有给定sid
的资产。
返回类型:
zipline.assets.Asset
引发:
SidsNotFound – 当请求的sid
未映射到任何资产时。
Zipline 3.0 中文文档(二)(5)https://developer.aliyun.com/article/1523987