我决定尝试一下AI炒股,想着让科技的力量来帮我分析市场,省去自己每天看盘的麻烦,刚开始,我还以为这会是个轻松愉快的项目,结果发现这可比想象的难多了。
第一部分:数据,数据,数据!(数据收集篇)
一、数据收集的艰难旅程
我得收集各种数据,股票数据、新闻数据、社交媒体数据、公司财报,还有各种各样的财经指标,这些数据得从哪里来呢?我尝试用爬虫技术抓取网页上的数据,结果发现爬虫不仅要爬得快,还得爬得准,否则数据会有大量的噪音干扰。
我用Python的requests库爬取财经网站的数据,结果发现好多数据都是图片或者表格,根本无法直接使用,于是我决定自己用正则表达式来提取数据,结果正则表达式写错了,数据提取得一团糟。
二、清洗数据的艺术
清洗数据听起来简单,但其实是个技术活,我需要处理缺失值、异常值,还得对数据进行归一化处理,归一化处理我用的是Min-Max归一化,结果发现这种方法在数据分布不均匀的时候效果不好,于是我改用Robust归一化,结果效果反而更好了。
三、标注数据的 Fun 难
标注数据是机器学习中不可或缺的一步,但AI炒股的标注数据更加有趣,我需要给每条数据打上标签,上涨”、“下跌”或者“平盘”,开始时,我用Excel表格手动标注,结果发现标多了容易出错,标少了模型效果不好。
于是我决定用自然语言处理技术来自动标注数据,结果发现,这种技术在中文数据上表现一般,在英文数据上效果更好,于是我只能一半手动一半自动,结果准确率还是不高。
第二部分:模型训练篇
一、传统机器学习派的代表——随机森林
我首先尝试用传统机器学习模型,比如随机森林,随机森林的原理是用多个决策树来投票决定结果,我觉得这个方法不错,因为它能自动处理特征选择的问题。
不过,结果发现随机森林在数据特征不独立的时候表现不佳,于是我决定用特征工程来处理这个问题,结果特征工程做多了,模型反而容易过拟合。
二、深度学习派的代表——LSTM
为了突破随机森林的限制,我尝试用深度学习模型,比如LSTM,LSTM的原理是记忆长距离依赖关系,这对于股票时间序列数据来说是个好东西。
不过,LSTM的参数量太大,训练起来非常耗时,于是我决定用Dropout技术来防止过拟合,结果发现Dropout技术用得太多,模型又变得太简单了。
三、强化学习派的代表——DQN
为了进一步提升模型,我尝试用强化学习模型,比如DQN(深度Q网络),DQN的原理是通过试错来学习最优策略,我觉得这个方法很有潜力,因为它能自动调整策略。
不过,DQN在股票交易中表现不佳,因为它容易受到市场情绪的影响,于是我决定用多智能体强化学习,也就是让多个DQN模型协同工作,结果发现这个方法效果不错。
第三部分:算法优化篇
一、数据增强:让数据“活”起来
为了让模型更泛化,我尝试用数据增强技术,比如旋转、缩放、裁剪等,不过,股票数据不像图片数据那样容易进行数据增强,于是我决定用时间序列的数据增强,比如滑动窗口。
滑动窗口的数据增强效果不错,但模型的泛化能力还是有待提高。
二、超参数调优:调参的艺术
超参数调优是机器学习中非常重要的一步,我用了Grid搜索和随机搜索来调优参数,结果发现,Grid搜索虽然全面,但效率不高,于是我改用随机搜索,结果发现随机搜索效果更好,效率也更高。
三、模型融合:让模型“聪明”起来
为了让模型更智能,我尝试用模型融合技术,比如投票机制和加权投票机制,投票机制的结果是,模型表现不稳定,而加权投票机制表现更好。
第四部分:伦理与监管篇
一、公平性问题:AI会不会有偏见?
AI模型的公平性是一个大问题,我测试了一下我的模型,发现它对某些特定的股票有偏见,于是我决定用公平性评估技术来修正这个问题,结果发现这个技术在股票数据上效果不佳。
二、黑箱问题:AI是怎么做出决策的?
我的模型是一个黑箱,我试着用解释性技术来解释它的决策过程,结果发现这些技术在股票数据上效果不佳。
三、监管问题:AI会不会违法?
我的模型在股票交易中可能会导致市场操纵,于是我决定加入监管机制,比如限制交易量和禁止频繁买卖。
通过这次尝试,我学到了很多东西,也发现了许多问题,AI炒股虽然有趣,但也充满了挑战,我决定继续学习,深入研究这个领域,看看能不能让AI在股票交易中发挥更大的作用。
如果你也想尝试一下,不妨跟着我的脚步走,但记得理性对待,不要让科技变成贪婪的工具哦!