第68章 第一个策略(第1页)

书房的空调嗡嗡作响,努力对抗着鹏城3月的闷热。

林晨盯着屏幕上密密麻麻的代码,眼神专注。过去一周,他像蚂蚁搬家一样,从 tushare 和 akshare 上抓取了沪深 300 成分股过去五年的日线数据——开盘价、收盘价、最高价、最低价、成交量。然后用 pandas 清洗、处理,计算出一系列技术指标:移动平均线(MA)、相对强弱指数(RSI)、布林带(Bollinger Bands)、MACD……这些指标被拼接成一个个“特征向量”,按时间顺序排列,形成了他模型的“饲料”。

数据准备好了。接下来,是给这些数据找一个能消化它们、并预测未来的“大脑”。

他选择了 LSTM(长短期记忆网络)。这是一种特殊的循环神经网络(RNN),擅长处理像股价序列这样具有时间依赖性的数据。普通的 RNN 在传递长期信息时容易“遗忘”,而 LSTM 通过精巧的“门”结构(输入门、遗忘门、输出门)控制信息流,能更好地记住序列中的长期模式。这听起来很像是为捕捉股市那些若隐若现的“趋势”和“周期”量身定做的。

“理论上是这样”,林晨揉了揉发酸的眼睛,自言自语。实践是另一回事。

他打开 PyTorch,开始搭建模型结构。输入层对应特征维度,接着是两层 LSTM 层,用于捕捉不同时间尺度的依赖关系,然后是 Dropout 层——随机“丢弃”一部分神经元连接,防止过拟合的常用手段,最后是全连接层输出预测值:下一个交易日的收盘价。

定义损失函数(Mean Squared Error,均方误差),选择优化器(Adam),设置学习率、训练轮数(epoch)……

敲下最后一行代码,林晨深吸一口气,点击运行。

风扇的转速明显加快,笔记本电脑的散热口发出轻微的嘶鸣。屏幕上,代表损失值的曲线开始跳动,随着迭代轮数的增加,那条曲线缓缓向下探去。训练集上的损失在下降,这意味着模型正在从历史数据中学习规律。

同时,他也预留了一部分从未见过的数据作为验证集,用来监控模型在“新数据”上的表现,防止它只死记硬背训练数据。

训练持续了将近四十分钟。当进度条走到终点,林晨立刻启动了回测程序。

回测,就是用训练好的模型,在另一段历史数据(测试集)上模拟交易,检验策略盈利能力。
(本章节未完结,点击下一页翻页继续阅读)