如何使用量化数据

简单示例

获取某只股票2019年01月01日至2019年01月10日的市盈率

from xquant import *

jsonstr = {
    # 用户名与令牌,由用户填写
    "user": "SDK-User",
    "token": "SDK-Toke",
    # 登录地址
    "login_endpoint": "prx.upchina.com:443"
}
# 使用配置初始化数据模块
data_api = xquant.create_data(jsonstr)

# 下载数据,必须先下载数据,才能调用数据接口,否则会返回空结果集 
# 下载列表用','分割,对于因子,下载项就是因子名, 对于K线数据, 下载项是K线类型和市场
# 因子:PE,PB,ROE_TTM
# K线: BAR_DAY_1_CS A股日K, BAR_DAY_1_IDX 指数日k, BAR_DAY_1_CF 期货日k, BAR_DAY_1_PLA 板块日k, BAR_MIN_1_CS A股1分钟k
data_api.sync_data('PE,PB,ROE_TTM,BAR_DAY_1_CS,BAR_MIN_30_CS', 20190101, 20190110, symbols=['000001.CS','000300.IDX'])

# 取单个因子
df = data_api.get_one_field('PE', symbols=['000001.CS', '000002.CS'], start_date=20190101, end_date=20190110)
print(df)

返回结果:

   trade_date  000001.CS  000002.CS
0    20190102   6.804619   7.090760
1    20190103   6.871258   7.141196
2    20190104   7.219263   7.396345
3    20190107   7.211859   7.431947
4    20190108   7.152624   7.417113
5    20190109   7.359947   7.515019
6    20190110   7.478416   7.449748

初始化

初始化是数据调用前必要的准备工作

c++ 和 python 统一使用json格式的配置

以下是python下的示例配置, python中可以直接把配置写在代码中,方便调试, 正式部署时请使用统一的配置文件,方便维护

    jsonstr = {
        "params": {
            # 同步数据超时数据
            "timeout": "300000",
            # 缓存数据存放的目录
            "cache_dir": "local_cache"
        },
        "login_endpoint": "prx.upchina.com:443",
        "user": "SDK-User",
        "token": "SDK-Toke"
    }

数据查询函数

同步数据

同步指定时间段的数据-sync_data

必须先下载数据,才能调用数据接口,否则会返回空结果集

函数原型:

sync_data(table, start_date, end_date, symbols=[])

参数:

参数 类型 说明
table list 数据存储的表名,因子数据使用因子名作为表名, k线数据按市场和频率组合,例如:A股日K BAR_DAY_1_CS
start_date int 开始交易日 ,形式为YYYYMMDD
end_date int 结束交易日 ,形式为YYYYMMDD
symbols list 需要下载的分钟K标的,仅下载分钟有效

K线数据的表名

K线频率 表名
BAR_MIN_1 1分钟K线 BAR_MIN_1_CS
BAR_MIN_5 5分钟K线 BAR_MIN_5_CS
BAR_MIN_15 15分钟K线 BAR_MIN_15_CS
BAR_MIN_30 30分钟K线 BAR_MIN_30_CS
BAR_MIN_60 60分钟K线 BAR_MIN_60_CS
BAR_DAY_1 日K线 BAR_DAY_1_CS

备注:对于指数K线数据表名使用 IDX 替换 CS, 期货K线数据表名使用 CF 替换 CS, 板块K线数据表名使用 PLA 替换 CS

举例:

data_api.sync_data(['FUT_LONG_RANK', 'FUT_SHORT_RANK', 'PE', 'REVENUE', 'PB', 'ROE_TTM', 'NET_PROFIT', 'NP_GROWTH_A', 'BAR_DAY_1_CS'], 20190101, 20190430)

行情数据

获取历史bar数据-get_bars

获取K线数据,调用此接口之前,需要提前下载对应的K线数据,否则返回结果为空。

函数原型:

get_bars(symbols, timespan, start_date=None, end_date=None, count=None, price_mode='pre', fields=None)

参数:

