分类
外匯保證金交易

股票价格真的能预测吗?

先看EOS的预测效果:

股票价格真的能预测吗?

作者:Iddo Drori等

机器之心编译

机器之心编辑部

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

方法

数据集

该研究首先从 MIT 的以下六门课程中,每门课程随机选取了 25 个问题:

对于 MATH 数据集,该研究从每个主题中随机抽取 5 个问题,并通过在应用线性代数新课程 COMS3251 上的实验验证了该方法的结果不仅仅是过拟合训练数据。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

方法流程

如下图 2 所示,该研究使用 Codex 将课程问题转换为编程任务并运行程序以解决数学问题。下图共包含 A-E 5 个面板,每个面板的左侧部分显示了原始问题和重新表述的提示,其中提示是通过添加上下文、交互、简化描述等形成的。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

该研究将从原始课程问题到 Codex 提示的转换分为以下三类:

  • 原生提示:Codex 提示和原始问题相同;
  • 自动提示转换:Codex 提示和原始问题不同,由 Codex 自动生成;
  • 手动提示转换:Codex 提示和原始问题不同,由人工生成。

问题与提示之间的差距

将问题转换为 Codex 提示的关键是:从语义上讲,原始问题与产生正确解决方案的提示之间的接近程度。为了度量原始问题和成功提示之间的差距,该研究使用 Sentence-BERT 嵌入之间的余弦相似度,如下图 3 所示。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

Sentence-BERT 使用 siamese 和 triplet 神经网络结构对预训练的 BERT 模型进行微调。其中至关重要的是,Sentence-BERT 能够在句子级别生成语义嵌入,从而可以在长文本之间进行语义相似性比较。

在该研究的实验中,原始问题和生成正确答案的提示之间的相似度如下图 4 所示。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

Codex 用于提示生成

在某些课程中,直接使用未转换的原始问题提示 Codex,无法产生正确的解决方案。因此,需要将原始问题转化为 Codex 可以处理的形式,主要分为以下三类:

  • 主题上下文形式:该形式为 Codex 提供了与一般课程和特定问题相关的主题和子主题,以帮助指导 Codex 生成相关正确的答案。例如,对于概率中的条件期望问题,提供有关贝叶斯定理、期望等的上下文信息会很有帮助。
  • 库上下文:该形式为 Codex 提供了解决给定问题所需的编程包 / 库。例如,指导 Codex 使用 Python 中的 numpy 包来解决线性代数问题。
  • 定义上下文:很多时候,Codex 对某些术语的定义缺乏现实背景。举例来说,Codex 不理解扑克牌中的 Full House 是什么意思。因此让 Codex 理解这些术语并明确定义,可以更好地指导其程序合成。

生成问题以及人类评估

该研究使用 Codex 为每门课程生成新的问题,通过数据集创建有编号的问题列表来完成,这个列表在生成随机数量的问题之后会被截断断,结果将用于提示 Codex 生成下一个问题。不断的重复这个过程,就可以为每门课程产生许多新的问题。

该研究对参加过这些课程或同等课程的、来自 MIT 和哥伦比亚大学的学生进行了一项长期调查。调查的目的是比较每门课程机器生成的问题与人工编写的问题的质量和难度。该研究为每门 MIT 的课程随机抽取五个原始问题和五个生成的问题。在调查中,学生被要求阅读每门课程的十个问题,这些问题是人工编写的问题和机器生成的问题的混合。

对于 60 个问题中的每一个,学生都被问到三个问题,如图 5 所示:他们是否认为给定的问题是 (i) 人工编写的或机器生成的,(ii) 适合或不适合特定课程,以及 (iii) ) 在 1(最简单)和 5(最难)之间的范围内,问题的难度级别是多少。要求学生提供他们对数学问题的评分,而不是解决这些问题。该调查以在线和匿名的形式提供。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

调研结果

问题求解

研究者共求解了补充资料中展示的 210 个问题,其中包括 6 门课程各自对应的 25 个随机问题以及 MATH 数据集中 6 个主题(初级代数、代数、数论、计数与概率、中极代数、微积分)各自对应的 10 个随机问题。

