RiceQuant米筐量化交易平台。深圳米筐科技有限公司致力于打造亚太区最出色的量化交易平台,在我们的平台上,您可以使用我们提供高效的工具和准确的数据去构造您的策略,并进行回测以及优化,而无需担忧基础架构及数据质量问题。

Ricequant 策略研究平台

基于IPython NoteBook搭建的Ricequant研究平台为进行策略研究的您提供了丰富的工具。在这里,您既可以享受到Python分析、计算库所带来的研究上的便利性,又可以使用经过我们处理并且每日更新的各种高质量数据。

您可以在研究文件列表中看到我们已经为您预先准备好的简单范例,它有助于您的快速上手。当然,您也可以建立新的研究文档,将思考付诸实践。

Ricequant为您提供的每日更新的数据包括:


Ricequant IPython Notebook API

all_instruments - 获取所有合约基础信息

all_instruments(type=None, country='cn', **kwargs)

获取某个国家市场的所有合约信息。使用者可以通过这一方法很快地对合约信息有一个快速了解,目前仅支持中国市场。

参数

参数类型说明
typestr需要查询合约类型,例如:type='CS'代表股票。默认是所有类型
countrystr默认是中国市场('cn'),目前仅支持中国市场
datestr, datetime.date, datetime.datetime, pandasTimestamp指定日期,筛选指定日期可交易的合约

其中type参数传入的合约类型和对应的解释如下:

合约类型说明
CSCommon Stock, 即股票
ETFExchange Traded Fund, 即交易所交易基金
LOFListed Open-Ended Fund,即上市型开放式基金(以下分级基金已并入)
FenjiMuFenji Mu Fund, 即分级母基金
FenjiAFenji A Fund, 即分级A类基金
FenjiBFenji B Funds, 即分级B类基金
INDXIndex, 即指数
FutureFutures,即期货,包含股指、国债和商品期货

返回

pandas DataFrame - 所有合约的基本信息。

范例

[In]all_instruments()
[Out]
    abbrev_symbol    order_book_id  sector_code    symbol
0    XJDQ    000400.XSHE      Industrials        许继电气
1    HXN        002582.XSHE      ConsumerStaples    好想你
2    NFGF    300004.XSHE      Industrials        南风股份
3    FLYY    002357.XSHE      Industrials        富临运业
...
[In]all_instruments(type='LOF')
[Out]
    abbrev_symbol    order_book_id    product    sector_code  symbol
0    CYGA    150303.XSHE    null    null    华安创业板50A
1    JY500A    150088.XSHE    null    null    金鹰500A
2    TD500A    150053.XSHE    null    null    泰达稳健
3    HS500A    150110.XSHE    null    null    华商500A
4    QSAJ    150235.XSHE    null    null    鹏华证券A
...
[In]all_instruments(type='Future')
[Out]
    abbrev_symbol    order_book_id    product        symbol
0    MH0610    CF0610    Commodity    棉花0610
1    LD0209    GN0209    Commodity    绿豆0209
...
3615    HS1301    IF1301    Index    沪深1301
...
[In]all_instruments(type='Future', date='20160412')
[Out]
    abbrev_symbol    order_book_id    product       symbol
0    HJ0809    AU0809    Commodity    黄金0809
1    MH1301    CF1301    Commodity    棉花1301
...
4226    XC1103    WR1103    Commodity    线材1103
...

instruments - 获取合约详细信息

instruments(order_book_ids, country='cn')

获取某个国家市场内一个或多个合约的详细信息。目前仅支持中国市场。

参数

参数类型说明
order_book_idsstr OR str list合约代码或合约代码列表,可传入order_book_id, order_book_id list。中国市场的order_book_id通常类似'000001.XSHE'。需要注意,国内股票、ETF、指数合约代码分别应当以'.XSHG'或'.XSHE'结尾,前者代表上证,后者代表深证。期货则无此要求
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

一个instrument对象,或一个instrument list。

需要注意,由于期货合约存续的特殊性,针对每一品种的期货合约,系统中都增加了 主力连续合约以及指数连续合约两个人工合成的合约来满足使用需求。其中,主力连续合约是由该品种期货不同时期主力合约接续而成;指数连续合约是由当前品种全部可交易合约以累计持仓量为权重加权平均得到。

主力合约的判断标准:合约首次上市时,以当日收盘同品种持仓量最大者作为从第二个交易日开始的主力合约。当同品种其他合约持仓量在收盘后超过当前主力合约1.1倍时,从第二个交易日开始进行主力合约的切换。日内不会进行主力合约的切换。

目前系统并不支持跨国家市场的同时调用。传入 order_book_id list必须属于同一国家市场。

参数类型说明
order_book_idstr证券代码,证券的独特的标识符。应以'.XSHG'或'.XSHE'结尾,前者代表上证,后者代表深证
symbolstr证券的简称,例如'平安银行'
abbrev_symbolstr证券的名称缩写,在中国A股就是股票的拼音缩写。例如:'PAYH'就是平安银行股票的证券名缩写
round_lotint一手对应多少股,中国A股一手是100股
sector_codestr板块缩写代码,全球通用标准定义
sector_code_namestr以当地语言为标准的板块代码名
industry_codestr国民经济行业分类代码,具体可参考下方“Industry列表”
industry_namestr国民经济行业分类名称
listed_datestr该证券上市日期
de_listed_datestr退市日期
typestr合约类型,目前支持的类型有: 'CS', 'INDX', 'LOF', 'ETF', 'Future'
concept_namesstr概念股分类,例如:'铁路基建','基金重仓'等
exchangestr交易所,'XSHE' - 深交所, 'XSHG' - 上交所
board_typestr板块类别,'MainBoard' - 主板,'GEM' - 创业板
statusstr合约状态。'Active' - 正常上市, 'Delisted' - 终止上市, 'TemporarySuspended' - 暂停上市, 'PreIPO' - 发行配售期间, 'FailIPO' - 发行失败
special_typestr特别处理状态。'Normal' - 正常上市, 'ST' - ST处理, 'StarST' - *ST代表该股票正在接受退市警告, 'PT' - 代表该股票连续3年收入为负,将被暂停交易, 'Other' - 其他
参数类型说明
order_book_idstr期货代码,期货的独特的标识符(郑商所期货合约数字部分进行了补齐。例如原有代码'ZC609'补齐之后变为'ZC1609')。主力连续合约UnderlyingSymbol+88,例如'IF88' ;指数连续合约命名规则为UnderlyingSymbol+99
symbolstr期货的简称,例如'沪深1005'
margin_ratefloat期货合约的最低保证金率
abbrev_symbolstr期货的名称缩写,例如'HS1005'。主力连续合约与指数连续合约都为'null'
round_lotfloat期货全部为1.0
listed_datestr期货的上市日期。主力连续合约与指数连续合约都为'0000-00-00'
typestr合约类型,'Future'
contract_multiplierfloat合约乘数,例如沪深300股指期货的乘数为300.0
underlying_order_book_idstr合约标的代码,目前除股指期货(IH, IF, IC)之外的期货合约,这一字段全部为'null'
underlying_symbolstr合约标的名称,例如IF1005的合约标的名称为'IF'
maturity_datestr期货到期日。主力连续合约与指数连续合约都为'0000-00-00'
settlement_methodstr交割方式,'CashSettlementRequired' - 现金交割, 'PhysicalSettlementRequired' - 实物交割
productstr产品类型,'Index' - 股指期货, 'Commodity' - 商品期货, 'Government' - 国债期货
exchangestr交易所,'DCE' - 大连商品交易所, 'SHFE' - 上海期货交易所,'CFFEX' - 中国金融期货交易所, 'CZCE'- 郑州商品交易所

Instrument对象也支持如下方法:

days_from_listed(date=None)

默认返回合约上市距离当前日期的天数。date支持str, 如果合约首次上市交易,天数为0;如果合约尚未上市或已经退市,则天数值为-1

days_to_expire(date=None)

如果策略已经退市,则天数值为-1

tick_size()

例如,instruments('IF1608').tick_size()获取的就是股指期货的最小价格变动单位,为0.2,即“一跳”的水平。

范例

[In]instruments('000001.XSHE')
[Out]
Instrument(order_book_id=000001.XSHE, symbol=平安银行, abbrev_symbol=PAYH, listed_date=19910403, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active)
[In]instruments('平安银行')
[Out]
Instrument(order_book_id=000001.XSHE, symbol=平安银行, abbrev_symbol=PAYH, listed_date=19910403, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active)
[In]instruments(['000001.XSHE', '招商地产'])
[Out]
[Instrument(order_book_id=000001.XSHE, symbol=平安银行, abbrev_symbol=PAYH, listed_date=19910403, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active), Instrument(order_book_id=000024.XSHE, symbol=招商地产, abbrev_symbol=ZSDC, listed_date=19930607, de_listed_date=null, board_type=MainBoard, sector_code_name=金融, sector_code=Financials, round_lot=100, exchange=XSHE, special_type=Normal, status=Active)]
[In]instruments('A1401')
[Out]
Instrument(order_book_id='A1401', product='Commodity', round_lot=10.0, type='Future', exchange='DCE', listed_date=20120716, abbrev_symbol='DY1401', underlying_symbol='A', de_listed_date=20140115, maturity_date=20140115, settlement_method='PhysicalSettlementRequired', symbol='豆一1401', contract_multiplier=10.0, concept_names=None)
[In]instruments('000001.XSHE').days_from_listed('20160801')
[Out]
9252
[In]instruments('IF1608').days_to_expire('20160801')
[Out]
18

get_price - 获取合约历史数据

get_price(order_book_id, start_date='2013-01-04', end_date='2014-01-04', frequency='1d', fields=None, adjust_type='pre', skip_suspended =False, country='cn')

获取指定合约或合约列表的历史数据(包含起止日期,日线或分钟线)。目前仅支持中国市场。

参数

参数类型说明
order_book_idstr OR str list合约代码,可传入order_book_id, order_book_id list
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为'2013-01-04'。交易使用时,用户必须指定
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为'2014-01-04'。交易使用时,默认为策略当前日期前一天
frequencystr历史数据的频率。 现在支持日/分钟级别的历史数据,默认为'1d'。使用者可自由选取不同频率,例如'5m'代表5分钟线
fieldsstr OR str list返回字段名称
adjust_typestr前复权处理。前复权 - pre,后复权 - post,不复权 - none,回测使用 - internal 需要注意,internal数据与回测所使用数据保持一致,仅就拆分事件对价格以及成交量进行了前复权处理,并未考虑分红派息对于股价的影响。所以在分红前后,价格会出现跳跃。
skip_suspendedbool是否跳过停牌数据。默认为False,不跳过,用停牌前数据进行补齐。True则为跳过停牌期。注意,当设置为True时,函数order_book_id只支持单个合约传入
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

参数类型说明
openfloat开盘价
closefloat收盘价
highfloat最高价
lowfloat最低价
limit_upfloat涨停价
limit_downfloat跌停价
total_turnoverfloat总成交额
volumefloat总成交量
acc_net_valuefloat累计净值(仅限基金日线数据)
unit_net_valuefloat单位净值(仅限基金日线数据)
discount_ratefloat折价率(仅限基金日线数据)
settlementfloat结算价 (仅限期货日线数据)
prev_settlementfloat昨日结算价(仅限期货日线数据)
open_interestfloat累计持仓量(期货专用)
basis_spreadfloat基差点数(股指期货专用,股指期货收盘价-标的指数收盘价)
trading_datepandasTimeStamp交易日期(仅限期货分钟线数据),对应期货夜盘的情况

