1. 项目背景与核心思路
去年第三季度开始,我尝试将A股市场近5年的日K线数据(包括开盘价、收盘价、最高价、最低价、成交量等关键指标)输入到经过微调的LLaMA-2 13B大模型中,让AI学习识别技术形态与市场情绪的关联规律。这个想法的诞生源于两个观察:一是传统技术分析存在主观性强、维度单一的问题;二是现代大模型在时序数据处理方面展现出惊人的模式识别能力。
具体操作时,我采用了"分阶段渐进式训练"策略:
- 基础数据清洗阶段:使用Python的pandas库处理了2018-2023年间沪深300成分股的日线数据,剔除停牌日、异常波动日(如涨跌幅超过10%的极端情况)
- 特征工程阶段:除了原始价格数据,还计算了20日均线、MACD、RSI等14个技术指标作为附加特征
- 模型微调阶段:在AWS p4d.24xlarge实例上,使用PyTorch框架对模型进行了6000步的监督微调
关键发现:当输入数据包含连续30个交易日的完整K线组合时,模型对后续5日走势预测的准确率达到68.3%,显著高于传统技术分析55%左右的平均水准
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与特征工程详解
2.1 数据源选择与清洗
我从Tushare Pro API获取了2018年1月至2023年12月的完整日K数据,包含以下字段:
- 股票代码(如600519.SH)
- 交易日期(YYYY-MM-DD格式)
- 开盘价/收盘价/最高价/最低价(精确到小数点后2位)
- 成交量(股数)
- 成交金额(万元)
清洗流程特别注意:
python复制# 异常值处理示例代码
def clean_data(df):
# 剔除涨跌幅超过11%的异常记录
df['pct_chg'] = df['close'].pct_change() * 100
df = df[(df['pct_chg'] >= -11) & (df['pct_chg'] <= 11)]
# 处理停牌日(成交量为0)
df = df[df['volume'] > 0]
# 前复权处理
df['adj_factor'] = (df['close'] / df['pre_close']).cumprod()
for col in ['open', 'high', 'low', 'close']:
df[col] = df[col] / df['adj_factor']
return df
2.2 技术指标计算
除了原始价格数据,我构建了三个维度的衍生特征:
-
趋势类指标:
- MA5/MA10/MA20均线系统
- MACD(参数12/26/9)
- 布林带(20日,2倍标准差)
-
动量类指标:
- RSI(14日)
- KD指标(9日)
- CCI(20日)
-
量价关系指标:
- OBV能量潮
- 量比(当日成交量/5日均量)
- 资金流向指标(MFI)
这些指标通过TA-Lib库批量计算,最终形成84维的特征向量输入模型。
3. 模型架构与训练方案
3.1 模型选型对比
测试了三种主流架构的表现:
| 模型类型 | 参数量 | 预测准确率 | 训练成本 | 推理速度 |
|---|---|---|---|---|
| LLaMA-2 13B | 130亿 | 68.3% | 高 | 中等 |
| GPT-3.5 Turbo | 1750亿 | 65.1% | 极高 | 慢 |
| 自定义LSTM | 800万 | 58.7% | 低 | 快 |
最终选择LLaMA-2的原因在于:
- 在7B-13B参数区间具有最佳性价比
- 原生支持长序列处理(最大4096 tokens)
- 可通过LoRA进行高效微调
3.2 关键训练参数
yaml复制training_config:
base_model: "Llama-2-13b-hf"
batch_size: 32
seq_length: 512
learning_rate: 3e-5
lora_rank: 64
train_steps: 6000
warmup_steps: 300
optimizer: "adamw"
实际训练时发现两个重要现象:
- 当学习率超过5e-5时,模型会快速过拟合
- 在4000步左右会出现明显的性能平台期,此时需要调整学习率
4. 报告生成与结果分析
4.1 多模态输出架构
模型最终输出包含三个模块:
-
技术面评分(0-100分)
- 趋势强度(30%权重)
- 动量指标(25%权重)
- 量价配合(25%权重)
- 波动风险(20%权重)
-
可视化图表
- 自动生成的K线+指标组合图
- 关键支撑/压力位标注
- 历史相似形态匹配度
-
文字分析报告
- 当前形态识别(如"上升三法"、"黄昏之星")
- 历史回测胜率(如"过去5年出现该形态后5日上涨概率72%")
- 操作建议(如"短线支撑位32.5元,压力位36.8元")
4.2 典型分析案例
以贵州茅台2023年Q3走势为例:
code复制[技术评分] 82分(趋势强劲)
[形态识别] 杯柄形态突破(置信度87%)
[关键位] 支撑1785元/压力1899元
[量能] 突破日成交量较20日均量放大142%
[建议] 突破后回踩不破1800元可考虑介入
实际该股后续5个交易日涨幅达6.3%,验证了模型判断。
5. 实战注意事项
5.1 数据时效性处理
发现三个关键时间节点需要特别处理:
- 除权除息日:必须做复权处理
- 财报披露日:需额外注入基本面数据
- 政策公告日:要结合NLP事件分析
5.2 模型局限性
经过半年实盘验证,发现以下场景准确率下降:
- 突发黑天鹅事件(如2020年疫情冲击)
- 流动性极端枯竭时期(如2018年底)
- 机构抱团股异动阶段
此时需要人工介入调整参数。
5.3 部署优化技巧
在AWS Inferentia2实例上部署时,通过以下手段将推理延迟从1200ms降至380ms:
- 使用TensorRT-LLM优化推理引擎
- 对K线数据做8:1有损压缩
- 实现请求批处理(batch_size=8)
重要教训:不要直接使用原始收盘价序列,经过标准化(z-score)处理后的数据能使模型收敛速度提升40%
