🚀 AI 一键生成 joinquant 策略代码

基于 get_mtss 融资买入额(fin_buy_value)的情绪策略

joinquant | 发布时间: 2025/12/23
以下内容由 EasyQuant 生成。

问题描述

如何获取并分析一只股票的历史融资买入额?

解决方案

在聚宽(JoinQuant)平台中,获取并分析一只股票的历史融资买入额主要使用 get_mtss 函数。该函数专门用于获取融资融券信息。

以下是具体的步骤、代码实现及分析方法。

1. 核心 API 说明

  • 函数名: get_mtss(security_list, start_date=None, end_date=None, fields=None, count=None)
  • 关键字段 (fields):
    • fin_buy_value: 融资买入额(元)
    • fin_value: 融资余额(元)
    • sec_value: 融券余量(股)
  • 适用范围: 仅适用于融资融券标的股票。

2. 代码实现

以下代码展示了如何在研究环境中获取平安银行(000001.XSHE)过去一年的融资买入额,并绘制趋势图进行简单分析。

# -*- coding: utf-8 -*-
from jqdata import *
import pandas as pd
import matplotlib.pyplot as plt
import datetime

# 1. 设置参数
security = '000001.XSHE'  # 标的:平安银行
end_date = datetime.datetime.now().date() # 结束日期:今天
start_date = end_date - datetime.timedelta(days=365) # 开始日期:一年前

# 2. 获取融资融券数据
# fields=['date', 'fin_buy_value'] 分别代表日期和融资买入额
df = get_mtss(
    security_list=[security], 
    start_date=start_date, 
    end_date=end_date, 
    fields=['date', 'fin_buy_value', 'fin_value']
)

# 3. 数据预处理与分析
if df is not None and not df.empty:
    # 将日期设置为索引,方便绘图
    df['date'] = pd.to_datetime(df['date'])
    df.set_index('date', inplace=True)
    
    # 计算融资买入额的移动平均线(例如20日均线),观察趋势
    df['MA20_buy'] = df['fin_buy_value'].rolling(window=20).mean()
    
    # 打印最近5条数据
    print("最近5个交易日的融资数据:")
    print(df.tail())
    
    # 4. 可视化分析
    plt.figure(figsize=(15, 6))
    
    # 绘制融资买入额
    plt.plot(df.index, df['fin_buy_value'], label='Financing Buy Value (Daily)', color='blue', alpha=0.5)
    
    # 绘制20日均线
    plt.plot(df.index, df['MA20_buy'], label='20-Day Moving Average', color='red', linewidth=2)
    
    plt.title(f'{security} Financing Buy Value Analysis')
    plt.xlabel('Date')
    plt.ylabel('Value (CNY)')
    plt.legend()
    plt.grid(True)
    plt.show()
    
else:
    print(f"未获取到 {security} 的融资融券数据,请确认该股票是否为两融标的。")

3. 分析思路

获取数据后,通常可以从以下几个维度进行分析:

  1. 趋势分析

    • 观察 fin_buy_value 的绝对值变化。如果融资买入额持续放大,通常代表市场情绪偏向多头,资金看好后市。
    • 结合 fin_value (融资余额) 分析。如果融资买入额增加,且融资余额同步创出新高,说明资金在持续流入且持仓意愿强。
  2. 情绪拐点

    • 当股价下跌但融资买入额异常放大时,可能是资金在“抄底”。
    • 当股价上涨但融资买入额开始萎缩时,可能预示着多头力量减弱。
  3. 量价配合

    • 可以将融资买入额与股价(通过 get_price 获取)叠加分析,计算两者的相关性。融资买入额通常被视为“聪明钱”或激进资金的动向指标。

Q&A

Q1: 为什么调用 get_mtss 返回的数据是空的?
A1: 可能原因有二:一是该股票不是融资融券标的(只有部分大盘股和活跃股是两融标的);二是查询的时间段内该股票暂停了融资买入。

Q2: fin_buy_valuefin_value 有什么区别?
A2: fin_buy_value (融资买入额) 是当天的流量数据,表示当天借钱买入了多少;fin_value (融资余额) 是存量数据,表示截至当天收盘,投资者一共借了多少钱还没还。

Q3: 这个数据在回测中可以使用吗?
A3: 可以。在回测中调用 get_mtss 时,系统会自动处理未来函数问题,即在策略运行到 T 日时,只能获取到 T-1 日及之前的融资融券数据(因为交易所通常在收盘后晚间公布当日两融数据)。

Q4: 如何获取全市场的融资买入总额?
A4: get_mtss 支持传入多只股票列表。你可以先通过 get_margincash_stocks() 获取所有融资标的列表,然后传入 get_mtss 进行批量获取并求和(注意数据量较大,建议分批处理)。