范例

[In]get_price('000001.XSHE', start_date='2015-04-01', end_date='2015-04-12')
[Out]
open    close    high    low    total_turnover    volume    limit_up    limit_down
2015-04-01    10.7300    10.8249    10.9470    10.5469    2.608977e+09    236637563.0    11.7542    9.6177
2015-04-02    10.9131    10.7164    10.9470    10.5943    2.222671e+09    202440588.0    11.9102    9.7397
2015-04-03    10.6486    10.7503    10.8114    10.5876    2.262844e+09    206631550.0    11.7881    9.6448
2015-04-07    10.9538    11.4015    11.5032    10.9538    4.898119e+09    426308008.0    11.8288    9.6787
2015-04-08    11.4829    12.1543    12.2628    11.2929    5.784459e+09    485517069.0    12.5409    10.2620
2015-04-09    12.1747    12.2086    12.9208    12.0255    5.794632e+09    456921108.0    13.3684    10.9403
2015-04-10    12.2086    13.4294    13.4294    12.1069    6.339649e+09    480990210.0    13.4294    10.9877
[In]get_price('平安银行', start_date='2015-04-01', end_date='2015-04-03', adjust_type='none')
[Out]
open    close    high    low    total_turnover    volume    limit_up    limit_down
2015-04-01    15.82    15.96    16.14    15.55    2.608977e+09    164331641.0    17.33    14.18
2015-04-02    16.09    15.80    16.14    15.62    2.222671e+09    140583742.0    17.56    14.36
2015-04-03    15.70    15.85    15.94    15.61    2.262844e+09    143494132.0    17.38    14.22
[In]get_price('000001.XSHE', start_date='2015-04-01', end_date='2015-04-12', fields='close')
[Out]
2015-04-01    10.8249
2015-04-02    10.7164
2015-04-03    10.7503
2015-04-07    11.4015
2015-04-08    12.1543
2015-04-09    12.2086
2015-04-10    13.4294
Name: close, dtype: float64
[In]get_price('000001.XSHE', start_date='2015-04-01', end_date='2015-04-01', frequency='15m')
[Out]
    total_turnover    close    low    open    high    volume
index                        
2015-04-01 09:45:00    348982890.0    10.6215    10.6215    10.7300    10.7843    31848628.0
2015-04-01 10:00:00    234445219.0    10.5808    10.5469    10.6283    10.6350    21618354.0
2015-04-01 10:15:00    125882985.0    10.6757    10.5808    10.5808    10.7368    11540023.0
2015-04-01 10:30:00    144396901.0    10.6622    10.6215    10.6757    10.7503    13190460.0
2015-04-01 10:45:00    169238918.0    10.7368    10.6554    10.6622    10.7775    15409772.0
2015-04-01 11:00:00    131464598.0    10.7232    10.6961    10.7436    10.7503    11977847.0
2015-04-01 11:15:00    83455348.0    10.7368    10.7164    10.7300    10.7639    7589260.0
...
[In]get_price(['000024.XSHE', '000001.XSHE', '000002.XSHE'], start_date='2015-04-01', end_date='2015-04-12', fields='close')
[Out]
000024.XSHE    000001.XSHE    000002.XSHE
2015-04-01    32.1251    10.8249    12.7398
2015-04-02    31.6400    10.7164    12.6191
2015-04-03    31.6400    10.7503    12.4891
2015-04-07    31.6400    11.4015    12.7398
2015-04-08    31.6400    12.1543    12.8327``
2015-04-09    31.6400    12.2086    13.5941
2015-04-10    31.6400    13.4294    13.2969
[In]get_price(['000024.XSHE', '000001.XSHE', '000002.XSHE'], start_date='2015-04-01', end_date='2015-04-12')
[Out]
<class 'rqcommons.pandas_patch.HybridDataPanel'>
Dimensions: 8 (items) x 7 (major_axis) x 3 (minor_axis)
Items axis: open to limit_down
Major_axis axis: 2015-04-01 00:00:00 to 2015-04-10 00:00:00
Minor_axis axis: 000024.XSHE to 000002.XSHE
[In]get_price('A1601', start_date='2015-04-01', end_date='2015-04-12')
[Out]
               open     close      high      low     total_turnover  volume    settlement    prev_settlement  open_interest  basis_spread    limit_up    limit_down
2015-04-01    4188.0    4210.0    4231.0    4188.0    168002700.0    3988.0      4212.0           4204.0        42406.0          NaN          4372.0       4036.0
2015-04-02    4212.0    4192.0    4228.0    4192.0    191554400.0    4550.0      4209.0           4212.0        44986.0          NaN          4380.0       4044.0
2015-04-03    4191.0    4157.0    4191.0    4149.0    336611000.0    8092.0      4159.0           4209.0        47632.0          NaN          4377.0       4041.0
2015-04-07    4155.0    4122.0    4164.0    4121.0    213253200.0    5150.0      4140.0           4159.0        50678.0          NaN          4325.0       3993.0
2015-04-08    4102.0    4103.0    4123.0    4082.0    231593500.0    5646.0      4101.0           4140.0        50758.0          NaN          4305.0       3975.0
2015-04-09    4098.0    4069.0    4106.0    4062.0    217864900.0    5344.0      4076.0           4101.0        52028.0          NaN          4265.0       3937.0
2015-04-10    4068.0    4069.0    4105.0    4062.0    105630900.0    2592.0      4075.0           4076.0        52142.0          NaN          4239.0       3913.0

current_snapshot - 获取当前行情快照

current_snapshot(order_book_id)

获取某一合约当前的 LEVEL1 行情快照

参数

参数类型说明
order_book_idstr合约代码,仅支持单一 order_book_id 传入

返回

Tick 对象 属性 | 类型 | 注释 -- | -- | -- open | float | 当日开盘价 high | float | 当日最高价 low | float | 当日最低价 last | float | 最新价 prev_settlement | float | 昨日结算价 prev_close | float | 昨日收盘价 volume | float | 成交量 limit_up | float | 涨停价 limit_down | float | 跌停价 open_interest | float | 累计持仓量 datetime | datetime.datetime | 时间戳 asks | list | 卖出报盘价格,asks[0] 代表盘口卖一档报盘价 ask_vols | list | 卖出报盘数量,ask_vols[0] 代表盘口卖一档报盘数量 bids | list | 买入报盘价格,bids[0] 代表盘口买一档报盘价 bid_vols | list | 买入报盘数量,bid_vols[0] 代表盘口买一档报盘数量

范例

[In] current_snapshot('RB1805')
[Out]
Tick(ask_vols: [73, 0, 0, 0, 0], asks: [3424.0, 0.0, 0.0, 0.0, 0.0], bid_vols: [10, 0, 0, 0, 0], bids: [3423.0, 0.0, 0.0, 0.0, 0.0], datetime: 2018-03-28 15:00:00.705000, high: 3470.0, last: 3424.0, low: 3383.0, open: 3447.0, open_interest: 1637770.0, order_book_id: RB1805, prev_close: 3433.0, prev_settlement: 3413.0, total_turnover: 126310034840.0, volume: 3680998.0)


get_trading_dates - 获取交易日列表

get_trading_dates(start_date, end_date, country='cn')

获取某个国家市场的交易日列表(起止日期加入判断)。目前仅支持中国市场。

参数

参数类型说明
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

datetime.date list - 交易日期列表

范例

[In]get_trading_dates(start_date='20160505', end_date='20160505')
[Out]
[datetime.date(2016, 5, 5)]

get_dominant_future - 获取主力合约列表

get_dominant_future(underlying_symbol, start_date=None, end_date=None)

获取某一期货品种一段时间的主力合约列表。合约首次上市时,以当日收盘同品种持仓量最大者作为从第二个交易日开始的主力合约。当同品种其他合约持仓量在收盘后超过当前主力合约1.1倍时,从第二个交易日开始进行主力合约的切换。日内不会进行主力合约的切换。

参数

参数类型说明
underlying_symbolstr期货合约品种,例如沪深300股指期货为'IF'
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为期货品种最早上市日期后一交易日
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为当前日期

返回

Pandas.Series - 主力合约代码列表

范例


get_future_contracts - 获取期货可交易合约列表

get_future_contracts(underlying_symbol, date=None)

获取某一期货品种在策略当前日期的可交易合约order_book_id列表。按照到期月份,下标从小到大排列,返回列表中第一个合约对应的就是该品种的近月合约。

参数

参数类型说明
underlying_symbolstr期货合约品种,例如沪深300股指期货为'IF'
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,默认为当日

返回

str list - 可交易的order_book_id list

范例

[In]
get_future_contracts('IF', '20160801')
[Out]
['IF1612', 'IF1701', 'IF1703', 'IF1706']

get_previous_trading_date - 获取上一交易日

get_previous_trading_date(date, country='cn')

获取指定日期的上一交易日。

参数

参数类型说明
datestr, datetime.date, datetime.datetime, pandasTimestamp指定日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

datetime.date - 交易日期

范例

[In]get_previous_trading_date('20160502')
[Out]
[datetime.date(2016, 4, 29)]

get_next_trading_date - 获取下一交易日

get_next_trading_date(date, country='cn')

获取指定日期的下一交易日。

参数

参数类型说明
datestr, datetime.date, datetime.datetime, pandasTimestamp指定日期
countrystr目前只支持中国市场 ('cn')

返回

datetime.date - 交易日期

范例

[In]get_next_trading_date(date='2016-05-01')
[Out]
[datetime.date(2016, 5, 3)]

get_fundamentals - 查询财务数据

get_fundamentals(query, entry_date, interval=None, report_quarter=False)

获取历史财务数据表格。目前支持中国市场超过400个指标,具体请参考 财务数据文档 。目前仅支持中国市场。我们特别为该函数进行了优化,读取内存的操作会极大地提升数据的获取速度。 注意:

参数

参数类型说明
querySQLAlchemyQueryObjectSQLAlchmey的Query对象。其中可在'query'内填写需要查询的指标,'filter'内填写数据过滤条件。具体可参考 sqlalchemy's query documentation 学习使用更多的方便的查询语句。从数据科学家的观点来看,sqlalchemy的使用比sql更加简单和强大
entry_datestr, datetime.date, datetime.datetime, pandasTimestamp查询财务数据的基准开始日期
intervalstr查询财务数据的间隔。例如,填写'5y',则代表从entry_date开始(包括entry_date)回溯5年,返回数据时间以为间隔。'd' - 天,'m' - 月(30天), 'q' - 季(90天),'y' - 年(365天)
report_quarterbool是否显示报告期,默认为False,不显示。'Q1' - 一季报,'Q2' - 半年报,'Q3' - 三季报,'Q4' - 年报

返回

pandas DataPanel - 财务数据查询结果。

范例

fundamentals是一个重要的对象,其中包括了股指指标表(eod_derivative_indicator),财务指标表(financial_indicator),利润表(income_statement),资产负债表(balance_sheet),现金流量表(cash_flow_statement)以及股票列表(stock_code)等内容。结合SQLAlchemy的查找方式,能够满足用户多种查找需求。