生成新问题

研究者生成了 120 个新问题,其中包括 6 门课程和 6 个 MATH 主题各自对应的 10 个新问题。下表 2 展示了每门课程和每个 MATH 股票价格真的能预测吗? 主题对应的一个生成问题。生成一个问题只需不到 1 秒的时间,研究者可以生成任意数量的问题。他们为 Codex 能够生成正确答案的 25 股票价格真的能预测吗? 个随机选择的问题创建了提示,切入随机问题,并让 Codex 完成下一个新问题。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

学生调研结果

研究者表示,共有 13 位参与者完成了全部 60 个问题的问答调研,平均耗时 40 分钟。下图 6 总结了学生调研中人工编写(human-written)和机器生成(machine-generated)问题的比较情况,并得出了以下几项结果:

  • 机器生成的问题要比人工编写的问题难度高,但在置信区间内;
  • 人工编写的问题要比机器生成的问题更适合课程;
  • 人工编写的问题更容易被认为人写的,并且将机器生成问题看作机器生成和人工编写的概率相同。

AI生成高数题,难出新高度:MIT提出可出题做题、评分的算法模型

答案定级

Codex 能够回答所有随机采样的大学水平和 MATH 数据集数学问题,无论它们是原始状态还是整理后状态。

挑战

1、输入图像。Codex 的一个基础限制是它只能接收基于文本的输入。因此,Codex 无法使用图形或图表等必要的视觉组件来回答问题。

2、高等数学证明。这项研究的另一个限制是缺乏对高等数学的证明。研究者强调称,这是由研究自身的广度而不是 Codex 的证明能力导致的。事实上,该研究中提交至 Codex 的大多数简单分析证明都已成功地被执行,这令人震惊,因为证明通常不是基于代码的。

3、程序评估。该研究的最后一步是执行程序,例如使用 Python 解释器。参加大学水平课程的学生也会编写代码来解决他们的部分问题。因此,该研究以与人类学生相同的方式测试神经网络解决问题的能力,让他们使用必要的工具。还有关于神经程序评估的工作,演示了使用机器学习来预测程序输出。LSTM 用于成功预测某些线性时间和恒定空间程序的输出 (18)。这些都增加了内存暂存器以允许更大的程序类别 (19)。最近的方法使用因果 GNN (20) 和 transformer (21)。尽管评估任意代码是不可判定的,但特殊情况,例如由另一个 transformer 生成的用于解决简单数学问题的程序,原则上应该是可学习的。

4、理论复杂性。计算复杂度的结果表明,该研究无法解决大学数学课程中一般问题的每一个具体实例。例如,以下问题具有难以处理的结果:向量 v 可以表示为来自集合 股票价格真的能预测吗? S 的向量之和吗?以下一阶微分方程的解是什么?但是,我们知道作业和考试给出的问题可以由人类解决,因此这些复杂性结果不适用于该研究的特定实例解决。

股票价格真的能预测吗?

看清楚了,在第二天fib 50%的确获得支撑,股价立刻就往回涨,在那时判断买入本来是没犯错误的。但是在那以后的几天里,市场的行为都不在我的掌握范围当中,当时我是慌了,也没仔细看清到底该在哪里退出还是只是错杀该继续拿着?这些字都是我后来总结写的,当时可没有如此清晰的思路,总是一厢情愿地觉得他会往回走,才会忽略如此多的警告信号继续持有,这就是犯了我讲的第一点:别人做空你做多, 逆势而为是没有好下场的 。

如何预测股票行情?有效买点是哪里?有效卖点是哪里