参数 类型 说明
symbols str/list 标的名称,以传字符型或列表传单个标的,以列表类型传一组标的
timespan str k线类型,支持的K线类型有日K/一分钟K/五分钟K/十五分钟K/三十分钟K/小时K,对应的参数如下:
日K: 1day
一分钟K:1min
五分钟K:5min
十五分钟:15min
三十分钟:30min
小时K:60min
start_date int 开始交易日 ,形式为YYYYMMDD
end_date int 结束交易日 ,形式为YYYYMMDD
count int 指定拉取的条数, 截至到end_date; count 和 start_date 不能同时使用
price_mode str 单symbol取K线时只用设置复权模式:
前复权:pre
后复权:post
不复权:real
fields list 指定返回的字段,symbols为str默认返回全部,symbols为list类型时可指定返回字段
fields: trade_date time_stop high low open close pre_close settle pre_settle volume turnover total_volume total_turnover position suspend

返回:DataFrame or dict{DataFrame}

此函数是用于获取数据的函数,若在回测或者模拟交易使用,因为走网络接口实时拉取会导致速度慢。

示例1:

# 获取1只一段时间的前复权日K数据
[In]:
    data_api.get_bars('000001.CS', timespan='1day', start_date=20190101, end_date=20190110)
[Out]:
      symbol  trade_date           time_stop   high   low  open  close  \
0  000001.CS    20190102 2019-01-02 15:00:00   9.42  9.16  9.39   9.19   
1  000001.CS    20190103 2019-01-03 15:00:00   9.33  9.15  9.18   9.28   
2  000001.CS    20190104 2019-01-04 15:00:00   9.82  9.22  9.24   9.75   
3  000001.CS    20190107 2019-01-07 15:00:00   9.85  9.63  9.84   9.74   
4  000001.CS    20190108 2019-01-08 15:00:00   9.74  9.62  9.73   9.66   
5  000001.CS    20190109 2019-01-09 15:00:00  10.08  9.70  9.74   9.94   
6  000001.CS    20190110 2019-01-10 15:00:00  10.20  9.86  9.87  10.10   

   pre_close  settle  pre_settle       volume      turnover  total_volume  \
0       9.38     0.0         0.0   53938600.0  4.986951e+08    53938600.0   
1       9.19     0.0         0.0   41553800.0  3.844577e+08    41553800.0   
2       9.28     0.0         0.0  148115900.0  1.422150e+09   148115900.0   
3       9.75     0.0         0.0   86568800.0  8.411665e+08    86568800.0   
4       9.74     0.0         0.0   40238800.0  3.892478e+08    40238800.0   
5       9.66     0.0         0.0  123348600.0  1.229465e+09   123348600.0   
6       9.94     0.0         0.0  107181800.0  1.079711e+09   107181800.0   

   total_turnover  position  suspend  
0    4.986951e+08       0.0        0  
1    3.844577e+08       0.0        0  
2    1.422150e+09       0.0        0  
3    8.411665e+08       0.0        0  
4    3.892478e+08       0.0        0  
5    1.229465e+09       0.0        0  
6    1.079711e+09       0.0        0

示例2:

# 获取多个标的指定指定交易不复权日K线数据
[In]:
    data_api.get_bars(['000001.CS', '600000.CS'], timespan='1day', end_date=20190110, count=5, price_mode='real', fields=['open', 'close'])
[Out]:
                          trade_date  000001.CS  600000.CS
close 2019-01-04 15:00:00    20190104       9.75       9.96
      2019-01-07 15:00:00    20190107       9.74       9.98
      2019-01-08 15:00:00    20190108       9.66       9.96
      2019-01-09 15:00:00    20190109       9.94       9.99
      2019-01-10 15:00:00    20190110      10.10       9.96
open  2019-01-04 15:00:00    20190104       9.24       9.73
      2019-01-07 15:00:00    20190107       9.84      10.09
      2019-01-08 15:00:00    20190108       9.73      10.03
      2019-01-09 15:00:00    20190109       9.74      10.06
      2019-01-10 15:00:00    20190110       9.87       9.94

示例3:

# 获取指定交易日的n条5分钟k
[In]:
    data_api.get_bars(['000001.CS', '600000.CS'], timespan='5min', end_date=20190110, count=5, fields=['open', 'close'])
[Out]:
                           trade_date  000001.CS  600000.CS
