背景
人工智能很火,各种秀。股票让人欢喜让人忧。它们结合能擦出什么样的火花?
我从去年5月学编程,树立目标:数据分析股市,做快乐盈利股民。达成阶段目标:预测股票涨停。特写文章记录和分享,也看能不能“卖铲子”。
前提假设和资源
做事需要一些前提或假设。用人工智能预测涨停,我认为基于以下假设:
股市随机但有规律,是一种混沌状态。
股票当日涨停表现,影响隔日走势。
人能学习,能通过复盘提升交易水平。同样,用正确的方法也能让电脑学习和发现规律。
做事也要有资源。使用人工智能(机器学习)要有数据、算法和软硬件。大数据时代,数据已不是问题。科学家们研究出很多算法。技术大牛开发很多神奇软件。计算机硬件也突飞猛进。总之,技术进步让人工智能得以实现。
概念解释
人工智能是宽泛的概念,泛指一切机器智能。而机器学习和深度学习是实现技术。核心是软件、算法和数据,算法简单说就是数学公式。
举个深度学习的简单例子:用一个软件,输入大量有标记的猫狗图片,训练出模型后,输入另一张图片,模型能判别出是猫还是狗。
目标
利用人工智能(机器学习),分析当日涨停数据,预测第二天能否涨停(连板)。
数据准备
我收集了2017年至今涨停股数据。
剔除一字板,因为一字板最容易涨停,但没交易机会。剔除新股,st股,科创板股。计算出其他衍生指标。特性(特征)有41个,比如:开板次数,封板时间,涨停类型,当日平均封板成功率等。用2020年之前的26774条数据训练模型,今年的数据验证模型。
方法筛选
因数据太少,不能用深度学习,我也不会相关软件框架,所以用机器学习。
最初手工比较算法好坏,效率低。碰巧大牛发布神器pycaret,可自动比较算法、调整参数,节省了大量时间和精力。比较了十几种算法后,梯度提升树胜出,而catboost最佳。
结果让人失望
我采用分类算法,标签是第二天涨停与否,效果不佳。精准率0.46,召回率0.26,下面是ROC曲线图。因为树模型天生过拟合,在今年的数据上表现更差。
总之就是,只比瞎猜好一点。很多朋友可能不懂这些指标。我也是一知半解,只知道怎么用。简单说:预测10个涨停,对错各半,5成胜率,另外漏掉40个。
看到这结果我很沮丧,辛辛苦苦学知识,拼命捣鼓。结果证明没有用瞎忙活,竹篮打水一场空。
不死心,开始对比算法,疯狂调参,还是没什么用。都要放弃时,有了转机。
峰回路转,还有希望
在人工智能界有句话,进去的是垃圾,出来的也是垃圾。还有一句话,决定模型上限的是数据,而算法只是无限逼近这个上限。它们都强调数据比算法重要。据此断定,预测效果差,不是因为算法和参数。
难道假设有错,股票能否连板和昨天没关系?这不合常理,另外预测结果虽然差,但也有学习到规律。
问题应该是数据不足。我尝试通过现有数据计算出几个新特征,效果只提升了一点点。
我就想今天的数据不足,那能用第二天的数据吗?诶,开盘涨幅是重要指标,不仅有5分钟空档时间,另外不是立马涨停,用开盘价不耽误做交易。于是就在模型里添加了开盘涨幅,结果不错哦。精准率0.58,召回率0.56,下面是ROC曲线图。AUC面积提升了10个点,而且过拟合减小了。
再简单说就是,预测10个涨停,6个对4个错,6成胜率,但只漏掉10个。
而且预测出的是涨停概率,默认高于50%判定涨停。可以提高这个标准,比如高于70%。于是我尝试调整。结果是预测10个涨停,7个对3个错,漏掉20个,即7成的胜率。
这个结果就有意义咯。
结论
使用人工智能可以有限预测涨停(连板)。
但只靠当天数据,胜率低,错误率高,漏掉很多。所以风险大,参考价值小。
如果添加第二天开盘涨幅,再提高判定标准后,就能有7成的胜率,漏掉也少。所以风险减小,赢面变大,有参考价值。
需要说明的是,这只是平均水平,不代表每次预测结果都让人满意,会有波动。另外预测是以分析历史数据为基础,未来是否重演,会不会发生变化,不确定!
所以,没有免费的午餐,挣钱需担风险。但有人工智能协助,加上正确的交易系统,严格执行交易纪律。期望收益可保证为正,长期坚持肯定盈利,能发财!