[In]
df = get_fundamentals(query(fundamentals.eod_derivative_indicator.pe_ratio
).filter(fundamentals.stockcode == '000001.XSHE'), '2016-08-01', '4q' ,report_quarter = True)
df.minor_xs('000001.XSHE')
[Out]
        report_quarter    pe_ratio
2016-08-01    2016-Q1     7.0768
2016-04-29    2016-Q1        6.7755
2016-01-29    2015-Q3        6.5492
2015-10-29    2015-Q3        7.3809
[In]dp = get_fundamentals(query(fundamentals.income_statement.revenue, fundamentals.income_statement.cost_of_goods_sold
).filter(fundamentals.income_statement.stockcode.in_(['002478.XSHE', '000151.XSHE'])), '2015-01-10', '5y')

[In]dp
[Out]
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 5 (major_axis) x 2 (minor_axis)
Items axis: revenue to cost_of_goods_sold
Major_axis axis: 2015-01-09 to 2011-01-10
Minor_axis axis: 002478.XSHE to 000151.XSHE

[In]dp['revenue']
[Out]
            002478.XSHE        000151.XSHE
2015-01-09    2.937843e+09    1.733703e+09
2014-01-10    2.926316e+09    8.839355e+08
2013-01-10    2.616532e+09    9.488980e+08
2012-01-10    2.681016e+09    6.205934e+08
2011-01-10    2.034147e+09    4.998120e+08

get_financials - 查询季度财务信息

get_financials(query, quarter, interval=None)

以给定一个报告期回溯的方式获取季度基础财务数据(三大表)。financials是在查询中会使用到的重要对象,功能与上述fundamentals类似。但因为get_financials为季度财务信息查询,所以financials中支持的财务表格包括利润表(income_statement),资产负债表(balance_sheet),现金流量表(cash_flow_statement),以及财务指标(financial_indicator)。除此之外,financials中还包括了股票列表(stock_code)以及公布日期(announce_date)两个指标。

参数

参数类型说明
querySQLAlchemyQueryObjectSQLAlchmey的Query对象。其中可在'query'内填写需要查询的指标,'filter'内填写数据过滤条件
quarterstr财报回溯查询的起始报告期,例如'2015q2', '2015q4'分别代表2015年半年报以及年报。默认只获取当前报告期财务信息
intervalstr查询财务数据的间隔。例如,填写'5y',则代表从报告期开始回溯5年,每年为相同报告期数据;'3q'则代表从报告期开始向前回溯3个季度

返回

pandas DataPanel pandas DataFrame *pandas Series 视指定查询指标、合约数量以及回溯间隔自动做数据降维处理。

范例

[In]
q = query(financials.income_statement.net_profit, financials.announce_date).filter(financials.stockcode.in_(['000002.XSHE']))
get_financials(q, '2016q3', '2q')
[Out]
         net_profit announce_date
2016q3  1.12903e+10      20161028
2016q2  7.09463e+09      20160822

[In]
q = query(financials.income_statement.net_profit, financials.announce_date).filter(financials.stockcode.in_(['000002.XSHE', '601988.XSHG']))
get_financials(q, '2016q3')
[Out]
        net_profit    announce_date
601988.XSHG  1.51558e+11      20161027
000002.XSHE  1.12903e+10      20161028

[In]
q = query(financials.income_statement.net_profit).filter(financials.stockcode.in_(['000002.XSHE']))
get_financials(q, '2016q3', '3y')
[Out]
2016q3    1.12903e+10
2015q3    9.53862e+09
2014q3      7.605e+09
[In]
q = query(financials.income_statement.net_profit, financials.balance_sheet.prepayment).filter(financials.stockcode.in_(['000002.XSHE', '601988.XSHG']))
get_financials(q, '2016q3', '3y')
[Out]
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 2 (minor_axis)
Items axis: net_profit to prepayment
Major_axis axis: 2016q3 to 2014q3
Minor_axis axis: 601988.XSHG to 000002.XSHE

sector - 获取某板块股票列表

sector(code, country='cn')

获得属于某一板块的所有股票列表。

参数

参数类型说明
codestr OR sector_code items板块名称或板块代码。例如,能源板块可填写'Energy'、'能源'或sector_code.Energy
countrystr默认是中国市场('cn'),目前仅支持中国市场。

返回

属于该板块的股票order_book_id或order_book_id list.

范例

[In]sector('Energy')
[Out]
['300023.XSHE', '000571.XSHE', '600997.XSHG', '601798.XSHG', '603568.XSHG', .....]
[In]sector(sector_code.Energy)
[Out]
['300023.XSHE', '000571.XSHE', '600997.XSHG', '601798.XSHG', '603568.XSHG', .....]

板块分类列表

目前支持的板块分类如下,其取值参考自MSCI发布的全球行业标准分类:

板块代码中文板块名称英文板块名称
Energy能源energy
Materials原材料materials
ConsumerDiscretionary非必需消费品consumer discretionary
ConsumerStaples必需消费品consumer staples
HealthCare医疗保健health care
Financials金融financials
InformationTechnology信息技术information technology
TelecommunicationServices电信服务telecommunication services
Utilities公共服务utilities
Industrials工业industrials

industry - 获取某行业股票列表

industry(code, country='cn')

获得属于某一行业的所有股票列表。

参数

参数类型说明
codestr OR industry_code items行业名称或行业代码。例如,农业可填写industry_code.A01 或 'A01'
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

属于该行业的股票order_book_id或order_book_id list.

范例

[In]industry('A01')
[Out]
['600540.XSHG', '600371.XSHG', '600359.XSHG', '600506.XSHG',...]
[In]industry(industry_code.A01)
[Out]
['600540.XSHG', '600371.XSHG', '600359.XSHG', '600506.XSHG',...]

行业分类列表

我们目前使用的行业分类来自于中国国家统计局的国民经济行业分类,可以使用这里的任何一个行业代码来调用行业的股票列表:

行业代码行业名称
A01农业
A02林业
A03畜牧业
A04渔业
A05农、林、牧、渔服务业
B06煤炭开采和洗选业
B07石油和天然气开采业
B08黑色金属矿采选业
B09有色金属矿采选业
B10非金属矿采选业
B11开采辅助活动
B12其他采矿业
C13农副食品加工业
C14食品制造业
C15酒、饮料和精制茶制造业
C16烟草制品业
C17纺织业
C18纺织服装、服饰业
C19皮革、毛皮、羽毛及其制品和制鞋业
C20木材加工及木、竹、藤、棕、草制品业
C21家具制造业
C22造纸及纸制品业
C23印刷和记录媒介复制业
C24文教、工美、体育和娱乐用品制造业
C25石油加工、炼焦及核燃料加工业
C26化学原料及化学制品制造业
C27医药制造业
C28化学纤维制造业
C29橡胶和塑料制品业
C30非金属矿物制品业
C31黑色金属冶炼及压延加工业
C32有色金属冶炼和压延加工业
C33金属制品业
C34通用设备制造业
C35专用设备制造业
C36汽车制造业
C37铁路、船舶、航空航天和其它运输设备制造业
C38电气机械及器材制造业
C39计算机、通信和其他电子设备制造业
C40仪器仪表制造业
C41其他制造业
C42废弃资源综合利用业
C43金属制品、机械和设备修理业
D44电力、热力生产和供应业
D45燃气生产和供应业
D46水的生产和供应业
E47房屋建筑业
E48土木工程建筑业
E49建筑安装业
E50建筑装饰和其他建筑业
F51批发业
F52零售业
G53铁路运输业
G54道路运输业
G55水上运输业
G56航空运输业
G57管道运输业
G58装卸搬运和运输代理业
G59仓储业
G60邮政业
H61住宿业
H62餐饮业
I63电信、广播电视和卫星传输服务
I64互联网和相关服务
I65软件和信息技术服务业
J66货币金融服务
J67资本市场服务
J68保险业
J69其他金融业
K70房地产业
L71租赁业
L72商务服务业
M73研究和试验发展
M74专业技术服务业
M75科技推广和应用服务业
N76水利管理业
N77生态保护和环境治理业
N78公共设施管理业
O79居民服务业
O80机动车、电子产品和日用产品修理业
O81其他服务业
P82教育
Q83卫生
Q84社会工作
R85新闻和出版业
R86广播、电视、电影和影视录音制作业
R87文化艺术业
R88体育
R89娱乐业
S90综合

concept - 获取某概念股票列表

concept(concept_name1, concept_name2, ...,date=None)

获得属于某个或某几个概念的股票列表。

参数

参数类型说明
concept_namesstr OR multiple str概念名称。可以从概念列表中选择一个或多个概念填写
datestr指定日期((yyyy-mm-dd)),可不填,即返回当前。注:针对回测平台,date是非法参数,因为它已经考虑到了回测点日期

返回

属于该概念的股票order_book_id或order_book_id list.

范例

[In]
concept('民营医院')
[Out]
['600105.XSHG',
 '002550.XSHE',
 '002004.XSHE',
 '002424.XSHE',
 ...]

[In]
concept('民营医院',date='2017-12-01')
[Out]
['600105.XSHG',
 '002550.XSHE',
 '002004.XSHE',
 '002424.XSHE',
 ...]

[In]
concept('民营医院', '国企改革')
[Out]
['601607.XSHG',
 '600748.XSHG',
 '600630.XSHG',
 ...]

概念列表

