Skip to content

Latest commit

 

History

History
1990 lines (1776 loc) · 37.1 KB

QUANTAXIS回测分析全过程讲解.md

File metadata and controls

1990 lines (1776 loc) · 37.1 KB
import QUANTAXIS as QA
try:
    assert QA.__version__>='1.0.45'
except AssertionError:
    print('pip install QUANTAXIS >= 1.0.45 请升级QUANTAXIS后再运行此示例')
print('首先确定你已经完成了对于QUANTAXIS的基础认知,以及在本地存储完毕了QUANTAXIS的数据库')
首先确定你已经完成了对于QUANTAXIS的基础认知,以及在本地存储完毕了QUANTAXIS的数据库

QUANTAXIS 回测的一些基础知识

QA回测的核心是两个类

QA_BacktestBroker
QA_Account

回测数据的引入/迭代

QA.QA_fetch_stock_day_adv
QA.QA_fetch_stock_min_adv

指标的计算

DataStruct.add_func

对于账户的灵活运用

QA_Account
QA_Risk
QA_Portfolio
QA_PortfolioView
QA_User

STEP1 初始化账户,初始化回测broker

Account=QA.QA_Account()
Broker=QA.QA_BacktestBroker()
# 打印账户的信息
try:
    from pprint import  pprint as print
except:
    pass
print(Account.message)
{'account_cookie': 'Acc_CgcMzSZD',
 'allow_sellopen': False,
 'allow_t0': False,
 'broker': 'backtest',
 'cash': [1000000],
 'commission_coeff': 0.00025,
 'current_time': None,
 'history': [],
 'init_assets': 1000000,
 'margin_level': False,
 'market_type': 'stock_cn',
 'portfolio_cookie': None,
 'running_time': datetime.datetime(2018, 6, 6, 13, 57, 58, 389135),
 'source': 'account',
 'strategy_name': None,
 'tax_coeff': 0.0015,
 'trade_index': [],
 'user_cookie': None}

首先讲解Account类:

QA_Account在初始化的时候,可以自己指定很多信息:

QA_Account(strategy_name=None, user_cookie=None, market_type=MARKET_TYPE.STOCK_CN, frequence=FREQUENCE.DAY,
                 broker=BROKER_TYPE.BACKETEST, portfolio_cookie=None, account_cookie=None,
                 sell_available={}, init_assets=None, cash=None, history=None, commission_coeff=0.00025, tax_coeff=0.0015,
                 margin_level=False, allow_t0=False, allow_sellopen=False)
                 
        :param strategy_name:  策略名称
        :param user_cookie:   用户cookie
        :param market_type:   市场类别 默认QA.MARKET_TYPE.STOCK_CN A股股票
        :param frequence:     账户级别 默认日线QA.FREQUENCE.DAY
        :param broker:        BROEKR类 默认回测 QA.BROKER_TYPE.BACKTEST
        :param portfolio_cookie: 组合cookie
        :param account_cookie:   账户cookie
        :param sell_available:   可卖股票数
        :param init_assets:       初始资产  默认 1000000 元 (100万)
        :param cash:              可用现金  默认 是 初始资产  list 类型
        :param history:           交易历史
        :param commission_coeff:  交易佣金 :默认 万2.5   float 类型
        :param tax_coeff:         印花税   :默认 千1.5   float 类型
        :param margin_level:      保证金比例 默认False
        :param allow_t0:          是否允许t+0交易  默认False
        :param allow_sellopen:    是否允许卖空开仓  默认False
# 重设账户初始资金

Account.reset_assets(200000)
Account.account_cookie='JCSC_EXAMPLE'
Account.init_assets
200000

Account 有很多方法,暂时不详细展开,我们先直接进入下一步

SETP2:引入回测的市场数据

引入方法非常简单,直接使用QA_fetch_stock_day_adv系列即可

  • code 可以是多种多样的选取方式
1. QA.QA_fetch_stock_list_adv().code.tolist() # 获取全市场的股票代码
2. QA.QA_fetch_stock_block_adv().get_block('云计算').code  # 按版块选取
3. code= ['000001','000002'] # 自己指定
  • 数据获取后,to_qfq() 即可获得前复权数据