close 2019-01-10 14:40:00    20190110      10.11       9.95
      2019-01-10 14:45:00    20190110      10.09       9.95
      2019-01-10 14:50:00    20190110      10.10       9.96
      2019-01-10 14:55:00    20190110      10.10       9.97
      2019-01-10 15:00:00    20190110      10.10       9.96
open  2019-01-10 14:40:00    20190110      10.12       9.94
      2019-01-10 14:45:00    20190110      10.10       9.94
      2019-01-10 14:50:00    20190110      10.08       9.95
      2019-01-10 14:55:00    20190110      10.09       9.96
      2019-01-10 15:00:00    20190110      10.09       9.96

因子数据

获取某个因子数值类因子数据-get_one_field

获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子财务数据股东与股本估值指标波动率因子

调用此api之前需下载所需要调用的因子数据,不然返回结果为空。

函数原型

get_one_field(field, symbols, start_date=None, end_date=None, count=None, strict=False)

参数:

参数 类型 说明
field str 因子
symbols list 选取的股票列表
start_date int 指定某个交易日。形式为YYYYMMDD ,可选字段
end_date int 指定某个交易日。形式为YYYYMMDD。
count int 交易日数量,可选字段; 基于 end_date 往前推count个交易日 ;和 start_date 字段不可同时使用
strict bool 严格按报告期对齐,仅季频数据有效

返回: DataFrame trade_date 作为日期列,其它已标的为列名,因子值作为列值

示例1:

# 指定时间前3条因子数据
[In]:
    data_api.get_one_field('PE', symbols=['000001.CS', '000002.CS'], end_date=20190110, count=3)
[Out]:
       trade_date  000001.CS  000002.CS
0    20190108   7.152624   7.417113
1    20190109   7.359947   7.515019
2    20190110   7.478416   7.449748

示例2:

# 一段时间的因子数据
[In]:
    data_api.get_one_field('PE', symbols=['000001.CS', '600000.CS'], start_date=20190101, end_date=20190110)
[Out]:
       trade_date  000001.CS  600000.CS
0    20190102   6.804619   5.176437
1    20190103   6.871258   5.235139
2    20190104   7.219263   5.315187
3    20190107   7.211859   5.325860
4    20190108   7.152624   5.315187
5    20190109   7.359947   5.331197

获取某一天数值类因子数据-get_field_one_day

获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子财务数据股东与股本估值指标波动率因子

调用此api之前需下载所需要调用的因子数据,不然返回结果为空。

函数原型

get_field_one_day(fields, symbols, trade_date=None, report=None)

参数:

参数 类型 说明
fields list 因子列表
symbols list 选取的股票列表
trade_date int 指定某个交易日。形式为YYYYMMDD
report str 指定报告期,例如'2016Q1' - 16年一季报,'2016Q2' - 16年半年报,'2016Q3' - 16年三季报,'2016Q4'-年报

返回: DataFrame , symbol 作为标的列, 其它为因子值列

示例:

# 获取某一天数值类因子数据
[In]:
    data_api.get_field_one_day(['NET_PROFIT', 'PE'], symbols=['000001.CS', '000006.CS'], trade_date=20190111)
[Out]:
      symbol    NET_PROFIT        PE
0  000001.CS  2.045600e+10  7.552460
1  000006.CS  5.453400e+08  8.852076

获取某个标的数值类因子数据-get_field_one_symbol

获取股票的基础属性、市值等信息,主要是序列类的数据。数据信息详见财务分析因子财务数据股东与股本估值指标波动率因子

调用此api之前需下载所需要调用的因子数据,不然返回结果为空。

函数原型

get_field_one_symbol(fields, symbol, start_date=None, end_date=None, count=None, strict=False)

参数:

参数 类型 说明
fields list 因子列表
symbol str 选取的股票
start_date int 指定某个交易日。形式为YYYYMMDD ,可选字段
end_date int 指定某个交易日。形式为YYYYMMDD。
count int 交易日数量,可选字段; 基于 end_date 往前推count个交易日 ;和 start_date 字段不可同时使用
strict bool 严格按报告期对齐,仅季频数据有效

返回: DataFrame trade_date 作为日期列, 其它为因子值列

示例1:

