问题描述
解决方案
在聚宽(JoinQuant)平台中,获取股票的融资融券余额数据主要使用 get_mtss 函数。该函数可以获取一只或多只股票在指定时间段内的融资融券详细信息。
以下是具体的获取方法和代码示例。
核心函数:get_mtss
该函数用于获取融资融券信息,数据通常在交易日收盘后更新(T+1)。
函数原型:
get_mtss(security_list, start_date=None, end_date=None, fields=None, count=None)
关键字段说明(fields):
获取“余额”相关数据时,主要关注以下字段:
fin_value:融资余额(元)。即投资者融资买入股票后尚未偿还的金额。sec_value:融券余量(股)。即投资者融券卖出后尚未偿还的股票数量。fin_sec_value:融资融券余额(元)。通常指融资余额 + 融券余额(融券余量 * 当前股价)。
代码示例
在使用前,请确保已导入 jqdata 库。
示例 1:获取单只股票最近 5 天的融资融券余额
# -*- coding: utf-8 -*-
from jqdata import *
# 获取平安银行(000001.XSHE)最近5个交易日的融资余额和融券余量
# count=5 表示往前取5条数据
df = get_mtss(
'000001.XSHE',
count=5,
fields=['date', 'sec_code', 'fin_value', 'sec_value', 'fin_sec_value']
)
print(df)
示例 2:获取多只股票指定日期范围的数据
# -*- coding: utf-8 -*-
from jqdata import *
# 设定股票列表
security_list = ['000001.XSHE', '600000.XSHG']
# 获取指定时间段的数据
df = get_mtss(
security_list,
start_date='2023-01-01',
end_date='2023-01-10',
fields=['date', 'sec_code', 'fin_value', 'fin_buy_value']
)
print(df)
注意事项
- 数据更新时间:融资融券数据通常由交易所延后发布,一般在下一个交易日早上才能获取到前一个交易日的数据。
- 单位区别:
fin_value(融资余额)的单位是元。sec_value(融券余量)的单位是股。
- 回测环境:在回测中调用该函数时,为避免未来函数,无法获取回测当前逻辑时间的那一条数据(例如在 2023-01-05 日回测,只能获取到 2023-01-04 及之前的数据)。
Q&A
Q: get_mtss 函数返回的数据类型是什么?
A: 返回的是一个 pandas.DataFrame 对象。如果指定了 fields 参数,列索引即为指定的字段名;如果未指定,则包含所有可用字段。
Q: 如何获取全市场的融资融券标的列表?
A: 可以使用 get_margincash_stocks() 获取融资标的列表,使用 get_marginsec_stocks() 获取融券标的列表。
Q: 为什么获取到的融券余额(sec_value)看起来数值很小?
A: 请注意 sec_value 代表的是“融券余量”,单位是“股”而不是“元”。如果需要计算融券金额,通常需要结合当时的股价进行估算,或者直接查看 fin_sec_value(融资融券总余额)减去 fin_value(融资余额)。
Q: 如果查询的股票不是融资融券标的,会返回什么?
A: 如果传入的股票代码不在融资融券标的范围内,或者该时间段内没有数据,返回的 DataFrame 将为空或不包含该股票的记录。