3D打印  3D玻璃  4G概念  5G概念  360私有化  AB股  AH股  BDI指数  IPV6  ITO导电玻璃
LED  MLCC  MSCI概念  O2O概念  OLED  P2P概念  PET薄膜  PM2.5  PPP模式  QFII重仓
ST概念  S股  VA  VB1  VC  VD3  VE  一带一路  万达私有化  三七概念
三沙概念  三网融合  三聚氰胺  上海国资改革  上海房价上涨  上海自贸区  不锈钢概念  丙烯类  东盟自贸区  东莞房价上涨
丝绸之路  两桶油改革  中厚板  中央政务区  中字头  中山房价上涨  中成药  中药饮片  中超概念  中韩自贸区
临沂房价上涨  丹参概念  举牌概念  乙二醇概念  乳业  二胎概念  云计算  互联网+  互联网金融  京津冀一体化
人免疫球蛋白概念  人凝血因子概念  人参概念  人工智能  人工牛黄概念  人民币贬值概念  人脑工程  人脸识别  人血白蛋白概念  休闲食品
低碳经济  体检与健康管理  体育产业  何首乌概念  佛山房价上涨  供应链金融  供热  保健酒  债转股  健康中国
充电桩  光伏概念  光伏电池  光学膜  光学镜头  免疫治疗  党参概念  兜底增持概念  全息技术  六味地黄
六氟磷酸锂  兰州房价上涨  共享单车  养老概念  养老金持股  军工  军民融合  农业现代化  农机  农村电商
冬虫夏草概念  冷轧  冷链物流  切片  创投  制冷剂  券商  前海概念  动力煤  化学制剂
化学原料药  北京冬奥会  北京房价上涨  北斗导航  区块链  医用医疗器械  医用耗材  医疗器械  医疗机构配套服务  医药中间体
医药工业配套服务  医药电商  医药设备和实验室工程  医院  单抗概念  单晶硅  南京房价上涨  南宁房价上涨  南昌房价上涨  南通房价上涨
印刷电路板(PCB)  厦门房价上涨  参股券商  参股新股  可燃冰  合同能源  合肥房价上涨  吉林房价上涨  含氟精细化工  含氟聚合物材料
呼和浩特房价上涨  咖啡因概念  哈尔滨房价上涨  唐山房价上涨  徐州房价上涨  微信小程序  快递  恒大概念  惠州房价上涨  成渝特区
啤酒  固废处理  国产软件  国企改革  土地流转  在线教育  地下管网  地热能  地黄概念  型材
型材(钢材)  基因工程药物  基因测序  塑料钞票  增强现实  壳资源  复合肥  大数据  大理房价上涨  大输液
大连房价上涨  大金融  大飞机  天津房价上涨  家用电器  宽带中国  尼龙66切片  尼龙薄膜  尾气治理  尿素
天津自贸区  天然气  天然气供应  太阳能  头孢  宁波房价上涨  安防  宜兴房价上涨  实体药店  家用医疗器械
川贝概念  工业4.0  工业导爆索  工业雷管  己二酸概念  布洛芬概念  常州房价上涨  广州房价上涨  廊坊房价上涨  建筑节能
彩票概念  成都房价上涨  房地产开发  房屋租赁  手游概念  振兴东北  摘帽  新零售  无人机  无人零售
数字电视  文化传媒  新三板  新型城镇化  新材料  新疆基建  新疆振兴  新股与次新股  新能源  新能源车
无人驾驶  无汞电解二氧化锰  无烟煤  棒材(钢材)  武汉房价上涨  民营医院  民营银行  氟化工  氧化铁  氧化锆
无线充电  无锡房价上涨  昆山房价上涨  普通电解二氧化锰  景点旅游  智慧停车  智慧城市  智能交通  智能医疗  智能家居
智能电网  智能电视  智能穿戴  智能音箱  有机硅类  期货概念  机器人概念  杀菌剂  杀虫剂  杭州亚运会
杭州房价上涨  杭州湾大湾区  板材  板材(钢材)  板蓝根概念  染料类  柴油  柴胡概念  核电  棉花
氨纶  水利建设  水泥  水电  汕头房价上涨  江苏国资改革  污水处理  汽油  汽车电子概念  沈阳房价上涨
沥青类  沪港通  油品升级  油改概念  油气设备服务  泉州房价上涨  济南房价上涨  海参  海口房价上涨  海峡西岸
海工装备  海洋经济  海绵城市  涤纶类  液晶面板  液氨  液碱  深圳国资改革  深圳房价上涨  深港通
湖州房价上涨  滨海新区  火电  炭黑概念  炸药  烟台房价上涨  烧碱  热轧  焦炭概念  焦煤
煤化工  煤改气  燃料乙醇  燃料电池  牛黄概念  物流电商平台  物联网  特斯拉  特色小镇  特钢概念
特高压  独家药品  猪  王者荣耀概念  环戊烷  环氧丙烷  玻璃基板  玻璃概念  玻璃纤维  玻纤类
珠海房价上涨  生态农业  生物医药  生物疫苗  生物质能  甲醇概念  电力改革  电商概念  电子信息  电子发票
电子竞技  疫苗  病毒防治  白炭黑  白酒  白银  白马股  盖板玻璃  石墨烯  石油
磁性材料  磷矿石  磷酸  磷酸盐  磷酸铁  磷铵  票交所  福州房价上涨  福建自贸区  禽流感
移动互联网  移动支付  稀土  稀土永磁  稀缺资源  管材  管材(钢材)  粘胶短纤  粘胶长丝  粤港澳自贸区
精对苯二甲酸(PTA)  糖  红参概念  红花概念  纯碱概念  线材(钢材)  绍兴房价上涨  维生素  网上药店  网红直播
网约车  网络安全  网络游戏  美丽中国  耐火材料  职业教育  联碱  联通混改  聚丙烯  聚氨酯
聚氨酯胶  聚氯乙烯  聚氯乙烯树脂  聚氯乙烯糊树脂  聚酯切片  聚酯薄膜  聚醚类  肉制品  股权冻结  股权转让
胶印油墨  能源互联网  腾讯概念  自来水  自由贸易港  航母概念  航空煤油  节能照明  节能环保  芜湖房价上涨
芯片概念  苏州房价上涨  苹果概念  茯苓概念  草甘膦  药品分销  葡萄酒  蓝宝石  虚拟现实  蚂蚁金服概念
蚌埠房价上涨  蛋氨酸  融资融券  螺纹钢  血塞(栓)通  血液制品  装配式建筑  西安房价上涨  西安自贸区  西洋参概念
覆铜板  触摸屏概念  证金持股  诊断试剂  语音技术  调味品  贵阳房价上涨  赛马概念  超导概念  超级品牌
超级电容  超细纤维类  足球概念  跨境电商  车联网  转融券标的  轮胎  连翘概念  迪士尼  送转预期
通用航空  郑州房价上涨  醋酸丁酯  重庆房价上涨  量子通信  金华房价上涨  金融IC  金融改革  金融机具  金银花概念
钒电池  钛白粉  钢坯  钨  钴  钼  铁精粉  铁路基建  铅  铜
铝  铝电解电容器  银川房价上涨  银杏叶概念  锂  锂电池概念  锂离子电解液  锂锰电解二氧化锰  锌  锡盐
锦纶丝类  锦纶切片  镇江房价上涨  镍  长春房价上涨  长沙房价上涨  阻燃树脂  阿胶概念  阿里概念  除草剂
雄安新区  集成电路  青岛房价上涨  青霉素类概念  靶材  页岩气  顺酐类  风电  风能  食品安全
饲料概念  驴皮概念  高校  高端装备  高送转  高铁  鸡  鸡尾酒  黄磷  黄芩概念
黄芪概念  黄连概念  黄酒  黄金  黄金水道  黑磷   

index_components - 获取指数成分股列表

index_components(index_name, date=None, country='cn')

获取某一指数的股票构成列表,也支持指数的历史构成查询。

参数

参数类型说明
index_namestr指数代码,可传入order_book_id,例如'000001.XSHG'或'沪深300'。目前所支持的指数列表可以参考指数数据表
datestr, datetime.date, datetime.datetime, pandas Timestamp查询日期,默认为最新记录日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

str list - 构成该指数股票的order_book_id list

范例

[In]index_components('000001.XSHG')
[Out]
['600000.XSHG',
 '600004.XSHG',
 ...]

[In]index_components('000001.XSHG', date='2015-01-01')
[Out]
['600613.XSHG',
 '600239.XSHG',
 ...]

index_weights - 获取指数历史权重

index_weights(order_book_id, date=None)

获取某一指数的历史构成以及权重。注意,该数据为月度更新。

参数

参数类型说明
order_book_idstr指数代码,可传入order_book_id,例如'000001.XSHG'或'沪深300'。目前所支持的指数列表可以参考指数数据表
datestr, datetime.date, datetime.datetime, pandas Timestamp查询日期,默认为最新记录日期

返回

pandas Series,每只股票在指数中的构成权重。

范例

[In]index_weights('000016.XSHG','20160801')
[Out]
Order_book_id
600000.XSHG    0.03750
600010.XSHG    0.00761
600016.XSHG    0.05981
600028.XSHG    0.01391
600029.XSHG    0.00822
600030.XSHG    0.03526
600036.XSHG    0.04889
600050.XSHG    0.00998
600104.XSHG    0.02122

is_suspended - 判断股票是否全天停牌

is_suspended(id_or_symbol, start_date=None, end_date=None, country='cn')

判断某只股票在一段时间(包含起止日期)是否全天停牌。

参数

参数类型说明
order_book_idstr某只股票的代码或股票代码列表,传入单只股票的order_book_id或symbol
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为股票上市日期。如果开始日期早于股票上市日期,则以股票上市日期作为开始日期。
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为当前日期,如果股票已经退市,则为退市日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

范例

In[12]: is_suspended('武钢股份', start_date='20160624')
Out[12]:
               武钢股份
2016-06-24       False
2016-06-27        True
2016-06-28        True
2016-06-29        True
2016-06-30        True
2016-07-01        True
2016-07-04        True
2016-07-05        True
2016-07-06        True
...
2016-08-30        True
2016-08-31        True

is_st_stock - 查询股票是否为ST股

is_st_stock(id_or_symbols, start_date='2013-01-04', end_date='2014-01-04')

判断一只或多只股票在一段时间(包含起止日期)内是否为ST股(包括ST与*ST)。

参数

参数类型说明
order_book_idstr or str list某只股票的代码或股票代码列表,可传入order_book_id, order_book_id list
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期

返回

pandas DataFrame - 查询时间段内是否为ST股的查询结果

范例

[In]is_st_stock("002336.XSHE", "20160411", "20160510")
[Out]
            002336.XSHE
2016-04-11    False
2016-04-12    False
...
2016-05-09    True
2016-05-10    True

[In]is_st_stock(["002336.XSHE", "000001.XSHE"], "2016-04-11", "2016-05-10")
[Out]
      002336.XSHE    000001.XSHE
2016-04-11    False    False
2016-04-12    False    False
...
2016-05-09    True    False
2016-05-10    True    False


get_yield_curve - 获取收益率曲线

get_yield_curve(start_date='2013-01-04', end_date='2014-01-04', tenor=None, country='cn')

获取某个国家市场在一段时间内收益率曲线水平(包含起止日期)。目前仅支持中国市场。

数据为2002年至今的中债国债收益率曲线,来源于中央国债登记结算有限责任公司。

参数

参数类型说明
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为'2013-01-04'
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为'2014-01-04'
tenorstr标准期限,'0S' - 隔夜,'1M' - 1个月,'1Y' - 1年
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

pandas DataFrame - 查询时间段内无风险收益率曲线

范例

[In]
get_yield_curve(start_date='20130104', end_date='20140104')

[Out]
                0S      1M      2M      3M      6M      9M      1Y      2Y  \
2013-01-04  0.0196  0.0253  0.0288  0.0279  0.0280  0.0283  0.0292  0.0310
2013-01-05  0.0171  0.0243  0.0286  0.0275  0.0277  0.0281  0.0288  0.0305
2013-01-06  0.0160  0.0238  0.0285  0.0272  0.0273  0.0280  0.0287  0.0304

                3Y      4Y   ...        6Y      7Y      8Y      9Y     10Y  \
2013-01-04  0.0314  0.0318   ...    0.0342  0.0350  0.0353  0.0357  0.0361
2013-01-05  0.0309  0.0316   ...    0.0342  0.0350  0.0352  0.0356  0.0360
2013-01-06  0.0310  0.0315   ...    0.0340  0.0350  0.0352  0.0356  0.0360
...

get_price_change_rate - 获取历史涨跌幅

get_price_change_rate(id_or_symbols, start_date='20130104', end_date='20140104')

获取股票或指数的历史涨跌幅(包含起止日期)。注意目前只支持股票与指数两类合约,基金、期货等目前并不支持。

参数

参数类型说明
id_or_symbolsstr or str list可输入order_book_id, order_book_id list
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为'2013-01-04'
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为'2014-01-04'

返回

范例

[In]
get_price_change_rate(['000001.XSHE', '000300.XSHG'], '20150801', '20150807')
[Out]
order_book_id    000001.XSHE    000300.XSHG
date        
2015-08-03    0.037217    0.003285
2015-08-04    0.003120    0.031056
2015-08-05    -0.020995    -0.020581
2015-08-06    -0.004766    -0.009064
2015-08-07    0.006385    0.019597