data=DataSturct.to_qfq()
# QA.QA_fetch_stock_list_adv().code.tolist()
# QA.QA_fetch_stock_block_adv().get_block('云计算').code
data=QA.QA_fetch_stock_day_adv(['000001','000002','000004','600000'],'2017-09-01','2018-05-20')
data
< QA_DataStruct_Stock_day with 4 securities >
data=data.to_qfq()
# data.data

STEP3:计算一些指标

指标的计算可以在回测前,也可以在回测中进行

回测前的计算则是批量计算,效率较高

回测中的计算,效率略低,但代码量较小,易于理解

PS: 指标的相关介绍参见 QUANTAXIS的指标系统

import numpy as np
import pandas as pd
def MACD_JCSC(dataframe,SHORT=12,LONG=26,M=9):
    """
    1.DIF向上突破DEA,买入信号参考。
    2.DIF向下跌破DEA,卖出信号参考。
    """
    CLOSE=dataframe.close
    DIFF =QA.EMA(CLOSE,SHORT) - QA.EMA(CLOSE,LONG)
    DEA = QA.EMA(DIFF,M)
    MACD =2*(DIFF-DEA)

    CROSS_JC=QA.CROSS(DIFF,DEA)
    CROSS_SC=QA.CROSS(DEA,DIFF)
    ZERO=0
    return pd.DataFrame({'DIFF':DIFF,'DEA':DEA,'MACD':MACD,'CROSS_JC':CROSS_JC,'CROSS_SC':CROSS_SC,'ZERO':ZERO})
ind=data.add_func(MACD_JCSC)
ind.xs('000001',level=1)['2018-01'].plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1cf0d591d68>

png

