4. 股票关系图构建:行业关联、供应链关系、资金流向图的构建方法

好,咱们进入正题。

图注意力网络要发挥作用,前提是你得有一张好图。说白了,股票之间的关系图就是模型的「燃料」。图建得不好,模型再牛也白搭。我个人习惯把股票关系图分成三类:行业关联、供应链关系、资金流向。今天咱们一个一个拆开讲。

4.1 行业关联图:最基础的关系网

行业关联,这是最直观的关系。同行业的股票,往往受同样的宏观因素影响。比如茅台和五粮液,都是白酒,涨跌经常同步。

构建方法其实很简单:

  • 用申万行业分类或者GICS分类
  • 同一行业内的股票两两连边
  • 边的权重可以设为1,或者用相关系数加权

我在项目中遇到过一个问题:如果只用一级行业分类,图太稀疏了。比如「食品饮料」下面有白酒、乳制品、调味品,它们之间的相关性其实差异很大。所以我建议用二级甚至三级行业分类,图会更精细。

核心思路:行业关联图是静态的,一旦建好就不变了。它捕捉的是长期稳定的业务相似性。

4.2 供应链关系图:上下游的传导效应

这个就更有意思了。你想想看,如果苹果公司砍单,立讯精密肯定受影响。这就是供应链的传导效应。

数据来源:

  • 上市公司年报中的前五大客户/供应商
  • 行业研究报告
  • 专业金融数据库(如Wind、Bloomberg)

构建规则:

  1. 如果A公司是B公司的前五大客户,则A→B有一条有向边
  2. 如果A公司是B公司的前五大供应商,则B→A有一条有向边
  3. 边的权重可以用交易金额占比来量化

注意:供应链数据更新频率低,通常一年一次。而且很多公司不披露具体比例,数据稀疏性是个大问题。我曾经因为数据太稀疏,不得不把有向图改成无向图,效果反而更好。

4.3 资金流向图:捕捉市场情绪

资金流向图,说白了就是看钱在股票之间怎么流动的。这是动态的,每天都会变。

构建方法:

  • 用龙虎榜数据:机构席位买入A、卖出B,说明资金从B流向A
  • 用大单资金流:统计主力资金的净流入/流出
  • 用ETF申赎数据:资金通过ETF进出某个板块

嗯,这里要注意。资金流向图噪声很大。一天的资金流动可能只是随机波动。我个人的做法是:用5日滚动窗口,累计资金流向,再建图。这样能过滤掉一些短期噪音。

小技巧:资金流向图可以叠加行业信息。比如,如果资金从白酒板块流向新能源板块,那白酒股之间可能形成资金流出子图,新能源股之间形成资金流入子图。这种结构对模型预测很有帮助。

4.4 三种图的融合策略

单独用一种图,效果有限。真正的价值在于融合。我常用的融合方式有两种:

融合方式 做法 适用场景
拼接法 把三种图的邻接矩阵拼接成一个大矩阵 简单粗暴,适合快速实验
注意力加权 让GAT自己学习每种关系的重要性 效果更好,但训练更慢

我个人更推荐注意力加权。为什么?因为不同市场环境下,关系的重要性会变。牛市里资金流向更重要,熊市里行业关联更稳定。让模型自己学,比我们手动调权重靠谱多了。

4.5 代码示例:构建行业关联图

来,看一段实际代码。这是用Python构建行业关联图的核心逻辑:

import pandas as pd
import numpy as np

def build_industry_graph(stock_list, industry_map):
    """
    构建行业关联图
    :param stock_list: 股票代码列表
    :param industry_map: dict, {股票代码: 行业代码}
    :return: 邻接矩阵
    """
    n = len(stock_list)
    adj = np.zeros((n, n))
    
    for i in range(n):
        for j in range(i+1, n):
            if industry_map[stock_list[i]] == industry_map[stock_list[j]]:
                adj[i][j] = 1
                adj[j][i] = 1
    
    return adj

# 使用示例
stocks = ['000001', '000002', '600519']
industries = {'000001': '银行', '000002': '房地产', '600519': '食品饮料'}
graph = build_industry_graph(stocks, industries)
print(graph)

这段代码很简单,但实际项目中要处理的事情多得多。比如:股票退市、行业分类变更、同一公司多个股票代码...嗯,这些边界情况都得考虑。

4.6 本章知识体系总览

最后,我用一张SVG图把三种关系图的构建逻辑串起来。你看完应该能有个整体印象:

股票关系图构建体系 行业关联图 数据:申万/GICS分类 边:同行业两两连接 权重:1或相关系数 供应链关系图 数据:年报前五大客户 边:上下游有向连接 权重:交易金额占比 资金流向图 数据:龙虎榜/大单 边:资金流动方向 权重:累计净流入 融合策略 拼接法:简单快速,适合实验 注意力加权:自适应学习,效果更优 输出:融合邻接矩阵 → GAT模型

你看,从三种原始数据源出发,经过不同的构建逻辑,最终在融合层汇合。这就是图注意力网络选股模型的「数据底座」。底子打好了,后面模型训练才能事半功倍。

一句话总结:行业关联图管长期相似性,供应链关系图管上下游传导,资金流向图管短期情绪。三张图合在一起,才能全面刻画股票之间的复杂关系。

好,这一章就到这儿。图建好了,下一章咱们聊聊怎么把这些图喂给GAT模型。

专注资料整理