get_securities_margin - 获取融资融券信息

get_securities_margin(id_or_symbols, start_date=None, end_date=None, fields=None)

获取融资融券信息。包括深证融资融券数据以及上证融资融券数据情况。既包括个股数据,也包括市场整体数据。需要注意,融资融券的开始日期为2010年3月31日。

参数

参数类型说明
id_or_symbolsstr or str list可输入order_book_id, order_book_id list。另外,输入'XSHG'或'sh'代表整个上证整体情况;'XSHE'或'sz'代表深证整体情况
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为当前最近日期前一个月
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为当前有数据的最新日期
fieldsstr OR str list默认为所有字段。见下方列表
fields字段名
margin_balance融资余额
buy_on_margin_value融资买入额
margin_repayment融资偿还额
short_balance融券余额
short_balance_quantity融券余量
short_sell_value融券卖出额
short_sell_quantity融券卖出量
short_repayment_quantity融券偿还量
total_balance融资融券余额

返回

范例

[In]
get_securities_margin('510050.XSHG', start_date='20160801', end_date='20160805')
[Out]
margin_balance    buy_on_margin_value    short_sell_quantity    margin_repayment    short_balance_quantity    short_repayment_quantity    short_balance    total_balance
2016-08-01    7.811396e+09    50012306.0    3597600.0    41652042.0    15020600.0    1645576.0    NaN    NaN
2016-08-02    7.826381e+09    34518238.0    2375700.0    19532586.0    14154000.0    3242300.0    NaN    NaN
2016-08-03    7.733306e+09    17967333.0    4719700.0    111043009.0    16235600.0    2638100.0    NaN    NaN
2016-08-04    7.741497e+09    30259359.0    6488600.0    22068637.0    17499000.0    5225200.0    NaN    NaN
2016-08-05    7.726343e+09    25270756.0    2865863.0    40423859.0    14252363.0    6112500.0    NaN    NaN
[In]
get_securities_margin(['XSHE', 'XSHG'],start_date='20160801', end_date='20160805', fields='margin_balance')
[Out]
        XSHE        XSHG
2016-08-01    3.837627e+11    4.763557e+11
2016-08-02    3.828923e+11    4.763931e+11
2016-08-03    3.823545e+11    4.769321e+11
2016-08-04    3.833260e+11    4.776380e+11
2016-08-05    3.812751e+11    4.766928e+11
[In]
get_securities_margin(['XSHG', '601988.XSHG', '510050.XSHG'],start_date='20160801', end_date='20160805')
[Out]
<class 'pandas.core.panel.Panel'>
Dimensions: 8 (items) x 5 (major_axis) x 3 (minor_axis)
Items axis: margin_balance to total_balance
Major_axis axis: 2016-08-01 00:00:00 to 2016-08-05 00:00:00
Minor_axis axis: XSHG to 510050.XSHG
[In]
get_securities_margin('510050.XSHG', start_date='20160801', end_date='20160805', fields='margin_repayment')
[Out]
2016-08-01     41652042.0
2016-08-02     19532586.0
2016-08-03    111043009.0
2016-08-04     22068637.0
2016-08-05     40423859.0
Name: margin_repayment, dtype: float64

get_shares - 获取流通股信息

get_shares(id_or_symbols, start_date='2013-01-04', end_date='2014-01-04', fields=None, country='cn')

获取某只股票在一段时间内的流通情况(包含起止日期)。

参数

参数类型说明
id_or_symbolsstr可输入order_book_id或symbol
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为'2013-01-04'
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为'2014-01-04'
fieldsstr OR str list默认为所有字段。见下方列表
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

fields字段名
total总股本
circulation_a流通A股
management_circulation已过禁售期的高管持有的股份
non_circulation_a非流通A股合计
total_aA股总股本

范例

[In]
get_shares('000001.XSHE', start_date='20160801', end_date='20160806')
[Out]
            circulation_a  management_circulation  non_circulation_a  \
2016-08-01   1.463118e+10                     NaN       2.539231e+09   
2016-08-02   1.463118e+10                     NaN       2.539231e+09   
2016-08-03   1.463118e+10                     NaN       2.539231e+09   
2016-08-04   1.463118e+10                     NaN       2.539231e+09   
2016-08-05   1.463118e+10                     NaN       2.539231e+09   

                 total_a         total  
2016-08-01  1.717041e+10  1.717041e+10  
2016-08-02  1.717041e+10  1.717041e+10  
2016-08-03  1.717041e+10  1.717041e+10  
2016-08-04  1.717041e+10  1.717041e+10  
2016-08-05  1.717041e+10  1.717041e+10   
[In]
get_shares('000001.XSHE', start_date='20160801', end_date='20160806', fields='total')
[Out]
2016-08-01    1.717041e+10
2016-08-02    1.717041e+10
2016-08-03    1.717041e+10
2016-08-04    1.717041e+10
2016-08-05    1.717041e+10
Name: total, dtype: float64

get_turnover_rate - 获取历史换手率

get_turnover_rate(id_or_symbols, start_date=None, end_date=None, fields=None)

参数

参数类型说明
order_book_idstr or str list可输入order_book_id, order_book_id list
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为当前最近日期前一个月
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为当前有数据的最新日期
fieldsstr OR str list默认为所有字段。见下方列表

返回

fields字段名
today当天换手率
week过去一周平均换手率
month过去一个月平均换手率
three_month过去三个月平均换手率
six_month过去六个月平均换手率
year过去一年平均换手率
current_year当年平均换手率
total上市以来平均换手率

范例

[In]
get_turnover_rate(['000001.XSHE', '601998.XSHG'], '20160801', '20160812', 'week')

[Out]
  000001.XSHE  601998.XSHG
2016-08-01       0.4478       0.1176
2016-08-02       0.4134       0.1175
2016-08-03       0.3460       0.0972
2016-08-04       0.4938       0.0937
2016-08-05       0.5031       0.0927
2016-08-08       0.4414       0.0754
2016-08-09       0.4357       0.0746
2016-08-10       0.4377       0.0779
2016-08-11       0.3679       0.1212
2016-08-12       0.4779       0.1391

get_dividend - 获取股票分红数据

get_dividend(order_book_id, start_date=None, end_date=None, adjusted=True, country='cn')

获取某只股票在一段时间内的分红情况(包含起止日期)。如未指定日期,则默认所有。目前仅支持中国市场。

参数

参数类型说明
order_book_idstr可输入order_book_id或symbol
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期
adjustedbool默认为True,代表经过前复权处理之后的分红数值;False代表未经任何复权处理的原始分红数值
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

pandas DataFrame - 查询时间段内某个股票的分红数据

范例

[In]
get_dividend('000001.XSHE', start_date='20130104', end_date='20140106')

[Out]
                              book_closure_date  dividend_cash_before_tax  \
declaration_announcement_date
2013-06-14                           2013-06-19                    0.9838

                              ex_dividend_date payable_date  round_lot
declaration_announcement_date
2013-06-14                          2013-06-20   2013-06-20       10.0

get_split - 获取股票拆分数据

get_split(order_book_id, start_date=None, end_date=None, country='cn')

获取某只股票在一段时间内的拆分情况(包含起止日期),如未指定日期,则默认所有。目前仅支持中国市场。

参数

参数类型说明
order_book_idstr可输orderbook_id, symbol
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

pandas DataFrame - 查询时间段内的某个股票的拆分数据

例如:每10股转增2股,则split_coefficient_from = 10, split_coefficient_to = 12.

范例

[In]
get_split('000001.XSHE', start_date='20100104', end_date='20140104')

[Out]
                 book_closure_date payable_date  split_coefficient_from  \
ex_dividend_date
2013-06-20              2013-06-19   2013-06-20                      10

                  split_coefficient_to
ex_dividend_date
2013-06-20                        16.0

get_ex_factor - 获取复权因子

get_ex_factor(order_book_id, start_date=None, end_date=None, country='cn')

获取复权因子。如未指定日期,则默认所有。

参数

参数类型说明
order_book_idstr可输入order_book_id或symbol
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

pandas dataframe - 包含了复权因子的日期和对应的各项数值

范例

[In]
get_ex_factor('000001.XSHE', start_date='2013-01-04', end_date='2017-01-04')

[Out]
            order_book_id  ex_factor  ex_cum_factor announcement_date  \
ex_date
2013-06-20   000001.XSHE   1.614263      68.255824        2013-06-19
2014-06-12   000001.XSHE   1.216523      83.034780        2014-06-11
2015-04-13   000001.XSHE   1.210638     100.525060        2015-04-10
2016-06-16   000001.XSHE   1.217847     122.424143        2016-06-15

           ex_end_date
ex_date
2013-06-20  2014-06-11
2014-06-12  2015-04-12
2015-04-13  2016-06-15
2016-06-16         NaT


fund.instruments - 获取基金基础信息

fund.instruments(order_book_ids)

参数

参数类型注释
order_book_idstr OR str list基金代码

返回

基金instrument对象或instrument list

字段类型说明
order_book_idstr合约代码
symbolstr证券的简称
issuerstr基金公司
fund_managerstr基金经理
listed_datestr发行日期
benchmarkstr业绩比较基准
latest_sizefloat最新资产规模(单位:元)
fund_typestr基金类型。债券型 - Bond, 股票型 - Stock, 混合型 - Hybrid, 货币型 - Money, 短期理财型 - ShortBond, 股票指数 - StockIndex, 债券指数 - BondIndex, 联接基金 - Related, QDII - QDII

范例

In [10]: fund.instruments('050116')
Out[10]: Instrument(fund_type='Bond', order_book_id='050116', issuer='博时基金', symbol='博时宏观债券C', latest_size=20164710.53, type='PublicFund', listed_date='2010-07-27', fund_manager='王申', benchmark='中证全债指数')



fund.all_instruments - 获取所有公募基金信息

fund.all_instruments(date=None)

参数

参数类型注释
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,默认为当前日期上一交易日

返回

pandas DataFrame

范例

In [20]: fund.all_instruments().head()
Out[20]:
  order_book_id        listed_date     issuer         symbol   fund_type  \
0        233001    2004-03-26  摩根士丹利华鑫基金       大摩基础行业混合      Hybrid
1        165519    2013-08-16       信诚基金  信诚中证800医药指数分级  StockIndex
2        004234    2017-01-19       中欧基金      中欧数据挖掘混合C      Hybrid
3        370026    2013-02-04     上投摩根基金      上投轮动添利债券C        Bond
4        519320    2016-05-04     浦银安盛基金   浦银安盛幸福聚利定开债A       Other

  fund_manager   latest_size                          benchmark
0          孙海波  1.318854e+08          沪深300指数×55%+ 中证综合债券指数×45%
1           杨旭  2.371657e+08  95%×中证800制药与生物科技指数收益率+5%×金融同业存款利率
2           曲径           NaN       沪深300指数收益率×60%+中债综合指数收益率×40%
3           唐瑭  8.183768e+06                           中证综合债券指数
4          刘大巍  3.018930e+09                 一年期定期存款利率(税后)+1.4%

fund.get_nav - 获取基金净值信息

fund.get_nav(order_book_id, start_date=None, end_date=None, fields=None)

参数

参数类型注释
order_book_idstr基金代码
start_datestr, datetime.date, datetime.datetime, pandasTimestamp查询的开始日期,默认为所有净值数据
end_datestr, datetime.date, datetime.datetime, pandasTimestamp查询的结束日期
fieldsstr OR str list查询字段,有效值见下方

