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

期货连续合约

由于期货合约存续的特殊性,针对每一品种的期货合约,我们都增加了 主力连续合约以及指数连续合约两个人工合成的合约来满足研究或回测的使用需求。

主力连续合约

主力连续合约是由该品种期货不同时期主力合约接续而成,合约代码为品种名称+88,例如IF88。

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

指数连续合约

指数连续合约是由当前品种全部可交易合约组合而成,主要用于中长期策略的回测,合约代码为品种名称+99,例如IF99。其中,价格数据(开盘、收盘、最高、最低、结算、昨结算)都是通过对同品种期货合约的价格以当天持仓量为权重进行加权平均得到;而总成交额、总成交量、累计持仓量都是同品种期货合约对应字段的加总值。


期货行情

期货历史行情

研究:get_price(order_book_id, start_date=None, end_date=None, frequency='1d', fields=None, adjust_type='pre', skip_suspended=False, country='cn')
回测:get_price(order_book_id, start_date, end_date=None, frequency='1d', fields=None, adjust_type='pre', skip_suspended=False)

获取指定合约或合约列表的历史行情(包含起止日期,日线或分钟线),不能在交易过程中的'handle_bar'函数中进行调用。目前仅支持中国市场。

参数

参数类型说明
order_book_idstr OR str list合约代码,合约代码,可传入order_book_id, order_book_id list, symbol, symbol list
start_datestr, datetime.date, datetime.datetime, pandasTimestamp开始日期,默认为期货上市日期。交易使用时,用户必须指定
end_datestr, datetime.date, datetime.datetime, pandasTimestamp结束日期,默认为期货退市日期或当前日期前一天。交易使用时,默认为策略当前日期前一天
frequencystr历史数据的频率。 现在支持日/分钟级别的历史数据,默认为'1d'。使用者可自由选取不同频率,例如'5m'代表5分钟线
fieldsstr OR str list字段名称
adjust_typestr权息修复方案。前复权 - pre,后复权 - post,不复权 - none,回测使用 - internal 。期货无意义
skip_suspendedbool是否跳过停牌数据。期货无意义
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

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

范例

[In]get_price('A1401')
[Out]
open    close    high    low    total_turnover    volume    settlement    prev_settlement    open_interest    basis_spread    limit_up    limit_down
2012-07-16    4900.0    4905.0    4908.0    4879.0    4012500.0    82.0    4893.0    4744.0    66.0    NaN    5123.0    4365.0
2012-07-17    4816.0    4790.0    4860.0    4778.0    4237200.0    88.0    4814.0    4893.0    100.0    NaN    5088.0    4698.0
2012-07-18    4788.0    4782.0    4817.0    4782.0    1726500.0    36.0    4795.0    4814.0    110.0    NaN    5006.0    4622.0
2012-07-19    4842.0    4826.0    4843.0    4792.0    3372200.0    70.0    4817.0    4795.0    142.0    NaN    4986.0    4604.0
...

期货历史行情(交易专用)

history_bars(order_book_id, bar_count, frequency, fields=None, skip_suspended=True, include_now=False)

获取指定合约的历史行情,同时支持日以及分钟历史数据。不能在init中调用。

参数
参数类型注释
order_book_idstr合约代码,必填项
bar_countint获取的历史数据数量,必填项
frequencystr获取数据什么样的频率进行。'1d'或'1m'分别表示每日和每分钟,必填项。您可以指定不同的分钟频率,例如'5m'代表5分钟线
fieldsstr OR str list返回数据字段。必填项。见下方列表
skip_suspendedbool是否跳过停牌,默认True,跳过停牌
include_nowbool是否包括不完整的bar数据。默认为False,不包括。举例来说,在09:39的时候获取上一个5分钟线,默认将获取到09:31~09:35合成的5分钟线。如果设置为True,则将获取到09:36~09:39之间合成的"不完整"5分钟线
fields字段名
datetime时间戳
open开盘价
high最高价
low最低价
close收盘价
volume成交量
total_turnover成交额
datetimeint类型时间戳
open_interest持仓量(期货专用)
basis_spread期现差(股指期货专用)
settlement结算价(期货日线专用)
prev_settlement结算价(期货日线专用)
返回

ndarray ,方便直接与talib等计算库对接,效率较history返回的DataFrame更高。


期货合约信息

所有合约信息

研究:all_instruments(type=None, country='cn', **kwargs)
交易:all_instruments(type=None)

获取某个国家市场的所有合约信息。

参数

参数类型说明
typestr需要查询合约类型,例如:type='Future'代表期货。默认是所有类型
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(type='Future')
[Out]
  abbrev_symbol  contract_multiplier de_listed_date exchange listed_date  \
