历史文档

【历史文档】策略回测-重要对象

由qxiao创建,最终由small_q 被浏览 780 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发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 获取

 {w:100}主要变量:(针对股票)

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')]  {w:100}主要变量(针对股票):

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)

\

{link}