返回

pandas DataFrame

范例

In [7]: fund.get_nav('050116', '20170401', '20170408')
Out[7]:
            acc_net_value  unit_net_value subscribe_status redeem_status  \
2017-04-05          1.192           1.149          Limited          Open
2017-04-06          1.192           1.149          Limited          Open
2017-04-07          1.191           1.148          Limited          Open

            change_rate  adjusted_net_value
2017-04-05     0.001744            1.191662
2017-04-06     0.000000            1.191662
2017-04-07    -0.000870            1.190625
In [8]: fund.get_nav('001232', '20170401', '20170408')
Out[8]:
    subscribe_status    redeem_status    daily_profit    weekly_yield
2017-04-04    Open        Open    3.4489    0.06855
2017-04-05    Open        Open    0.9106    0.05864
2017-04-06    Open        Open    0.8536    0.05457
2017-04-07    Open        Open    1.6463    0.03641

fund.get_holdings - 获取基金持仓信息

fund.get_holdings(order_book_id, date=None)

从指定日期回溯,获取最近的基金持仓信息。

参数

参数类型注释
order_book_idstr基金代码
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,回溯获取距离指定日期最近的持仓数据

返回

pandas DataFrame

范例

In [10]: fund.get_holdings('050116', '20170201')
Out[10]:
  order_book_id  weight    shares  market_value       date
0   300410.XSHE    1.74  174200.0     9405200.0 2016-12-31
1   000888.XSHE    0.00     800.0        9600.0 2016-12-31
2        160419   18.37       NaN           NaN 2016-12-31
3        160209   22.12       NaN           NaN 2016-12-31
4        160208    9.07       NaN           NaN 2016-12-31
5        150213    9.28       NaN           NaN 2016-12-31
6        140067    9.04       NaN           NaN 2016-12-31
7        132001    0.01       NaN           NaN 2016-12-31
8        128012    0.01       NaN           NaN 2016-12-31
9        110031    0.00       NaN           NaN 2016-12-31



fund.get_split - 获取基金拆分信息

fund.get_split(order_book_id)

参数

参数类型注释
order_book_idstr基金代码

返回

pandas DataFrame

index: 除权除息日

范例

In [13]: fund.get_split('000246').head()
Out[13]:
           split_ratio
2013-11-01  1.00499349
2013-12-02  1.00453123
2014-01-02  1.00455316
2014-02-07  1.00456182
2014-03-03  1.00452639



fund.get_dividend - 获取基金分红信息

fund.get_dividend(order_book_id)

参数

参数类型注释
order_book_idstr基金代码

返回

pandas DataFrame

index: 除权除息日

范例

In [11]: fund.get_dividend('050116')
Out[11]:
           book_closure_date payable_date  dividend_before_tax
2012-01-17        2012-01-17   2012-01-19                0.002
2013-01-16        2013-01-16   2013-01-18                0.013
2015-01-14        2015-01-14   2015-01-16                0.028


fund.get_manager - 获取基金经理信息

fund.get_manager(order_book_id)

参数

参数类型注释
order_book_idstr OR str list基金代码或代码列表

返回

pandas DataFrame

范例

In [11]: fund.get_manager('161117')
Out[11]:
  name        id  days start_date   end_date   return
0   胡剑  30159168   244 2014-07-12 2015-03-13   8.6997
1   胡剑  30159168   445 2013-04-22 2014-07-11   5.1786
2   刘琦  30127307   244 2014-07-12 2015-03-13   8.6997
3   刘琦  30127307   445 2013-04-22 2014-07-11   5.1786
4  李一硕  30062897   780 2015-03-14        NaT  14.9005
5  李一硕  30062897   244 2014-07-12 2015-03-13   8.6997
6  马喜德  30046114   306 2012-06-19 2013-04-21   7.9318

In [10]: fund.get_manager(['160224', '217019'])
Out [10]:
<class 'pandas.core.panel.Panel'>
Dimensions: 6 (items) x 5 (major_axis) x 2 (minor_axis)
Items axis: name to return
Major_axis axis: 0 to 4
Minor_axis axis: 160224 to 217019

fund.get_asset_allocation - 获取基金资产配置

fund.get_asset_allocation(order_book_id, date=None)

参数

参数类型注释
order_book_idstr基金代码
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,回溯获取距离指定日期最近的数据

返回

pandas DataFrame

index: 报告期

范例

In [11]: fund.get_asset_allocation('002425')
Out[11]:
             stock    bond    cash           nav
2016-03-31  0.0520  0.8581  0.0918  5.506908e+07
2016-06-30  0.0656  0.9299  0.0053  6.455623e+07
2016-09-30  0.1403  0.5319  0.0119  4.035355e+08
2016-12-31  0.0637  0.4457  0.0174  8.504396e+08
2017-03-31  0.0000  0.6045  0.0345  1.365943e+08
2017-06-26  0.0000  0.4161  0.6456  7.271404e+07
2017-06-30  0.0000  0.3189  0.0028  7.058575e+07


fund.get_industry_allocation - 获取基金行业配置

fund.get_industry_allocation(order_book_id, date=None)

参数

参数类型注释
order_book_idstr基金代码
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,回溯获取距离指定日期最近的数据取

返回

pandas DataFrame

index: 报告期

范例

In [15]: fund.get_industry_allocation('519181', date='20170701')
Out[15]:
                   industry  weights  market_value
2017-06-30  信息传输、软件和信息技术服务业   0.0000  7.639620e+03
2017-06-30         农、林、牧、渔业   0.0519  8.850876e+07
2017-06-30              制造业   0.5013  8.544167e+08
2017-06-30               合计   0.9027  1.538639e+09
2017-06-30              建筑业   0.1100  1.875309e+08
2017-06-30             房地产业   0.0990  1.687118e+08
2017-06-30           批发和零售业   0.0392  6.675525e+07
2017-06-30              采矿业   0.0501  8.545797e+07
2017-06-30              金融业   0.0512  8.724955e+07




fund.get_ratings - 获取基金评级信息

fund.get_ratings(order_book_id, date=None)

参数

参数类型注释
order_book_idstr基金代码
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,回溯获取距离指定日期最近的数据

返回

pandas DataFrame

index: 评级日期

范例

In [16]: fund.get_ratings('202101')
Out[16]:
             zs  sh3  sh5  jajx
2009-12-31  NaN  NaN  NaN   3.0
2010-03-31  NaN  NaN  NaN   3.0
2010-04-30  2.0  NaN  NaN   NaN
2010-06-30  NaN  3.0  4.0   1.0
2010-09-30  NaN  3.0  4.0   1.0
2010-12-31  NaN  2.0  4.0   1.0


fund.get_units_change - 获取基金份额变动信息

fund.get_ratings(order_book_id, date=None)

参数

参数类型注释
order_book_idstr基金代码
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,回溯获取距离指定日期最近的数据

返回

pandas DataFrame

index: 参考日期

范例

In [17]: fund.get_units_change('001554')
Out[17]:
            subscribe_units  redeem_units        units
2015-06-30              NaN           NaN   5000000.00
2015-09-30      71408891.69   37755554.39  38653337.30
2015-12-31      19756969.98   20692807.21  37717500.07
2016-03-31      17467356.40   16372818.76  38812037.71
2016-06-30      21264325.34   15937884.63  44138478.42
2016-09-30      37842604.31   32218403.07  49762679.66
2016-12-31      19158060.76   25157817.68  43762922.74
2017-03-31      12145314.55   18072618.82  37835618.47



fenji.get_a_by_yield (已废弃)- 获取分级A基金列表(利率水平查询)

fenji.get_a_by_yield(current_yield, listing=True)

获取对应利率水平的分级A基金列表。

参数

参数类型说明
current_yieldfloat本期利率,例如5代表5%

listing | bool | 当前分级基金是否在交易所可交易,默认为True

返回

符合当前利率水平的分级A基金的order_book_id list;如果无符合内容,则返回空列表。

范例

[In] fenji.get_a_by_yield(4)
[Out]
['150039.XSHE']

fenji.get_a_by_interest_rule (已废弃)- 获取分级A基金列表(利率规则查询)

fenji.get_a_by_interest_rule(interest_rule))

获取对应利率规则的分级A基金列表,如果无符合内容,则返回空列表。

参数

参数类型说明
interest_rulestr利率规则,例如:'+3.5%', '+4%', '=7%', '*1.4+0.55%', '利差'等。 您也可以在研究平台使用fenji.get_

all来进行查询所有的组合可能。用户必须填写 listing | bool | 该分级基金是否在交易所可交易,默认为True

返回

符合当前利率规则的分级A基金的order_book_id list

范例

[In] fenji.get_a_by_interest_rule("+3%")
[Out]
['502011.XSHG', '150215.XSHE', '150181.XSHE', '150269.XSHE', '150173.XSHE', '150217.XSHE', '502027.XSHG', '150255.XSHE', '150257.XSHE', '150237.XSHE', '150100.XSHE', '150177.XSHE', '502017.XSHG', '150279.XSHE', '150271.XSHE', '150051.XSHE', '150245.XSHE', '150233.XSHE', '502004.XSHG', '150200.XSHE', '150205.XSHE', '150184.XSHE', '502049.XSHG', '150207.XSHE', '150313.XSHE', '150243.XSHE', '150239.XSHE', '150273.XSHE', '150227.XSHE', '150076.XSHE', '150203.XSHE', '150209.XSHE', '150259.XSHE', '150315.XSHE', '150283.XSHE', '150241.XSHE', '150229.XSHE', '150307.XSHE', '150186.XSHE', '150231.XSHE', '502024.XSHG', '502007.XSHG', '150305.XSHE', '150018.XSHE', '150309.XSHE', '150311.XSHE', '150235.XSHE', '150143.XSHE', '150249.XSHE', '150329.XSHE', '150251.XSHE', '150169.XSHE', '150357.XSHE', '150194.XSHE', '150179.XSHE', '150164.XSHE', '150192.XSHE', '150171.XSHE', '150022.XSHE', '150275.XSHE', '150092.XSHE', '150277.XSHE']

fenji.get_all (已废弃)- 获取所有分级基金信息

fenji.get_all(field_list)

获取当前市场上所有分级基金的信息。

参数

参数类型注释
field_liststr list希望输出的数据字段名(见下表),默认为所有字段

返回

pandas DataFrame - 分级基金各项数据

字段名注释
a_b_propotion分级A:分级B的比例
conversion_date下次定折日
creation_date创立日期
current_yield本期利率
expire_date到期日,可能为NaN - 即不存在
fenji_a_order_book_idA基代码
fenji_a_symbolA基名称
fenji_b_order_book_idB基代码
fenji_b_symbolB基名称
fenji_mu_orderbook_id母基代码
fenji_mu_symbol母基名称
interest_rule利率规则
next_yield下期利率
track_index_symbol跟踪指数

范例

[In] fenji.get_all()
[Out]
a_b_propotion    conversion_date    creation_date    current_yield    expire_date    fenji_a_order_book_id    fenji_a_symbol    fenji_b_order_book_id    fenji_b_symbol    fenji_mu_orderbook_id    fenji_mu_symbol    interest_rule    next_yield    track_index_symbol
0    7:3    2016-11-19    2014-05-22    2.5    NaN    161828    永益A    150162.XSHE    永益B    161827    银华永益    +1%    NaN    综合指数
1    1:1    2017-01-04    2015-03-17    5    NaN    150213.XSHE    成长A级    150214.XSHE    成长B级    161223    国投成长    +3.5%    5    创业成长
2    1:1    2016-12-15    2015-07-01    5.5    NaN    150335.XSHE    军工股A    150336.XSHE    军工股B    161628    融通军工    +4%    5.4    中证军工