0      TRXJ0005                  5.0     2000-05-15     SHFE  1999-10-19   
1       ZXD1601                 20.0     2016-01-15     CZCE  2015-01-19   
2       PTA1602                  5.0     2016-02-19     CZCE  2015-02-16   
3       YCZ1607                 10.0     2016-07-14     CZCE  2015-07-15   
4      rzjb1505                 10.0     2015-05-15     SHFE  2014-05-16   

   margin_rate maturity_date order_book_id    product  round_lot  \
0         0.05    2000-05-15        RU0005  Commodity        1.0   
1         0.05    2016-01-15        RI1601  Commodity        1.0   
2         0.05    2016-02-19        TA1602  Commodity        1.0   
3         0.05    2016-07-14        RS1607  Commodity        1.0   
4         0.04    2015-05-15        HC1505  Commodity        1.0   

            settlement_method    symbol trading_unit    type  \
0  PhysicalSettlementRequired  天然橡胶0005            5  Future   
1  PhysicalSettlementRequired   早籼稻1601           20  Future   
2  PhysicalSettlementRequired   PTA1602            5  Future   
3  PhysicalSettlementRequired   油菜籽1607           10  Future   
4  PhysicalSettlementRequired  热轧卷板1505           10  Future   

  underlying_order_book_id underlying_symbol  
0                     null                RU  
1                     null                RI  
2                     null                TA  
3                     null                RS  
4                     null                HC
[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(order_book_id, country='cn')

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

参数

参数类型说明
order_book_idsstr OR str list合约代码或合约代码列表,可传入order_book_id, order_book_id list, symbol, symbol list
countrystr默认是中国市场('cn'),目前仅支持中国市场

返回

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

参数类型说明
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'- 郑州商品交易所

一些商品期货交易品种存在合约代码修改的问题。因为变动前后它们的合约乘数产生了变化,所以目前我们将修改前后的期货合约当做两种合约来处理。而实际上,它们交易的又是同一品种,价格水平具备连续性。所以在主力连续与指数连续合约的处理上,我们做了区分处理。举例来说,强麦的主力连续合约我们有'强麦主力连续(旧)'和'强麦主力连续',分别对应'WS88'和'WH88'的orderbook_id.

一些变动的期货代码列举如下:

品种品种代码(变动前)品种代码(变动后)
强麦WS(1305及以前)WH
菜籽油RO(1305及以前)OI
早籼稻ER(1305及以前)RI
甲醇ME(1505及以前)MA
动力煤TC(1604及以前)ZC

Instrument对象也支持如下方法:

instruments(order_book_id).days_from_listed(date=None)

研究使用时,date默认为当前日期;策略使用时不能指定date,日期为策略当前日期 如果合约首次上市交易,天数为0;如果合约尚未上市或已经退市,则天数值为-1

instruments(order_book_id).days_to_expire(date=None)

研究使用时,date默认为当前日期;策略使用时不能指定date,日期为策略当前日期 如果策略已经退市,则天数值为-1

tick_size()

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

范例

[In]
instruments(['IF1608', 'AU1702'])
[Out]
Instrument(de_listed_date='2016-08-19', symbol='沪深1608', abbrev_symbol='HS1608', exchange='CFFEX', contract_multiplier=300.0, listed_date='2016-06-20', type='Future', maturity_date='2016-08-19', trading_unit='手', order_book_id='IF1608', underlying_symbol='IF', round_lot=1.0, margin_rate=0.4, settlement_method='CashSettlementRequired', product='Index', underlying_order_book_id='CSI300.INDX'),
 Instrument(de_listed_date='2017-02-15', symbol='黄金1702', abbrev_symbol='HJ1702', exchange='SHFE', contract_multiplier=1000.0, listed_date='2016-01-18', type='Future', maturity_date='2017-02-15', trading_unit='1000', order_book_id='AU1702', underlying_symbol='AU', round_lot=1.0, margin_rate=0.04, settlement_method='PhysicalSettlementRequired', product='Commodity', underlying_order_book_id='null')]

获取主力合约

研究:get_dominant_future(underlying_symbol, start_date, end_date)
回测:get_dominant_future(underlying_symbol)

参数

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

返回

研究使用时:Pandas.Series - 主力合约代码列表 回测使用时:str - 策略当前日期的主力合约order_book_id

范例


获取期货可交易合约列表

研究:get_future_contracts(underlying_symbol, date=None)
交易:get_future_contracts(underlying_symbol)

获取某一期货品种在策略当前日期的可交易合约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_yield_curve(start_date='2013-01-04', end_date='2014-01-04', tenor=None, country='cn')
交易:get_yield_curve(date=None, tenor=None)

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

参数

参数类型说明
countrystr默认是中国市场('cn'),目前仅支持中国市场
datestr, datetime.date, datetime.datetime, pandasTimestamp查询日期,默认为策略当前日期前一天
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年

返回

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
...

正在运行中的策略 0