Notice: The content above (including the 股票价格真的能预测吗? pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

机器学习真的能预测股价吗?

Joe量化 于 2021-04-25 10:26:52 发布 982 收藏 9

图片

图片

图片

一、ARIMA(Autoregressive Integrated Moving Average Model)

ARIMA常用于时间序列分析,是AR、MA和差分的结合,本质就是线性回归模型。ARIMA有三个参数,表示为ARIMA(p, d, q):

  • p:自回归(AR)模型的阶数,即滞后项的数量,通过PACF图确定。
  • d:差分的阶数。经过d阶差分后,原时间序列数据应当平稳,d最好不要超过2。
  • 股票价格真的能预测吗?
  • q:移动平均(MA)模型的阶数,通过ACF图确定。
  • ARIMA(p, 0, 0)就是AR§ 或 ARMA(p, 0)
  • ARIMA(p, 0, 0)就是MA(q) 或 ARMA(0, q)
  • ARIMA(0, d, 0)就是I(d)
  • ARIMA(0, 1, 0)就是I(1),即随机游走(股票价格真的能预测吗? random walk)

关于ARIMA的更多内容可以参见之前的文章《时间序列分析基础(二)》。 股票价格真的能预测吗?
本期用 pmdarima 库自动化实现ARIMA的调参与建模,看一下ARIMA预测股价的效果如何。模型构建要素:

  • 数据:BTC 和 EOS 的1小时收盘价格
  • 回测区间:2019-01-01至2020-12-31
  • 模型:ARIMA
  • 训练集比例:80%

图片

先看EOS的预测效果:

图片

上图展现了在训练集和测试集整体效果,训练集几乎完美拟合了价格走势,但测试集的预测值几乎是一条直线。红色阴影部分代表预测的置信区间,也就是说模型认为价格走势有更高的概率在阴影范围内波动。就预测精确度上,模型没表现出什么预测能力,但EOS价格走势整体还是在置信区间中。 再来看看BTC的预测效果:

二、LSTM(Long 股票价格真的能预测吗? short-term memory)

图片

LSTM是特殊的循环神经网络(RNN),适合用在序列数据上,例如自然语言处理、股票数据等。RNN有短期记忆问题,无法处理很长的输入序列训练。因为随着长序列训练过程的推进,会出现梯度消失的问题。梯度是用来更新神经网络权重的。如果梯度过小,那么每次更新的权重对下一次训练的影响将非常的小,这时模型将停止学习或学习的十分缓慢。而LSTM 通过巧妙的设计可以记住长期的信息且无需付出很大代价。

图片

上面看不懂没关系,这不是本期的重点,只要记住LSTM很牛逼,能够用来对时间序列数据建模就够了。 接下来,我们来复刻youtube上的代码,用LSTM预测BTC的价格。与之前一样,我们用2019-01-01至2020-12-31BTC 1小时收盘价格数据,将数据按照8:2 拆分成训练集和测试集。另外,取2021-01-01至2021-03-12之间的数据作为样本外验证(该部分数据在模型训练过程中是看不到的,用来检验模型的效果)。在正式训练模型之前,还要说明一下特征与标签如何分配。假设用过去4小时的收盘价预测下一个小时的收盘价。我们用滚动的方式训练,第一行相当于第一个样本,取过去4小时的收盘价数据作为特征(y1到y4),y5作为标签。第二行作为第二个样本,取y2到y5作为特征,y6作为标签,以此类推。

下面上代码。

图片

经过以上过程,我们就得到了类似文章开头的美如画的预测。无论是验证集还是测试集(样本外),LSTM几乎都实现了完美的预测。事实真的是这样吗?

图片

由于数据比较密集,肉眼不容易辨别,我们来看下不同数据集的均方误差表现。除了对比测试集与样本外数据以外,还加入了naive forecast预测结果的对比。在预测价格的背景下,naive forecast就是指价格符合随机游走,最好的预测就是本期价格就是下一周期的价格。(股票价格真的能预测吗? 如果预测上涨还是下跌,naive forecast就是指50%的概率上涨,50%的概率下跌)

图片

由上图结果看出,**样本外数据的均方误差相比测试集翻了一倍,而且接近naive forecast。说明样本外预测的效果没比瞎猜好多少。**接下来,我们再截取一小段时间,看看模型的预测效果。下图能够看出,虽然预测值与真实值非常相似,但是预测值滞后了1个周期,也就是说该模型只不过是单纯的用当期收盘价作为下一期的收盘价,跟naive forecast没什么区别。