AKShare 奇货可查资金数据接口详解:从净流多空到保证金沉淀的完整实践指南
奇货可查(qhkch.com)是一家商业化运营的期货市场数据分析平台,其在 AKShare 中以 pro_api 形式对外开放了商品与股指期货的资金流向数据。本文围绕 docs/data/qhkc/fund.md 中定义的五大资金接口(每日净流多空列表与商品保证金沉淀变化),结合 akshare/qhkc/qhkc_api.py 与 akshare/pro/client.py 的源码实现,完整讲解接口参数、返回字段、调用示例与底层请求机制,帮助你在量化研究与席位资金跟踪中直接上手使用。
一、接口背景与数据来源
奇货可查网站目前已进入商业化运营阶段,AKShare 为其提供了程序化调用通道。资金数据接口按标的范围划分为两类:
- 商品类:覆盖国内三大商品期货交易所(上期所、大商所、郑商所)的活跃品种,品种编码如
RB(螺纹钢)、J(焦炭)、CU(沪铜); - 指数类:覆盖中金所金融期货品种,品种编码如
IF(沪深300股指)、IC(中证500股指)、T(十年期国债)。
所有资金接口返回的金额单位均为元,席位字段对应期货公司在交易所的会员席位名称。数据以日频快照形式提供,日期参数格式统一为 YYYY-MM-DD。
二、环境准备与 token 获取
所有资金接口均通过 pro_api 统一入口调用,属于需要鉴权的付费数据接口。初始化逻辑位于 akshare/pro/data_pro.py:
def pro_api(token=""):
"""
初始化 pro API,第一次可以通过ak.set_token('your token')来记录自己的token凭证,临时token可以通过本参数传入
"""
if token == "" or token is None:
token = token_process.get_token()
if token is not None and token != "":
pro = client.DataApi(token)
return pro
else:
raise Exception("api init error.")
从中可以看到两种 token 注入方式:
- 长期保存:调用
ak.set_token("your token")将 token 写入本地配置,之后pro_api()无需传参即可读取; - 临时传入:直接在
pro_api(token="...")中传入。
token 本身需要联系奇货可查网站管理员获取。若 token 缺失或已过期,接口会抛出异常(详见下文对 client.py 中请求异常处理的分析)。
三、每日净流多列表(商品)
接口定义
- 接口名称:
commodity_flow_long - 接口描述:每日净流多列表(商品)接口,返回当日各期货席位在商品品种上的净流入做多资金排行。
请求参数
| 参数名 | 说明 | 举例 |
|---|---|---|
| date | 查询日期 | 2018-08-08 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| broker | string | 席位 |
| money | float | 流多资金,单位元 |
| variety | string | 品种编码 |
示例代码
from akshare import pro_api
pro = pro_api(token="在此处输入您的 token, 可以联系奇货可查网站管理员获取")
commodity_flow_long_df = pro.commodity_flow_long(date="2018-08-08")
print(commodity_flow_long_df)
返回示例
broker money variety
0 浙商期货 78975156.0 J
1 华泰期货 63497619.0 RB
2 大地期货 55812816.0 RB
3 中国国际 50224588.2 RB
4 海证期货 41670190.8 RB
5 新湖期货 39482177.0 CU
6 国投安信 39439456.2 RB
7 东海期货 34120575.0 RB
8 弘业期货 33741000.0 J
9 中辉期货 33432132.0 J
从返回示例可以观察到:同一席位(如浙商期货)可在多个品种上同时位列净流多榜,席位资金偏好信息由此可得。money 均为正数,表示做多方向的资金净流入。
四、每日净流空列表(商品)
接口定义
- 接口名称:
commodity_flow_short - 接口描述:每日净流空列表(商品)接口,返回当日各期货席位在商品品种上的净流入做空资金排行。
请求参数
| 参数名 | 说明 | 举例 |
|---|---|---|
| date | 查询日期 | 2018-08-08 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| broker | string | 席位 |
| money | float | 流空资金,单位元 |
| variety | string | 品种编码 |
示例代码
from akshare import pro_api
pro = pro_api(token="在此处输入您的 token, 可以联系奇货可查网站管理员获取")
commodity_flow_short_df = pro.commodity_flow_short(date="2018-08-08")
print(commodity_flow_short_df)
返回示例
broker money variety
0 方正中期 -98550360.0 RB
1 国海良时 -59991336.0 RB
2 永安期货 -52131000.0 J
3 南华期货 -47408484.6 RB
4 迈科期货 -42165963.0 CU
5 永安期货 -36507715.2 ZC
6 光大期货 -35340900.0 J
7 申银万国 -32120996.0 I
8 申银万国 -31075680.0 J
9 国海良时 -30726828.0 I
注意此处 money 为负数,这与净流多列表的正数形成对称关系:流空资金以负值表达方向,做空规模越大绝对值越大。相同席位(如永安期货)可同时出现在不同品种(J 与 ZC)的空头榜上。
五、每日净流多列表(指数)
接口定义
- 接口名称:
stock_flow_long - 接口描述:每日净流多列表(指数)接口,返回金融期货(指数类)各席位的净流入做多资金排行。
请求参数
| 参数名 | 说明 | 举例 |
|---|---|---|
| date | 查询日期 | 2018-08-08 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| broker | string | 席位 |
| money | float | 流多资金,单位元 |
| variety | string | 品种编码 |
示例代码
from akshare import pro_api
pro = pro_api(token="在此处输入您的 token, 可以联系奇货可查网站管理员获取")
stock_flow_long_df = pro.stock_flow_long(date="2018-08-08")
print(stock_flow_long_df)
返回示例
broker money variety
0 浙商期货 43487544.0 T
1 华信期货 32456851.2 IC
2 永安期货 28275580.0 T
3 宏源期货 25465190.4 IC
4 华泰期货 24695284.0 T
5 东吴期货 19973982.0 IF
6 国投安信 16403899.2 IC
7 东证期货 16318434.0 IF
8 光大期货 16102408.0 T
9 国泰君安 15661356.0 IF
与商品接口相比,指数接口的 variety 取值集中在 IF、IC、T 等金融期货品种编码上,反映的是中金所席位的资金行为,适合用来跟踪机构资金在股指与国债期货上的多空倾向。
六、每日净流空列表(指数)
接口定义
- 接口名称:
stock_flow_short - 接口描述:每日净流空列表(指数)接口,返回金融期货(指数类)各席位的净流入做空资金排行。
请求参数
| 参数名 | 说明 | 举例 |
|---|---|---|
| date | 查询日期 | 2018-08-08 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| broker | string | 席位 |
| money | float | 流空资金,单位元 |
| variety | string | 品种编码 |
示例代码
from akshare import pro_api
pro = pro_api(token="在此处输入您的 token, 可以联系奇货可查网站管理员获取")
stock_flow_short_df = pro.stock_flow_short(date="2018-08-08")
print(stock_flow_short_df)
返回示例
broker money variety
0 兴证期货 -58628808.0 IC
1 银河期货 -25623004.0 T
2 中信建投 -22801228.8 IC
3 中国国际 -22069300.0 T
4 广发期货 -21033230.4 IC
5 海通期货 -19759036.8 IC
6 鲁证期货 -19506972.0 T
7 海通期货 -17856834.0 IF
8 中金期货 -17410272.0 IF
9 南华期货 -13345152.0 IF
同样的规则:money 为负值表达空头方向。横向对比 stock_flow_long 与 stock_flow_short 两个接口的结果,可以快速识别出当日股指期货市场的主要多空博弈席位。
七、每日商品保证金沉淀变化
接口定义
- 接口名称:
money_in_out - 接口描述:每日商品保证金沉淀变化接口,返回全市场各商品品种在指定日期的沉淀保证金增减情况,用于观察资金在各品种间的流入流出(品种间资金迁徙)。
请求参数
| 参数名 | 说明 | 举例 |
|---|---|---|
| date | 查询日期 | 2018-08-08 |
返回参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| symbol | string | 品种编码 |
| chge | float | 品种沉淀资金变化,单位元 |
示例代码
from akshare import pro_api
pro = pro_api(token="在此处输入您的 token, 可以联系奇货可查网站管理员获取")
money_in_out_df = pro.money_in_out(date="2018-08-08")
print(money_in_out_df)
返回示例
chge symbol
0 -275632312.0 J
1 -243543981.6 ZC
2 -81290136.0 I
3 -45598051.2 JM
4 -31547670.0 P
5 -30567752.5 L
6 -30113737.6 BU
7 -28320467.0 PP
8 -26664664.0 SR
9 -22570900.0 CF
10 -19633982.0 FU
11 -10199960.0 PB
12 -6788380.0 FG
13 -6080775.4 JD
14 -2069555.6 SN
15 -1979271.0 RU
16 -695370.0 CY
17 -87414.0 RI
18 -18258.0 JR
19 0.0 SC
20 0.0 PM
21 0.0 WR
22 0.0 FB
23 0.0 BB
24 0.0 RS
25 2467941.0 AL
26 3289568.0 WH
27 5503300.0 LR
28 8602684.0 OI
29 9535390.0 CS
30 15957968.0 ZN
31 19975040.4 SF
32 21202165.0 AU
33 25174906.8 RM
34 26598818.0 B
35 31817098.0 Y
36 33848526.6 MA
37 34038302.2 SM
38 43679158.6 AP
39 52613008.0 A
40 58577657.6 HC
41 81632070.0 AG
42 105799545.0 V
43 110605243.0 C
44 184962996.0 RB
45 192803778.0 M
46 204487969.0 CU
47 220199220.0 TA
48 293341736.0 NI
该接口返回的是全品种逐行明细而非排行榜,因此可以直接对 chge 列做排序、筛选或绘图。实际使用中可以发现:正值代表资金沉淀增加(资金流入该品种)、负值代表资金沉淀减少(资金流出该品种),值为 0.0 的品种(如 SC、PM)表示当日无沉淀资金变化。品种编码覆盖了上期所、大商所、郑商所的主要活跃合约,如 RB(螺纹钢)、M(豆粕)、TA(PTA)、NI(沪镍)等。
八、底层机制解析:pro_api 的动态接口分发
理解这几个资金接口的调用方式,有必要看一下它们背后的请求链路。akshare/pro/client.py 中的 DataApi 类实现了统一的 HTTP 客户端:
class DataApi:
__token = ""
__http_url = "https://api.qhkch.com"
def __init__(self, token, timeout=10):
self.__token = token
self.__timeout = timeout
def query(self, api_name, fields="", **kwargs):
headers = {
"X-Token": self.__token,
}
url = parse.urljoin(self.__http_url, "/".join([api_name, *kwargs.values()]))
res = requests.get(url, headers=headers, timeout=self.__timeout)
if res.status_code != 200:
raise Exception("连接异常, 请检查您的Token是否过期和输入的参数是否正确")
data_json = res.json()
if fields == "":
try:
return pd.DataFrame(data_json)
except ValueError:
result_df = pd.DataFrame.from_dict(
data_json, orient="index", columns=[api_name]
)
return result_df
else:
return pd.DataFrame(data_json[fields])
def __getattr__(self, name):
return partial(self.query, name)
关键点在于 __getattr__ 方法:任何在 DataApi 实例上访问的属性名都会被包装为 partial(self.query, name)。这意味着你调用 pro.commodity_flow_long(date="2018-08-08") 时,commodity_flow_long 会被作为 api_name 传入 query,而 date 参数值会拼进 URL 路径:
https://api.qhkch.com/commodity_flow_long/2018-08-08
请求通过 X-Token 请求头携带 token 完成鉴权,响应 JSON 会被自动转换为 pandas.DataFrame(若为键值对结构则转为单行 DataFrame 并以其接口名为列名)。因此:
- 返回结构为列表时,你会得到多行的 DataFrame(如上述流多、流空榜);
- 返回结构为单值键值对时,会得到单行的 DataFrame。
这也解释了为什么所有五个资金接口无需在 AKShare 中逐个编写专用函数——它们由 pro_api 的动态分发机制统一处理,接口清单由奇货可查服务端定义。完整的接口调用示例可参考 akshare/qhkc/qhkc_api.py,其中资金类五个接口的调用方式与本文档保持一致。
九、配套接口与使用建议
除了本文档的五个资金接口,奇货可查在 AKShare 中还开放了同源的指数资金动向接口 index_trend(按指数维度返回各席位各品种的净持仓资金变化,正数为流多、负数为流空)与指数席位盈亏接口 index_profit,二者与本文资金接口共用 pro_api 入口与 token 鉴权,可相互印证使用。此外,akshare/qhkc_web/qhkc_fund.py 中还提供了一组免 token 的历史资金类接口(净持仓分布、总持仓分布、净持仓变化分布、成交额分布,数据时段为 2016-10-10 至 2019-09-30),可供无需鉴权的历史数据回溯场景使用。
实际应用中的几点建议:
- 日期格式:五个接口的
date参数统一使用YYYY-MM-DD字符串,示例中的2018-08-08为文档给定的验证日期; - 方向约定:净流多接口
money为正、净流空接口money为负,拼接分析时无需再次取反; - 榜单视角:流多/流空接口返回的是 Top 排行(示例截取前 10 行),适合跟踪头部席位动向;
money_in_out返回全品种明细,适合做品种维度资金面分析; - 鉴权失败处理:
client.py中当 HTTP 状态码非 200 时会抛出"连接异常,请检查您的Token是否过期和输入的参数是否正确",遇到异常请优先核查 token 有效性。
十、小结
本文围绕 docs/data/qhkc/fund.md 系统梳理了 AKShare 奇货可查资金数据接口的五个核心 API:commodity_flow_long、commodity_flow_short、stock_flow_long、stock_flow_short 与 money_in_out。它们以统一的 pro_api 入口、统一的 date 参数和统一的"席位-资金-品种"数据模型,覆盖了商品与金融期货两大板块的净流多空跟踪以及全市场保证金沉淀变化监控。结合 akshare/pro/client.py 的动态分发机制,你可以将上述调用模式推广到奇货可查平台开放的其他接口,快速搭建属于自己的席位资金跟踪体系。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



