⚡ 分类标签 (涨/跌/平) & 回归标签 (收益率) —— 从原始K线到监督学习目标
📐 未来N日收益率计算 核心公式
| 方法 | 公式 / 说明 | 适用场景 |
| 简单收益率 | \( R_{t+N} = \frac{P_{t+N} - P_t}{P_t} \) | 短期预测,分类阈值 |
| 对数收益率 | \( r_{t+N} = \ln(P_{t+N}) - \ln(P_t) \) | 回归任务,正态性更好 |
| 年化收益率 | \( (1+R_{t+N})^{252/N} - 1 \) | 跨周期比较 |
🏷️ 分类标签:涨 / 跌 / 平
- 阈值法:未来N日收益率 > +0.5% → 涨; < -0.5% → 跌;其余 → 平
- 分位数法:按收益率排序,前30%为涨,后30%为跌,中间为平 (适应市场波动)
- 动态阈值:基于滚动波动率设定阈值 (如 0.5σ)
- 多分类扩展:强涨/涨/平/跌/强跌 (5分类)
📉 回归标签:连续收益率
- 原始收益率:直接使用未来N日简单/对数收益率作为回归目标
- 标准化收益率:\( \frac{R_{t+N} - \mu}{\sigma} \) (截面或时序标准化)
- 排名标签:将收益率转换为排名 (0~1) 用于排序学习
- 风险调整收益:收益率 / 波动率 (夏普比率风格)
🧩 标签构建流程 SVG 示意图
📆 收益率 → 标签
🔖 三分类示例
📊 回归目标
🧬 标签构建模块架构
💻 代码实现 Python 示例
import pandas as pd
import numpy as np
def compute_future_return(close, n=5):
future_ret = close.shift(-n) / close - 1
return future_ret
def classify_label(ret, threshold=0.005):
label = np.zeros(len(ret))
label[ret > threshold] = 1
label[ret < -threshold] = -1
return label
def regression_label(ret):
return ret
df = pd.DataFrame({'close': [100,102,101,105,107,110,108]})
df['ret_5'] = compute_future_return(df['close'], n=2)
df['cls'] = classify_label(df['ret_5'], 0.02)
print(df[['close','ret_5','cls']])
📅 不同持有期 N 的标签分布
| 持有期 N | 涨比例 | 跌比例 | 平比例 | 回归均值 | 标准差 |
| 5日 | 34% | 31% | 35% | 0.12% | 2.3% |
| 20日 | 38% | 29% | 33% | 0.45% | 5.1% |
| 60日 | 42% | 26% | 32% | 1.20% | 9.8% |