[In] fenji.get_all(field_list = ['fenji_a_order_book_id', 'current_yield'])
[Out]
current_yield    fenji_a_order_book_id
0    2.5    161828
1    5    150213.XSHE
2    5.5    150335.XSHE

RQPortal API - 获取策略回测数据(Alpha版)

rqportal模块的加入使得用户分析自己策略回测结果成为可能。目前rqportal提供的api可以获取某个策略回测的交易, 持仓和收益等回测数据。需要注意的是,该功能目前处于实验阶段,不排除未来修改接口的可能。

以下API中所需传入的run_id可以在历史回测的列表中找到,如下图: 图片描述 图片描述


rqportal.portfolio - 获取每日收益数据

rqportal.portfolio(run_id, start_date=None, end_date=None)

参数

参数类型说明
run_idint回测运行ID, 可从回测历史列表中获取
start_datestr开始日期, 格式为 'YYYY-mm-dd', 默认从回测最早的日期开始
end_datestr结束日期, 格式为 'YYYY-mm-dd', 默认以回测最晚的日期结束

返回

pandas DataFrame - 收益 每列的定义可参考Python API文档

范例

[In]: rqportal.portfolio(2012)
[Out]:
                  daily_returns     pnl    total_returns    annualized_returns    cash    benchmark_daily_returns
2010-01-04 15:00:00    0.000000    0.00    0.000000    0.000000    100000.000000    -0.017267
2010-01-05 15:00:00    0.000000    0.00    0.000000    0.000000    100000.000000    0.007915
...
2015-11-03 15:00:00    -0.032762    -12187.12    2.598044    0.245341    467.473962    -0.002924
2015-11-04 15:00:00    0.069233    24910.28    2.847147    0.259573    467.473962    0.045671

[In]: rqportal.portfolio(2012, start_date="2011-09-10", end_date="2011-10-20")
[Out]:
                    daily_returns    pnl    total_returns    annualized_returns    cash    benchmark_daily_returns
2011-09-13 15:00:00    -0.000128    -16.014597    0.246833    0.139163    65724.616896    0.000000
2011-09-14 15:00:00    -0.000596    -74.260000    0.246090    0.138523    65724.616896    -0.006299
2011-09-15 15:00:00    -0.000294    -36.660000    0.245724    0.138088    65724.616896    -0.001430
2011-09-16 15:00:00    -0.001494    -186.120000    0.243863    0.136851    65724.616896    0.001742
2011-09-19 15:00:00    -0.007149    -889.240000    0.234970    0.131392    65724.616896    -0.019277
2011-09-20 15:00:00    0.001499    185.180000    0.236822    0.132159    65724.616896    0.003799


rqportal.positions - 获取每日持仓数据

rqportal.positions(run_id, values="market_value", start_date=None, end_date=None)

参数

参数类型说明
run_idint回测运行ID, 可从回测历史列表中获取
valuesstr持仓数据种类 (只支持"market_value"或"total_cost"), 默认值为"market_value". 如果values为"market_value", 返回的持仓数据为投资组合中该证券当天实时市场价值(未实现/平仓的价值); 如果values为"total_cost", 返回的数据为投资组合中该证券当天的总买入的价值减去该证券的总卖出价值的绝对值
start_datestr开始日期, 格式为 'YYYY-mm-dd', 默认从回测最早的日期开始
end_datestr结束日期, 格式为 'YYYY-mm-dd', 默认以回测最晚的日期结束

返回

pandas DataFrame - 每日投资组合中每个证券的市场价值或总花费

范例

[In]: rqportal.positions(2012, values="market_value")
[Out]:
                    cash    000916.XSHE    000926.XSHE    002485.XSHE    600270.XSHG    600626.XSHG    601718.XSHG
...
2013-10-08 15:00:00    42.49148    9368.5    53664.72    1867.25    14056.25    38426.75    31464
2013-10-09 15:00:00    42.49148    9614.5    53376.20    1867.25    15470.00    40183.00    31464
...
2013-10-31 15:00:00    42.49148    8097.5    52799.16    1716.00    17485.00    37935.00    30438
2013-11-01 15:00:00    42.49148    7933.5    52943.42    1738.00    17696.25    37935.00    30552

[In]: rqportal.positions(2012, values="total_cost")
[Out]:
                        cash    000916.XSHE     000926.XSHE    002485.XSHE    600270.XSHG         600626.XSHG    601718.XSHG
...
2013-10-08 15:00:00    42.49148    5949.65552    51235.214402    3141.44346    11333.306277    28355.134863    33289.89627
2013-10-09 15:00:00    42.49148    5949.65552    51235.214402    3141.44346    11333.306277    28355.134863    33289.89627
...
2013-10-31 15:00:00    42.49148    5949.65552    51235.214402    3141.44346    11333.306277    28355.134863    33289.89627
2013-11-01 15:00:00    42.49148    5949.65552    51235.214402    3141.44346    11333.306277    28355.134863    33289.89627


rqportal.trades - 获取每日交易数据

rqportal.trades(run_id, start_date=None, end_date=None)

参数

参数类型说明
run_idint回测运行ID, 可从回测历史列表中获取
start_datestr开始日期, 格式为 'YYYY-mm-dd', 默认从回测最早的日期开始
end_datestr结束日期, 格式为 'YYYY-mm-dd', 默认以回测最晚的日期结束

返回

pandas DataFrame - 每日交易数据

参数类型说明
order_book_idstr合约代码
pricefloat成交价
quantityfloat成交量(股数),正数为买入,负数为卖出
transaction_costfloat交易产生的费用,包括佣金、印花税等加总
sidestrBUY - 买,SELL - 卖

Ipython运行回测的三种回测方式

Ricequant内在的策略引 - 用户可以在Ipython中直接使用该策略引擎进行策略研发。

1、使用 rqalpha_plus 进行回测

%%rqalpha_plus -s 20160301 -e 20160901 --account stock 10000 -fq 1d -p -bm 000001.XSHG
# 上述命令参数可以通过运行 %%rqalpha_plus -h 查看到

def init(context):
    # 策略初始化运行
    logger.info('init')
    context.counter = 0

def before_trading(context):
    # 每日开盘前运行
    pass

def handle_bar(context, bar_dict):
    # 每个 bar 数据运行
    context.counter += 1
    if context.counter == 1:
        order_shares('000001.XSHE', 500)

def after_trading(context):
    # 每日收盘后运行
    pass

运行上列代码之后,在研究中继续输入

In []:report.keys()
Out []:dict_keys(['portfolio', 'benchmark_portfolio', 'trades', 'stock_positions', 'stock_account', 'summary'])

2、使用 run_func 进行回测

from rqalpha_plus.api import *
#以上操作会导致当前数据获取API被覆盖,所以在运行完毕之后需要通过 from rqdatac import * 的方式恢复
from rqalpha_plus import run_func

#config 中可设置选项可以通过 %%rqalpha_plus -h 查看到
config = {
  "base": {
    "matching_type": "current_bar",
    "start_date": "2016-03-01", # 回测开始日期
    "end_date": "2016-09-01", # 回测结束日期
    "benchmark": "000001.XSHG", # 基准合约
    "frequency": '1d' # 回测频率, 分钟: '1m'
    "accounts": {
                "stock": 100000# 股票初始资金  期货:"future":100000
             }
  },
  "mod": {
    "sys_progress": {
        "enabled": True,
        "show": True,
    },
    "sys_analyser": {
        "enabled": True,
    },
    "sys_simulation": {
    "matching_type": "next_bar",
    }
  }
}

def init(context):
    context.s1 = "000001.XSHE"
    context.fired = False

def handle_bar(context, bar_dict):
    if not context.fired:
        # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
        order_percent(context.s1, 1)
        context.fired = True


results = run_func(init=init, config=config, handle_bar=handle_bar)
#如果您有自己的函数命名习惯,则可以通过以下指定函数名的方式运行回测
#results = run_func(init=init, handle_bar=handle_bar, before_trading=before_trading, after_trading=after_trading, config=config)
#下面的 import 将之前 from rqalpha_plus.api import * 的覆盖恢复
from rqdatac import **

3、使用 run_code 进行回测

from rqalpha_plus import run_code

config = {
  "base": {
    "matching_type": "current_bar",
    "start_date": "2016-03-01", # 回测开始日期
    "end_date": "2016-09-01", # 回测结束日期
    "benchmark": "000001.XSHG", # 基准合约
    "frequency": '1d' # 回测频率, 分钟: '1m'
    "accounts": {
                "stock": 100000# 股票初始资金  期货:"future":100000
             }
  },
  "extra": {
    "log_level": "info",
  },
  "mod": {
    "sys_progress": {
        "enabled": True,
        "show": True,
    },
    "sys_analyser": {
        "enabled": True,
    },
    "sys_simulation": {
    "matching_type": "next_bar",
    }
  }
}


code="""    

def init(context):
    context.s1 = "000001.XSHE"
    update_universe(context.s1)
    context.fired = False

def before_trading(context):
    pass

def handle_bar(context, bar_dict):
    if not context.fired:
        # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
        order_percent(context.s1, 1)
        context.fired = True
"""

results = run_code(code, config)

[2017-06-15 14:24:59.671903] INFO: system_log: rqdatac use socket ('rqdatad-pro.ricequant.com', '16004') 图片描述

获取回测报告

运行完回测后,报告会自动存储到 report 变量中。可以直接通过 report 变量获取当次回测的结果。run_func, run_code函数本身也会返回回测结果,您可以将其保存到指定的变量中。另外 rqalpha 的 mod 的输出会自动存储在 results 变量中。

In[]:report.portfolio.head()

图片描述

In[]:report.keys()
Out[]:dict_keys(['portfolio', 'benchmark_portfolio', 'trades', 'summary', 'stock_positions', 'stock_account'])  
In[]:
import matplotlib.pyplot as plt
report.portfolio.unit_net_value.plot(legend='unit_net_value')
plt.show() 

图片描述

查看运行命令帮助

In[]:%%rqalpha_plus -h
Out[]:
Usage: ipykernel_launcher.py [OPTIONS]

  Start to run a strategy