ind.xs('000001',level=1)['2018-01']
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
DIFF DEA MACD CROSS_JC CROSS_SC ZERO
date
2018-01-02 0.110686 0.103225 0.014921 1 0 0
2018-01-03 0.100387 0.102657 -0.004541 0 1 0
2018-01-04 0.084801 0.099086 -0.028570 0 0 0
2018-01-05 0.075607 0.094390 -0.037566 0 0 0
2018-01-08 0.040453 0.083603 -0.086299 0 0 0
2018-01-09 0.022012 0.071285 -0.098545 0 0 0
2018-01-10 0.038391 0.064706 -0.052629 0 0 0
2018-01-11 0.045208 0.060806 -0.031197 0 0 0
2018-01-12 0.061988 0.061043 0.001890 1 0 0
2018-01-15 0.126236 0.074081 0.104309 0 0 0
2018-01-16 0.175134 0.094292 0.161683 0 0 0
2018-01-17 0.213839 0.118201 0.191275 0 0 0
2018-01-18 0.280788 0.150718 0.260139 0 0 0
2018-01-19 0.336418 0.187858 0.297119 0 0 0
2018-01-22 0.347467 0.219780 0.255374 0 0 0
2018-01-23 0.368907 0.249605 0.238603 0 0 0
2018-01-24 0.380702 0.275825 0.209755 0 0 0
2018-01-25 0.350521 0.290764 0.119515 0 0 0
2018-01-26 0.310920 0.294795 0.032249 0 0 0
2018-01-29 0.251630 0.286162 -0.069064 0 1 0
2018-01-30 0.195134 0.267957 -0.145646 0 0 0
2018-01-31 0.180544 0.250474 -0.139859 0 0 0
ind.loc['2018-01',slice(None)]
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
DIFF DEA MACD CROSS_JC CROSS_SC ZERO
date code
2018-01-02 000001 0.110686 0.103225 0.014921 1 0 0
000002 0.404554 0.189272 0.430564 0 0 0
000004 -0.717479 -0.746157 0.057357 0 0 0
600000 -0.062653 -0.054428 -0.016450 0 0 0
2018-01-03 000001 0.100387 0.102657 -0.004541 0 1 0
000002 0.511649 0.253747 0.515803 0 0 0
000004 -0.567604 -0.710447 0.285686 0 0 0
600000 -0.058690 -0.055280 -0.006820 0 0 0
2018-01-04 000001 0.084801 0.099086 -0.028570 0 0 0
000002 0.652650 0.333528 0.638244 0 0 0
000004 -0.488320 -0.666021 0.355402 0 0 0
600000 -0.054916 -0.055207 0.000582 1 0 0
2018-01-05 000001 0.075607 0.094390 -0.037566 0 0 0
000002 0.886331 0.444089 0.884484 0 0 0
000004 -0.425418 -0.617901 0.384965 0 0 0
600000 -0.048944 -0.053955 0.010022 0 0 0
2018-01-08 000001 0.040453 0.083603 -0.086299 0 0 0
000002 1.157306 0.586732 1.141148 0 0 0
000004 -0.398377 -0.573996 0.351238 0 0 0
600000 -0.044503 -0.052064 0.015122 0 0 0
2018-01-09 000001 0.022012 0.071285 -0.098545 0 0 0
000002 1.344462 0.738278 1.212368 0 0 0
000004 -0.358308 -0.530858 0.345101 0 0 0
600000 -0.038924 -0.049436 0.021025 0 0 0
2018-01-10 000001 0.038391 0.064706 -0.052629 0 0 0
000002 1.462222 0.883067 1.158309 0 0 0
000004 -0.372237 -0.499134 0.253794 0 0 0
600000 -0.008609 -0.041271 0.065324 0 0 0
2018-01-11 000001 0.045208 0.060806 -0.031197 0 0 0
000002 1.496376 1.005729 0.981293 0 0 0
... ... ... ... ... ... ... ...
2018-01-22 000004 -0.541106 -0.511879 -0.058454 0 0 0
600000 0.078336 0.049190 0.058291 0 0 0
2018-01-23 000001 0.368907 0.249605 0.238603 0 0 0
000002 2.535276 2.079891 0.910770 0 0 0
000004 -0.526304 -0.514764 -0.023080 0 0 0
600000 0.068875 0.053127 0.031496 0 0 0
2018-01-24 000001 0.380702 0.275825 0.209755 0 0 0
000002 2.600984 2.184110 0.833749 0 0 0
000004 -0.474423 -0.506696 0.064544 1 0 0
600000 0.114099 0.065322 0.097555 0 0 0
2018-01-25 000001 0.350521 0.290764 0.119515 0 0 0
000002 2.548667 2.257021 0.583292 0 0 0
000004 -0.453885 -0.496134 0.084496 0 0 0
600000 0.154610 0.083179 0.142861 0 0 0
2018-01-26 000001 0.310920 0.294795 0.032249 0 0 0
000002 2.465873 2.298792 0.334164 0 0 0
000004 -0.442190 -0.485345 0.086310 0 0 0
600000 0.165449 0.099633 0.131632 0 0 0
2018-01-29 000001 0.251630 0.286162 -0.069064 0 1 0
000002 2.255685 2.290170 -0.068970 0 1 0
000004 -0.448720 -0.478020 0.058599 0 0 0
600000 0.176043 0.114915 0.122255 0 0 0
2018-01-30 000001 0.195134 0.267957 -0.145646 0 0 0
000002 1.889068 2.209950 -0.641763 0 0 0
000004 -0.448723 -0.472160 0.046876 0 0 0
600000 0.154426 0.122817 0.063218 0 0 0
2018-01-31 000001 0.180544 0.250474 -0.139859 0 0 0
000002 1.676000 2.103160 -0.854320 0 0 0
000004 -0.537710 -0.485270 -0.104879 0 1 0
600000 0.140515 0.126357 0.028316 0 0 0

88 rows × 6 columns

SETP4:选取回测的开始和结束日期,构建回测

data_forbacktest=data.select_time('2018-01-01','2018-05-01')


for items in data_forbacktest.panel_gen:
    for item in items.security_gen:
        daily_ind=ind.loc[item.index]
        if daily_ind.CROSS_JC.iloc[0]>0:
            order=Account.send_order(
                code=item.data.code[0], 
                time=item.data.date[0], 
                amount=1000, 
                towards=QA.ORDER_DIRECTION.BUY, 
                price=0, 
                order_model=QA.ORDER_MODEL.CLOSE, 
                amount_model=QA.AMOUNT_MODEL.BY_AMOUNT
                )
            Account.receive_deal(Broker.receive_order(QA.QA_Event(order=order,market_data=item)))
        elif daily_ind.CROSS_SC.iloc[0]>0:
            if Account.sell_available.get(item.code[0], 0)>0:
                order=Account.send_order(
                    code=item.data.code[0], 
                    time=item.data.date[0], 
                    amount=Account.sell_available.get(item.code[0], 0), 
                    towards=QA.ORDER_DIRECTION.SELL, 
                    price=0, 
                    order_model=QA.ORDER_MODEL.MARKET, 
                    amount_model=QA.AMOUNT_MODEL.BY_AMOUNT
                    )
                Account.receive_deal(Broker.receive_order(QA.QA_Event(order=order,market_data=item)))
    Account.settle()
            
        #break