[In]:
    data_api.get_field_one_symbol(['NET_PROFIT', 'PE', 'PB'], symbol='000001.CS', start_date=20190101, end_date=20190110)
[Out]:
   trade_date        PB    NET_PROFIT        PE
0    20190102  0.670797  2.045600e+10  6.804619
1    20190103  0.677367  2.045600e+10  6.871258
2    20190104  0.711673  2.045600e+10  7.219263
3    20190107  0.710943  2.045600e+10  7.211859
4    20190108  0.705103  2.045600e+10  7.152624
5    20190109  0.725541  2.045600e+10  7.359947
6    20190110  0.737220  2.045600e+10  7.478416

示例2:

[In]:
    data_api.get_field_one_symbol(['NET_PROFIT', 'PE', 'PB'], symbol='000001.CS', end_date=20190110, count=5)
[Out]:
   trade_date        PB    NET_PROFIT        PE
0    20190104  0.711673  2.045600e+10  7.219263
1    20190107  0.710943  2.045600e+10  7.211859
2    20190108  0.705103  2.045600e+10  7.152624
3    20190109  0.725541  2.045600e+10  7.359947
4    20190110  0.737220  2.045600e+10  7.478416

表格数据-get_table_data

获取表格类型的数据,如期货持仓排名系列数据主力跟踪申万一级行业指数日K行情数据指数成分股权重数据

调用此api之前需下载所需要调用的因子数据,不然返回结果为空。

函数原型:

get_table_data(field, symbols, start_date=None, end_date=None, count=None, columns=[])

参数:

参数 类型 说明
field str 表格类因子, 例如 FUT_SHORT_RANK, FUT_LONG_RANK
symbols str 标的代码
start_date int 交易日期,形式为 YYYYMMDD
end_date int 交易日期,形式为 YYYYMMDD
count int 交易日数量, count 和 start_date 不能同时存在
columns list 指定返回的列,默认返回所有列; 关于因子列描述可以查阅因子数据说明

返回值:DataFrame trade_date 和 symbol 单独为一列, 其它是table内部列

示例1

# 获取常用指数成分股权重数据
[In]:
    data_api.get_table_data("INDEX_WEIGHT", "000016.IDX", end_date=20200910, count=1)
[Out]:
    trade_date      symbol  WEIGH_VAL   STK_CODE
0     20200910  000016.IDX      1.841  600000.CS
1     20200910  000016.IDX      1.114  600009.CS
2     20200910  000016.IDX      1.787  600016.CS
3     20200910  000016.IDX      0.816  600028.CS
4     20200910  000016.IDX      4.100  600030.CS
5     20200910  000016.IDX      1.979  600031.CS
6     20200910  000016.IDX      5.884  600036.CS
7     20200910  000016.IDX      1.745  600048.CS
8     20200910  000016.IDX      0.731  600050.CS
9     20200910  000016.IDX      0.990  600104.CS
10    20200910  000016.IDX      1.001  600196.CS
11    20200910  000016.IDX      5.334  600276.CS
12    20200910  000016.IDX      1.741  600309.CS
13    20200910  000016.IDX     13.587  600519.CS
14    20200910  000016.IDX      0.799  600547.CS
15    20200910  000016.IDX      2.212  600585.CS
16    20200910  000016.IDX      1.030  600588.CS
17    20200910  000016.IDX      1.278  600690.CS
18    20200910  000016.IDX      0.920  600703.CS
19    20200910  000016.IDX      0.780  600745.CS
20    20200910  000016.IDX      2.217  600837.CS
21    20200910  000016.IDX      3.851  600887.CS
22    20200910  000016.IDX      2.529  601012.CS
23    20200910  000016.IDX      0.404  601066.CS
24    20200910  000016.IDX      0.807  601088.CS
25    20200910  000016.IDX      0.443  601138.CS
26    20200910  000016.IDX      3.049  601166.CS
27    20200910  000016.IDX      0.622  601186.CS
28    20200910  000016.IDX      1.320  601211.CS
29    20200910  000016.IDX      0.126  601236.CS
30    20200910  000016.IDX      1.396  601288.CS
31    20200910  000016.IDX     12.562  601318.CS
32    20200910  000016.IDX      0.233  601319.CS
33    20200910  000016.IDX      1.967  601328.CS
34    20200910  000016.IDX      0.756  601336.CS
35    20200910  000016.IDX      2.631  601398.CS
36    20200910  000016.IDX      1.269  601601.CS
37    20200910  000016.IDX      1.101  601628.CS
38    20200910  000016.IDX      0.188  601658.CS
39    20200910  000016.IDX      1.632  601668.CS
40    20200910  000016.IDX      1.907  601688.CS
41    20200910  000016.IDX      0.278  601816.CS
42    20200910  000016.IDX      0.926  601818.CS
43    20200910  000016.IDX      0.651  601857.CS
44    20200910  000016.IDX      3.073  601888.CS
45    20200910  000016.IDX      1.046  601988.CS
46    20200910  000016.IDX      0.670  601989.CS
47    20200910  000016.IDX      0.494  603160.CS
48    20200910  000016.IDX      1.724  603259.CS
49    20200910  000016.IDX      0.458  603993.CS

