QA RISK 插件

QA RISK 插件

QA_Risk 插件是 QA 对于风险、绩效的一个评估插件。

QA_Risk 的加载方式是直接加载:

1
2
3
4
5
6
7
8
9
# coding: utf-8
import QUANTAXIS as QA
risk = QA.QA_Risk(account, benchmark_code='000300', benchmark_type='index_cn', if_fq = True)
"""
account: QA_Account类/QA_PortFolioView类
benchmark_code:[str]对照参数代码
benchmark_type: [QA.PARAM]对照参数的市场
if_fq: [Bool]原account是否使用复权数据
"""

加载了 account 以后,我们可以对 account 进行分析,以下字段都是惰性计算的:

  • 账户信息:risk.account.account_cookie
  • 组合信息:risk.account.portfolio_cookie
  • 用户信息:risk.account.user_cookie
  • 年化百分比收益:risk.annualize_return
  • 账户百分比利润:risk.profit
  • 最大回撤:risk.max_dropback
  • 账户交易时长:risk.time_gap
  • 账户资金曲线波动率:risk.volatility
  • 对照标的的代码:risk.benchmark_code
  • 对照标的的百分比收益:self.benchmark_profit
  • beta 值:risk.beta
  • alpha 值:risk.alpha
  • 夏普值:risk.sharpe
  • 初始资金:risk.init_cash
  • 最终总资产:risk.last_assets
  • 账户的总手续费:risk.total_commission
  • 账户的总印花税:risk.total_tax
  • 账户资金曲线:risk.assets
  • 对照标的的资金曲线:risk.benchmark_assets
  • 每日持仓市值表:risk.market_value

画图方法:

  • 画出资金曲线:plot_assets_curve
  • 用热力图绘制每日持仓:plot_dailyhold
  • 用热力图画图信号列表::plot_signal

下单/交易/结算的整个流程示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import QUANTAXIS as QA
# 初始化一个account
Account = QA.QA_Account()

# 初始化一个回测类
B = QA.QA_BacktestBroker()

# 账户可用资金
print('账户可用资金:{}'.format(Account.cash_available))
# 账户可用资金:1000000
# 在第一天的时候,全仓买入000001
Order = Account.send_order(code='000001',
price=5,
money=Account.cash_available,
time='2018-05-09',
towards=QA.ORDER_DIRECTION.BUY,
order_model=QA.ORDER_MODEL.MARKET,
amount_model=QA.AMOUNT_MODEL.BY_MONEY
)

# 打印order占用的资金
print('ORDER的占用资金: {}'.format((Order.amount * Order.price) * (1+Account.commission_coeff)))
# ORDER的占用资金:999049.7000000001

# 账户剩余资金
print('账户剩余资金 :{}'.format(Account.cash_available))
# 账户剩余资金:0(这里很奇怪,应该是950.30)

# 回测类接受订单,并返回撮合结果
rec_mes = B.receive_order(QA.QA_Event(order = Order))
print(rec_mes)

# 账户类接收到回测返回的回报信息,更新账户
Account.receive_deal(rec_mes)
print('账户可用资金 :{}'.format(Account.cash_available))
# 按书上来说,应该是3339,原因是下单的时候模式是市价单模式
# (QA.ORDER_MODEL.MARKET),故实际成交额为10.955元

# 账户持仓
Account.hold

# 买入后账户现金表被扩展
Account.cash

# 因为A股市场实现t+1交易制度,所以此时可卖数量为0
Account.sell_available

# 执行结算
Account.settle()

# 结算后
Account.cash
Account.cash_available
Account.sell_available
Account.hold

# 执行卖出操作
holdnum = Account.sell_available.get('000001', 0)
holdnum
# 申报一个卖出单,把可卖全部卖出
Order = Account.send_order(code = '000001',
price = 11,
amount = holdnum,
time = '2018-05-10',
towards = QA.ORDER_DIRECTION.SELL,
order_model = QA.ORDER_MODEL.MARKET,
amount_model = QA.AMOUNT_MODEL.BY_AMOUNT)

rec_mes = B.receive_order(QA.QA_Event(order = Order))
print(rec_mes)
Account.receive_deal(rec_mes)

不知是什么原因,后面全部出错,大概是框架更新导致的吧,不过看了一下,这个教程后面还有一个差不多的接受,大概后天能看到那里,希望那个不要出错吧。

# Python

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×