STEP5: 分析账户

Account.history
[['2018-01-02 15:00:00',
  '000001',
  13.7,
  1000.0,
  'Order_eJFI3mwU',
  'Trade_4rcWX3PS',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-01-03 09:30:00',
  '000001',
  13.53,
  -1000.0,
  'Order_Qxc4Mboq',
  'Trade_yVUrBc4g',
  'JCSC_EXAMPLE',
  5.0,
  20.295],
 ['2018-01-04 15:00:00',
  '600000',
  12.66,
  1000.0,
  'Order_ETydAzu6',
  'Trade_8y9dKuJc',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-01-12 15:00:00',
  '000001',
  13.55,
  1000.0,
  'Order_Qgns5xvq',
  'Trade_tUu08RE2',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-01-24 15:00:00',
  '000004',
  22.08,
  1000.0,
  'Order_xDeQcwGY',
  'Trade_fuE3mx4g',
  'JCSC_EXAMPLE',
  5.52,
  0.0],
 ['2018-01-29 09:30:00',
  '000001',
  13.93,
  -1000.0,
  'Order_EVhsUR0D',
  'Trade_G3UQJiSx',
  'JCSC_EXAMPLE',
  5.0,
  20.8875],
 ['2018-01-31 09:30:00',
  '000004',
  20.73,
  -1000.0,
  'Order_dKPcMH5R',
  'Trade_MyRfepw0',
  'JCSC_EXAMPLE',
  5.18375,
  31.1025],
 ['2018-02-02 09:30:00',
  '600000',
  13.1,
  -1000.0,
  'Order_RE4l1ZvW',
  'Trade_18MjFeYl',
  'JCSC_EXAMPLE',
  5.0,
  19.650000000000002],
 ['2018-02-05 15:00:00',
  '600000',
  13.49,
  1000.0,
  'Order_crPzt1EF',
  'Trade_3g1vTaoK',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-02-08 09:30:00',
  '600000',
  13.18,
  -1000.0,
  'Order_KU6dzHiW',
  'Trade_bQmzWVvx',
  'JCSC_EXAMPLE',
  5.0,
  19.762500000000003],
 ['2018-02-13 15:00:00',
  '000004',
  20.1,
  1000.0,
  'Order_paEsc3nM',
  'Trade_5Tfcn4NK',
  'JCSC_EXAMPLE',
  5.025000000000001,
  0.0],
 ['2018-03-08 15:00:00',
  '000001',
  12.11,
  1000.0,
  'Order_POiBVAKq',
  'Trade_jiyxQFkf',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-03-08 15:00:00',
  '000002',
  33.64,
  1000.0,
  'Order_Lt1FEkS8',
  'Trade_E4U1r3jB',
  'JCSC_EXAMPLE',
  8.41,
  0.0],
 ['2018-03-19 09:30:00',
  '000002',
  32.05,
  -1000.0,
  'Order_FRkfdiPC',
  'Trade_a7hFtQqY',
  'JCSC_EXAMPLE',
  8.0125,
  48.075],
 ['2018-03-26 09:30:00',
  '000001',
  11.03,
  -1000.0,
  'Order_WvZc9Sig',
  'Trade_Mw6Ch1aY',
  'JCSC_EXAMPLE',
  5.0,
  16.545],
 ['2018-03-29 15:00:00',
  '000002',
  34.16,
  1000.0,
  'Order_Afvx0KSs',
  'Trade_BD1L6zpm',
  'JCSC_EXAMPLE',
  8.54,
  0.0],
 ['2018-04-02 09:30:00',
  '000004',
  22.7,
  -1000.0,
  'Order_CKbxZqWv',
  'Trade_CwnGxfQU',
  'JCSC_EXAMPLE',
  5.67625,
  34.0575],
 ['2018-04-10 15:00:00',
  '000001',
  11.42,
  1000.0,
  'Order_MJfXHLSj',
  'Trade_QdgUj8WT',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-04-11 15:00:00',
  '600000',
  11.91,
  1000.0,
  'Order_M3SDGLW7',
  'Trade_GdcCbXa2',
  'JCSC_EXAMPLE',
  5.0,
  0.0],
 ['2018-04-16 09:30:00',
  '000002',
  30.39,
  -1000.0,
  'Order_k2YQsO5h',
  'Trade_twRnvpfL',
  'JCSC_EXAMPLE',
  7.598750000000001,
  45.5925]]