示例2:

# 获取rb1910.CF期货排名列表
[In]:
    data_api.get_table_data("FUT_SHORT_RANK", "rb1910.CF", end_date=20190305, count=1, columns=['rank', 'name', 'volume'])
[Out]:
    trade_date     symbol   volume  rank    name
0     20190305  rb1910.CF  49779.0     1  鲁证期货  
1     20190305  rb1910.CF  36840.0     2  银河期货  
2     20190305  rb1910.CF  26227.0     3  永安期货  
3     20190305  rb1910.CF  24864.0     4  国泰君安  
4     20190305  rb1910.CF  20030.0     5  中信期货  
5     20190305  rb1910.CF  19373.0     6  信达期货  
6     20190305  rb1910.CF  18976.0     7  方正中期  
7     20190305  rb1910.CF  14457.0     8  中粮期货  
8     20190305  rb1910.CF  12381.0     9  东海期货  
9     20190305  rb1910.CF  10303.0    10  东证期货  
10    20190305  rb1910.CF   9823.0    11  五矿经易  
11    20190305  rb1910.CF   8848.0    12  天风期货  
12    20190305  rb1910.CF   7150.0    13  海通期货  
13    20190305  rb1910.CF   6679.0    14  国贸期货  
14    20190305  rb1910.CF   6364.0    15  新湖期货  
15    20190305  rb1910.CF   5907.0    16  东吴期货  
16    20190305  rb1910.CF   5701.0    17  光大期货  
17    20190305  rb1910.CF   5650.0    18  华泰期货  
18    20190305  rb1910.CF   5490.0    19  申万期货  
19    20190305  rb1910.CF   4559.0    20  国富期货

示例3:

# 获取申万一级行业板块多个交易日的K线数据
[In]:
    data_api.get_table_data("SW_MKT", "801010.PLA", start_date=20190110, end_date=20190115)
[Out]:
   trade_date      symbol  preClose   totalVolume  totalTurnover    close      low     open     high
0    20190110  801010.PLA   2354.51  6.385033e+09   8.653306e+08  2356.07  2339.35  2353.78  2365.80
1    20190111  801010.PLA   2356.07  5.889354e+09   9.345046e+08  2365.73  2346.85  2347.15  2371.81
2    20190114  801010.PLA   2365.73  6.900767e+09   1.047818e+09  2366.05  2364.00  2366.54  2391.36
3    20190115  801010.PLA   2366.05  6.657991e+09   9.268652e+08  2369.36  2335.53  2363.71  2372.83

交易日期函数

函数 API
获取交易日数 get_trade_day_interval
获取上一个交易日期 get_prev_trade_date
获取下一个交易日期 get_next_trade_date
获取一段时间内交易日期 get_trade_dates
获取前N个交易日期 get_prev_trade_dates
获取后N个交易日期 get_next_trade_dates

标的信息函数

函数 API
获取标的基本信息 get_ref_data
获取成分股数据 get_constituent_symbols
获取连续合约对应的标的 get_continuous_symbol
获取指定合约集合 get_appointed_symbols
是否停牌 is_suspend
是否ST股 is_ST
是否上市 is_listed

results matching ""

    No results matching ""