【历史文档】策略回测-重要对象
由qxiao创建,最终由small_q 被浏览 782 用户
更新
本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明
新版量化开发IDE(AIStudio):
https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW
新版模版策略:
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
新版数据平台:
https://bigquant.com/data/home
https://bigquant.com/wiki/doc/dai-PLSbc1SbZX
新版表达式算子:
https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS
新版因子平台:
https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5
\
Equity
定义
class Equity
主要变量:
sid: integer: 标的ID
symbol: string: 标的代码
asset_name: string: 标的全称
start_date: datetime 该标的第一天开始交易的时间
end_date: datetime 该标的最后一天交易的时间
示例代码
# 股票示例
equity = context.symbol('000001.SHA')
print(equity.symbol)
# 期货示例
equity = context.future_symbol('IF1809.CFE')
print(equity.symbol)
Order
定义
class Order
当你在算法中生成一个(Order)订单后,Order会有以下属性
主要变量
status: integer - 订单状态 0表示该订单还未实际成交,1表示订单已经成交,2表示订单已经取消
created: datetime - 订单生成时间
stop: float - 可选的止损价
limit: float - 可选的限定价
amount: integer- 订单数量
sid: security- 对象订单symbol
filled: integer - 截至到目前为止,订单已完成数量
stop_reached: boolean - 如果股票市价到达止损价为true
limit_reached: boolean - 如果股票市价到达限定价为true
commission: integer - 订单产生的佣金
示例代码
# 输出下单的股票
open_orders = context.get_open_orders()
for equity in open_orders:
orders = open_orders[equity]
for order in orders:
print(context.order.sid)
Portfolio
定义
class Portfolio
交易账户,可以通过 context.portfolio 获取
主要变量:(针对股票)
cash: float 账户现金
start_date: datetime 交易账户对象统计开始时间
end_date: datetime交易账户对象统计结束时间
starting_cash: float 交易账户初始金额
portfolio_value: float 账户总价值(包括持仓市值+现金)
positions_value: float 持仓市值
positions: dictionary 持仓
positions_exposure: float 持仓风险暴露
capital_used: float 账户买卖所消耗的净资产,为正时代表花费
pnl: float 持仓收益
returns: float账户累计收益,比如10%返回的是0.1
主要变量:(针对期货)
cash: float 账户现金
start_date: datetime 交易账户对象统计开始时间
total_margin: float 持仓总保证金占用
positions_exposure: float 持仓风险暴露
total_margin_long: float 持多仓总保证金占用
total_margin_short: float 持空仓总保证金占用
pnl: float 持仓盈亏
positions_value: float 持仓市值,目前为None
returns: float 投资组合累计收益
starting_cash: float 初始资金
capital_used: float 账户上的资金流动,如收益费扣除、平仓盈亏、期货结算盈亏等
portfolio_value: float 账户总资产
Positions
定义
class Position
持仓对象表示目前账户持有股票,为Dictionary格式,因此如果你需要查询某只股票的具体持仓(如中国平安 ‘000001.SZA’),查询语法为:context.portfolio.positions[context.symbol('000001.SZA')] 主要变量(针对股票):
amount: integer 持仓数量
cost_basis: float 持仓成本价
last_sale_price: float 股票在交易时间的最后价格,等价于收盘价
sid: integer 持仓股票的ID
last_sale_date: Timestamp 最新日期
asset: equity 标的
主要变量(针对期货):
amount: integer 总持仓数量
today_amount: integer 今持仓数量
frozen_amount: integer 持仓冻结数量
cost_basis: float 持仓均价
available_close_amount: tuple 可平仓数量。第一个元素为该期货标的多单可平量,第二个元素为该期货标的空单可平量
available_close_amount_long: integer 多头持仓可平量
available_close_amount_short: integer 空头持仓可平量
holding_pnl_long: float 多头持仓盈亏
holding_pnl_short: float 空头持仓盈亏
margin_long: float 多头保证金占用
margin_short: float 空头保证金占用
last_sale_date: Timestamp 最新日期
last_sale_price: float 期货标的在交易时间的最后价格,等价于收盘价
asset: equity 标的
示例代码
# 打印持仓的股票
positions = context.portfolio.positions
for equity in positions:
position = positions[equity]
print(position.sid)
\