Account.history_table
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
datetime code price amount order_id trade_id account_cookie commission tax
0 2018-01-02 15:00:00 000001 13.70 1000.0 Order_eJFI3mwU Trade_4rcWX3PS JCSC_EXAMPLE 5.00000 0.0000
1 2018-01-03 09:30:00 000001 13.53 -1000.0 Order_Qxc4Mboq Trade_yVUrBc4g JCSC_EXAMPLE 5.00000 20.2950
2 2018-01-04 15:00:00 600000 12.66 1000.0 Order_ETydAzu6 Trade_8y9dKuJc JCSC_EXAMPLE 5.00000 0.0000
3 2018-01-12 15:00:00 000001 13.55 1000.0 Order_Qgns5xvq Trade_tUu08RE2 JCSC_EXAMPLE 5.00000 0.0000
4 2018-01-24 15:00:00 000004 22.08 1000.0 Order_xDeQcwGY Trade_fuE3mx4g JCSC_EXAMPLE 5.52000 0.0000
5 2018-01-29 09:30:00 000001 13.93 -1000.0 Order_EVhsUR0D Trade_G3UQJiSx JCSC_EXAMPLE 5.00000 20.8875
6 2018-01-31 09:30:00 000004 20.73 -1000.0 Order_dKPcMH5R Trade_MyRfepw0 JCSC_EXAMPLE 5.18375 31.1025
7 2018-02-02 09:30:00 600000 13.10 -1000.0 Order_RE4l1ZvW Trade_18MjFeYl JCSC_EXAMPLE 5.00000 19.6500
8 2018-02-05 15:00:00 600000 13.49 1000.0 Order_crPzt1EF Trade_3g1vTaoK JCSC_EXAMPLE 5.00000 0.0000
9 2018-02-08 09:30:00 600000 13.18 -1000.0 Order_KU6dzHiW Trade_bQmzWVvx JCSC_EXAMPLE 5.00000 19.7625
10 2018-02-13 15:00:00 000004 20.10 1000.0 Order_paEsc3nM Trade_5Tfcn4NK JCSC_EXAMPLE 5.02500 0.0000
11 2018-03-08 15:00:00 000001 12.11 1000.0 Order_POiBVAKq Trade_jiyxQFkf JCSC_EXAMPLE 5.00000 0.0000
12 2018-03-08 15:00:00 000002 33.64 1000.0 Order_Lt1FEkS8 Trade_E4U1r3jB JCSC_EXAMPLE 8.41000 0.0000
13 2018-03-19 09:30:00 000002 32.05 -1000.0 Order_FRkfdiPC Trade_a7hFtQqY JCSC_EXAMPLE 8.01250 48.0750
14 2018-03-26 09:30:00 000001 11.03 -1000.0 Order_WvZc9Sig Trade_Mw6Ch1aY JCSC_EXAMPLE 5.00000 16.5450
15 2018-03-29 15:00:00 000002 34.16 1000.0 Order_Afvx0KSs Trade_BD1L6zpm JCSC_EXAMPLE 8.54000 0.0000
16 2018-04-02 09:30:00 000004 22.70 -1000.0 Order_CKbxZqWv Trade_CwnGxfQU JCSC_EXAMPLE 5.67625 34.0575
17 2018-04-10 15:00:00 000001 11.42 1000.0 Order_MJfXHLSj Trade_QdgUj8WT JCSC_EXAMPLE 5.00000 0.0000
18 2018-04-11 15:00:00 600000 11.91 1000.0 Order_M3SDGLW7 Trade_GdcCbXa2 JCSC_EXAMPLE 5.00000 0.0000
19 2018-04-16 09:30:00 000002 30.39 -1000.0 Order_k2YQsO5h Trade_twRnvpfL JCSC_EXAMPLE 7.59875 45.5925
Account.daily_hold
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
code 000001 000002 000004 600000
date account_cookie
2018-01-02 JCSC_EXAMPLE 1000.0 0.0 0.0 0.0
2018-01-03 JCSC_EXAMPLE 0.0 0.0 0.0 0.0
2018-01-04 JCSC_EXAMPLE 0.0 0.0 0.0 1000.0
2018-01-12 JCSC_EXAMPLE 1000.0 0.0 0.0 1000.0
2018-01-24 JCSC_EXAMPLE 1000.0 0.0 1000.0 1000.0
2018-01-29 JCSC_EXAMPLE 0.0 0.0 1000.0 1000.0
2018-01-31 JCSC_EXAMPLE 0.0 0.0 0.0 1000.0
2018-02-02 JCSC_EXAMPLE 0.0 0.0 0.0 0.0
2018-02-05 JCSC_EXAMPLE 0.0 0.0 0.0 1000.0
2018-02-08 JCSC_EXAMPLE 0.0 0.0 0.0 0.0
2018-02-13 JCSC_EXAMPLE 0.0 0.0 1000.0 0.0
2018-03-08 JCSC_EXAMPLE 1000.0 1000.0 1000.0 0.0
2018-03-19 JCSC_EXAMPLE 1000.0 0.0 1000.0 0.0
2018-03-26 JCSC_EXAMPLE 0.0 0.0 1000.0 0.0
2018-03-29 JCSC_EXAMPLE 0.0 1000.0 1000.0 0.0
2018-04-02 JCSC_EXAMPLE 0.0 1000.0 0.0 0.0
2018-04-10 JCSC_EXAMPLE 1000.0 1000.0 0.0 0.0
2018-04-11 JCSC_EXAMPLE 1000.0 1000.0 0.0 1000.0
2018-04-16 JCSC_EXAMPLE 1000.0 0.0 0.0 1000.0
Risk=QA.QA_Risk(Account)
Risk.message
{'account_cookie': 'JCSC_EXAMPLE',
 'portfolio_cookie': None,
 'user_cookie': None,
 'annualize_return': -0.11,
 'profit': -0.03,
 'max_dropback': 0.04,
 'time_gap': 68,
 'volatility': 0.09,
 'benchmark_code': '000300',
 'bm_annualizereturn': -0.17,
 'bn_profit': -0.05,
 'beta': 1.0,
 'alpha': 0.06,
 'sharpe': -1.78,
 'init_assets': '200000.00',
 'last_assets': '194100.07'}
