You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建预测Max Sharpe Ratio股票组合配置的Neural Network:训练数据难题

构建股票权重预测神经网络:训练数据创建指南

核心前提:明确权重的定义

首先得敲定你要输出的「单只股票weights」具体指什么——是组合中的持仓占比、对应未来收益的优先级系数,还是其他业务逻辑下的权重?这直接决定训练标签的生成规则。

训练数据构建具体步骤

1. 生成训练标签(Label)

  • 如果目标是未来最优持仓权重:可以用后续N天的累计收益率反向推导,比如把未来5天的收益率归一化后作为权重标签;或是通过组合优化(如夏普率最大化)计算出对应时间段的最优持仓权重,以此作为标签。
  • 如果是技术指标驱动的信号权重:可定义为未来涨跌的强弱程度,比如用未来3天涨跌幅与全市场平均涨跌幅的比值作为标签。

2. 输入特征与标签的时间对齐

  • 用滑动窗口法构建样本:取第t天及之前的所有特征(收盘价、MACD、RSI等)作为输入X,对应第t+1到t+N天的目标权重作为标签y。
  • 严格规避数据泄露:所有特征必须是t天及之前可获取的,不能用未来数据计算当前技术指标。

3. 数据预处理

  • 特征归一化:对价格、技术指标等输入特征用StandardScaler或MinMaxScaler做标准化处理,消除量纲差异对模型的影响。
  • 标签归一化:如果权重是百分比,可缩放到[0,1]区间;若是组合权重,需确保标签总和符合业务逻辑(比如单只股票权重无需总和为1,组合权重则需要)。

4. 数据集划分

  • 按时间顺序划分:不要随机打乱数据,用前80%作为训练集、中间10%作为验证集、最后10%作为测试集,模拟真实的时间序列预测场景。
  • 处理样本不平衡:若某类权重区间的样本过少,可采用过采样或加权损失函数调整模型训练的侧重。

代码示例(伪代码)

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 假设已生成包含特征的数据集,列包括'close', 'macd', 'rsi'等
df = pd.read_csv('stock_data_with_indicators.csv')

# 1. 生成标签:以未来5天累计收益率归一化作为权重标签
df['future_5d_return'] = df['close'].shift(-5) / df['close'] - 1
df['weight_label'] = df['future_5d_return'] / df['future_5d_return'].abs().max()

# 2. 滑动窗口构建样本(用过去20天特征预测当前权重标签)
window_size = 20
X, y = [], []
for i in range(window_size, len(df)-5):
    X.append(df.iloc[i-window_size:i][['close', 'macd', 'rsi']].values)
    y.append(df.iloc[i]['weight_label'])

# 3. 特征归一化
scaler = MinMaxScaler()
X = scaler.fit_transform(X.reshape(-1, window_size*3)).reshape(-1, window_size, 3)

# 4. 划分数据集
train_size = int(0.8 * len(X))
X_train, y_train = X[:train_size], y[:train_size]
X_val, y_val = X[train_size:int(0.9*len(X))], y[train_size:int(0.9*len(X))]
X_test, y_test = X[int(0.9*len(X)):], y[int(0.9*len(X)):]

后续迭代方向

  • 训练模型后,验证测试集上权重预测结果与实际收益的相关性,调整标签定义或滑动窗口大小。
  • 若为组合权重场景,可回测模型生成的权重组合,对比基准收益(如大盘指数)评估效果。

内容的提问来源于stack exchange,提问作者Evank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:32:45