Options:
  -h, --help                      Show this message and exit.
  -f, --strategy-file PATH
  -s, --start-date DATE
  -e, --end-date DATE
  -sc, --stock-starting-cash FLOAT
  -fc, --future-starting-cash FLOAT
  -bm, --benchmark TEXT
  -mm, --margin-multiplier FLOAT
  -st, --security [stock|future|stock_future]
  -fq, --frequency [1d|1m|tick]
  -rt, --run-type [b|p]
  --resume
  --source-code TEXT
  -l, --log-level [verbose|debug|info|error|none]
  --locale [cn|en]
  --disable-user-system-log       disable user system log
  --extra-vars TEXT               override context vars
  --enable-profiler               add line profiler to profile your strategy
  --config TEXT                   config file path
  -mc, --mod-config TEXT...       mod extra config
  -i, --init-cash FLOAT           [Deprecated]
  -k, --kind [stock|future|stock_future]
                                  [Deprecated]
  --strategy-type [stock|future|stock_future]
                                  [Deprecated]
  --report PATH                   [sys_analyser] save report
  -o, --output-file PATH          [sys_analyser] output result pickle file
  -p, --plot / --no-plot          [sys_analyser] plot result
  --plot-save TEXT                [sys_analyser] save plot to file
  --no-short-stock / --short-stock
                                  [sys_risk] enable stock shorting
  --progress                      [sys_progress]show progress bar
  --signal                        [sys_simulation]exclude match engine
  -sp, --slippage FLOAT           [sys_simulation]set slippage
  -cm, --commission-multiplier FLOAT
                                  [sys_simulation] set commission multiplier
  -me, --match-engine [current_bar|next_bar|last|best_own|best_counterparty]
                                  [Deprecated][sys_simulation] set matching
                                  type
  -mt, --matching-type [current_bar|next_bar|last|best_own|best_counterparty]
                                  [sys_simulation] set matching type
  -rdu, --rqdatad-username TEXT   [ricequant_data] rqdatad username
  -rdpw, --rqdatad-password TEXT  [ricequant_data] rqdatad password
  -rda, --rqdatad-addr TEXT       [ricequant_data] rqdatad server address
  -rdpt, --rqdatad-port TEXT      [ricequant_data] rqdatad server port
  -d, --data-bundle-path PATH     [ricequant_data] data bundle path  

参数调优

In[]:
import os
from rqalpha_plus import run_func
from rqalpha_plus.api import *


config = {
    'extra': {
        'log_level': 'error',
    },
    'base': {
        'start_date': '2015-01-01',
        'end_date': '2016-01-01',
        'benchmark': '000001.XSHE',
        'frequency': '1d',
        'accounts': {
                 'stock': 100000
             }
    },
    'mod': {
        'sys_progress': {
            'enabled': True,
            'show': True,
        },
        'sys_analyser': {
            'enabled': True,
        },
        'sys_simulation': {
        'matching_type': 'next_bar',
        }
    }
}



tasks = []
for signal in range(1, 101, 20):
    tasks.append((config, signal))

def run_bt(config, signal):
    def init(context):
        context.s1 = '000001.XSHE'
        context.counter = 0
        context.signal = signal

    def handle_bar(context, bar_dict):
        context.counter += 1
        if context.counter == context.signal:
            order_target_percent(context.s1, 0.8)

    result = run_func(config=config, init=init, handle_bar=handle_bar)
    return result, signal

results = []
for task in tasks:
    result = run_bt(*task)
    results.append({'signal': result[1],
                    'sharpe': result[0]['sys_analyser']['summary']['sharpe']}) 
[2017-06-15 18:07:58.037054] INFO: system_log: rqdatac use socket ('peasant', 16003)
/Applications/RQPro.app/Contents/rqalpha/lib/python3.5/site-packages/rqalpha/utils/risk.py:122: RuntimeWarning: invalid value encountered in double_scalars
  self._beta = cov[0][1] / cov[1][1]

图片描述 [2017-06-15 18:08:06.082980] INFO: system_log: rqdatac use socket ('peasant', 16003) 图片描述 [2017-06-15 18:08:13.514796] INFO: system_log: rqdatac use socket ('peasant', 16003) 图片描述 [2017-06-15 18:08:21.244345] INFO: system_log: rqdatac use socket ('peasant', 16003) 图片描述 [2017-06-15 18:08:28.803665] INFO: system_log: rqdatac use socket ('peasant', 16003) 图片描述

In[]:  results_df = pd.DataFrame(results)
#根据 sharpe 进行排序,并且获取对应 signal 值
print(results_df.sort_values('sharpe', ascending=False))  

Out[]:
   sharpe  signal
4   1.694      81
1   1.513      21
0   1.362       1
2   0.593      41
3   0.053      61



其他API

get_file - 读取任意文件

get_file(file_path)

读取您的私有文件(您的私有文件可以在研究模块中看到)

参数

参数类型注释
file_pathstr相对路径,相对于您的私有的在研究模块空间的根目录的路径

返回

返回文件的原始内容,不做任何decode。

范例

df = get_price('000001.XSHE')
df.to_csv('day_px.csv')
import pandas as pd
from six import StringIO
from six import BytesIO
body = get_file('day_px.csv')
data=pd.read_csv(BytesIO(body))
data

保存自己的数据到csv文件

目前我们支持您在IPython策略研究平台上产生的数据保存成csv文件。只需要使用以下简单代码即可实现保存到csv功能:

import pandas as pd
df = pd.DataFrame(xxxx)
df.to_csv('xxxx.csv')

回到IPython平台的首页,您就会看到您的刚才保存的csv数据文件了。当然,您也可以将其下载到本地保存。


支持的其他外部数据源

Tushare

Tushare是一个国内很流行的爬虫数据源。其支持的数据种类比较丰富,API设计也是围绕着pandas来进行的,因此也非常适合Ricequant的用户上手。对于一些我们目前暂时没有的数据,用户可以通过在研究平台中引入Tushare的方式来进行使用——只需要简单的import tushare as ts就可以在研究环境中使用Tushare的有关功能了:

[In]
import tushare as ts
ts.get_hist_data('600848') #一次性获取全部日k线数据

[Out]
            open    high    close    low    volume    price_change    p_change    ma5    ma10    ma20    v_ma5    v_ma10
            v_ma20  turnover
date
2016-03-15    15.24    15.51    15.42    15.12    24615.96    0.18    1.18    15.140    15.336    15.463    23929.04    40792.39    40814.65    0.84
2016-03-14    15.02    15.55    15.24    15.02    25581.68    0.50    3.39    15.206    15.234    15.473    26795.98    41294.81    41075.53    0.88
2016-03-11    14.97    14.97    14.75    14.49    25404.35    -0.26    -1.73    15.242    15.111    15.463    28010.79    42130.01    41207.64    0.87
2016-03-10    15.25    15.41    15.01    15.01    23066.78    -0.26    -1.70    15.330    15.121    15.491    36743.87    43122.33    41836.92    0.79

一些Tushare支持的数据列举如下:


目前支持的Python模块

我们现在支持多种强大的Python模块(如下表所示),需要手动引入。比如您可以输入以下代码来引入pandas模块:

import pandas as pd
df = pd.DataFrame(xxxx)

如果您有自己擅长和特别喜欢的Python模块希望我们支持, 请让我们知道

支持模块列表

模块名简介文档链接
talibTA-Lib是一个被交易员常用的技术分析库,包含了超过150+的技术指标比如MACD,RSI,Bollinger Bands等TA-Lib官网
pandas最流行的Python数据分析库pandas文档
numpynumpy是一个Python的科学计算基础库。numpy文档
scipySciPy是一个Python的数学、科学和工程计算的生态系统库。scipy文档
statsmodelsStatsmodels可以研究数据,构架统计模型和进行统计测试。功能包括:线性回归模型等statsmodels文档
bisectPython的排序模块bisect文档
cmath提供可以对复数计算的数学模块cmath文档
collections提供除了Python内嵌的容器之外的容器种类选择 - dict, list, set 和 tuplecollections文档
sklearnPython的机器学习模块(machine learning)sklearn文档
hmmlearnPython的隐马尔可夫模型(Hidden Markov Models)模块,类似scikit-learn的APIhmmlearn文档
pykalman超级简单的卡尔曼滤波(Kalman Filter), Kalman Smoother和EM模块pykalman文档
cvxoptcvxopt提供了凸优化(convex optimization)的解的python库。cvxopt文档
archarch提供了Univariate volatility模型,Bootstrapping和Multiple comparison proceduresarch文档
dateutildateutil模块提供了对标准的datetime模块的强大的拓展dateutil文档
datetimedatetime文档
functoolsfunctools文档
heapqheapq文档
pywtPyWavelets是一个Python的小波变换的库pywt文档
tensorflowTensor flow is an open source software library for machine intelligence.tensorflow文档
tushare国内流行的开源数据库,燥起来吧,各种数据。tushare网站
pybrainpybrain是一个流行的机器学习库。PyBrain is a modular Machine Learning Library for Python.pybrain文档
theanoPython library that allows you to define, optimize, and evaluate mathematical expressions involvingmulti-dimensional arraystheano文档
gensimRealize unsupervised semantic modelling from plain textgensim文档
jieba“结巴”中文分词jieba文档
pymcBayesian statistical models and fitting algorithms, including Markov chain MonteCarlo.pymc文档
tablesmanaging hierarchical datasets, efficiently and easily cope with extremely large amounts of data.pytables文档
nltk一个流行的人类语言分析库。nltk文档
kerasTheano和Tensorflow的深度学习库。keras文档
requests易用的HTTP库requests文档
bs4beautifulsoup是网页爬取数据的利器!beautifulsoupd文档
lxml处理XML和HTML的最好用的python库lxml中文文档
urllibpython自带的url处理库urllib文档
xgboost速度快效果好的boosting模型xgboost文档
mathmath文档
pytzpytz文档
queuequeue文档
randomrandom文档
rere文档
timetime文档
arrayarray文档
copycopy文档
jsonjson文档
operatoroperator文档
xmlxml文档
matplotlibmatplotlib是一个Python 2D画图库。提供了如同出版质量的画图和跨平台互动式交互环境。matplotlib文档
seaborn基于matplitlib之上的一个画图库,不过提供了高级的API,画图的效果也更棒seaborn文档
bokeh互动式画图库,可以在网页中做展示,目标是提供优美的图画展示,非常推荐!bokeh文档
toyplot可以做动画图渲染toyplot文档
vispy互动式科学计算图形化渲染vispy文档
mpl_toolkitsmatplotlib的绘图工具模块mpl_toolkits文档
plotly强大优美的图表库,支持三种不同类型的图表,包括地图,箱形图和密度图,以及更常见的产品如,条状和线形图plotly文档
fbprophet简单强大的数据预测工具包Prophet使用指南

引用自己的Python模块或库

当您看到以上我们预先支持的Python第三方库以后肯定会想是否能够引入自己的Python模块呢?当然是可以的!

  1. 首先需要在IPython研究平台创建一个文本文件,切记不是一个Notebook文件噢!只有Python文件才可以被import导入! 图片描述

  2. 点击名字,修改为xxx.py, 比如本次例子修改为my_lib.py(一定要以.py结尾哦!): 图片描述

  3. 文件中写入自己的代码,(需要注意,如果调用研究函数需要from rqdatac import * )然后保存: 图片描述

图片描述

  1. 接着可以在IPython Notebook中import之前创建的my_lib.py并且调用hi函数了: 图片描述

使用好这个功能可以很好地复用自己的python模块和代码。


IPython Notebook功能

使用和保存自己的数据

上传自己的数据文件

比如上传自己的csv数据文件,在IPython策略研究平台点击'upload'即可:

图片描述

接着您就可以在IPython平台上通过pandasread_csv方法方便地进行文件的读取了:

import pandas as pd
df = pd.read_csv('xxxx.csv')

代码自动补全

你可以通过 tab按键来使用自动补全功能,如下图所示:

图片描述

该功能对于财务数据的查询将会非常有用,因为财务数据有多达400+的指标。

快捷键

所有的IPython Notebook支持的快捷键如下图所示:

图片描述

图片描述

图片描述

正在运行中的策略 0