Risk.assets
date
2018-01-02    199995.00000
2018-01-03    199799.70500
2018-01-04    199794.70500
2018-01-12    200039.70500
2018-01-24    201784.18500
2018-01-29    200238.29750
2018-01-31    199262.01125
2018-02-02    199167.36125
2018-02-05    199162.36125
2018-02-08    198827.59875
2018-02-13    198822.57375
2018-03-08    199709.16375
2018-03-19    199583.07625
2018-03-26    198761.53125
2018-03-29    198712.99125
2018-04-02    197943.25750
2018-04-10    196628.25750
2018-04-11    197463.25750
2018-04-16    194100.06625
Name: 0, dtype: float64
Risk.assets.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1cf0d8fe898>

png

Risk.benchmark_assets.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1cf0fffb7b8>

png

Risk.plot_assets_curve()

png

Risk.plot_dailyhold()

png

Risk.plot_signal()

png

Performance=QA.QA_Performance(Account)
Performance.plot_pnlmoney(Performance.pnl_fifo)

png

STEP6: 存储结果

Account.save()
Risk.save()

STEP7: 查看存储的结果

account_info=QA.QA_fetch_account({'account_cookie':'JCSC_EXAMPLE'})
account=QA.QA_Account().from_message(account_info[0])
account
< QA_Account JCSC_EXAMPLE>