system: [SYSTEM]

user: 2. 数据来源及模型介绍 2.1. 数据来源 为了通过人工神经网络对股指进行预测，需要使用股指历史真实数据，本文通过Pyhthon财经数据库接口包Tushare，获取沪深300指数数据。不同于最高价是大多数人认为的好的卖出价格，也不同于最低价是大多数人认为适合买进的价格，收盘价是不再进行交易的价格。因此研判收盘价有着重要意义，无论当天股价如何振荡，最终将定格在收盘价上。收盘价是市场参与者们所共同认可的价格，因此本文选择收盘价作为样本数据，作为对沪深300指数进行后续拟合预测的基础。为保证本文的预测及分析能够基于充足的样本量进行，本文选择2017.07.06~2020.04.24期间所有交易日的沪深300指数收盘价，共1021个数据来进行后续的预测分析 [ 4 ]。 2.2. 模型原理及步骤 2.2.1. 二层神经网络算法原理 二层神经网络算法实际上是将样本数据代入时间序列的向量自回归(Vector AutoRegression， VAR)模型进行拟合，构成一个自循环矩阵方程，使得输入值和输出值来源于同一个样本数据序列。将矩阵代入激活函数，同时样本数据在循环过程中实现自学习，然后求解矩阵方程。最后，通过反向传播机制调整矩阵方程的解，使得样本值与预测值的误差达到最小 [ 5 ]。 2.2.2. 二层神经网络算法步骤 ① 分割样本数据 假设样本总数为 N 1 ，被区分为模拟窗口 NN − N 1 = n 0 和预测窗口 NN = N 1 − n 0 (如图1)。对于模拟窗口 n 0 ，如果输入矩阵列数为 n − 1 ，则行数为 m = n 0 − n + 1 ；对于全样本窗口 N 1 ，如果输入矩阵列数为 n − 1 ，则行数为 M = N 1 − n + 1 [ 6 ]。样本窗口分割如图1： 图1. 样本窗口分割示意图 ② 正向求解逻辑 假设股票指数样本序列为： S = { y 1 ， y 2 ， ⋯ ， y n − 1 ， y n ， y n + 1 ， ⋯ ， y n 0 ， y n 0 + 1 ， ⋯ ， y N 1 } (1) 代入向量自回归模型构造矩阵，所在行数 i = 0 ， 1 ， ⋯ ， m − 1 ，则通项公式为： y 1 + i x 1 + y 2 + i x 2 + ⋯ + y n − 1 + i x n − 1 + h = y n + i (2) 该公式共m个，将输入值中的y用A表示，则构成的矩阵表示为： A m n X n 1 + I m 1 h = Y m 1 (3) 其中 X n 1 是方程的解，h为常数项。采用激活函数 f ( x ) 作用于矩阵方程，激活函数通过变换，把方程组转换成了一个新的线性方程组： f ( A m n X n 1 + I m 1 h ) = Y m 1 (4) 其中激活函数： f ( x ) = 1 1 + e − x = { 0 ，         x → − ∞ 1 2 ，           x → 0 1 ，             x → + ∞ (5) 该函数的定义域为 x ∈ ( − ∞ ， ∞ ) ，而值域为 y ∈ ( 0 ， 1 ) 。所以，当作为因变量的样本值超过1时，就不能直接使用该函数作为激活函数。因此非负序列 { y 1 ， y 2 ， ⋯ ， y i ， ⋯ ， y n } ，设定一个上限值 K > 0 ，使得： M = max i = 1 ， 2 ， ⋯ ， n { y 1 ， y 2 ， ⋯ ， y i ， ⋯ ， y n ， K } (6) 对原样本值 y i 重新进行处理，使得新序列 Y i 符合激活函数值域要求： Y i = y i M ，     ( i = 1 ， 2 ， ⋯ ， n ) (7) 但是在取得最优解之后，必须还原预测值： y i = M Y i ，     ( i = 1 ， 2 ， ⋯ ， n ) (8) 最后进行正向求解，正向求解即为直接求得使得方程(8)成立的解 X n 1 及常数项h。 ③ 反向传播调解 假设矩阵 U m 1 定义如下： U m 1 = A m n X n 1 + I m 1 h (9) 那么，经过激活函数f作用之后，方程式可以表示为： f ( U m 1 ) = Y m 1 (10) 假设 E m 1 为误差项，满足关系式： E m 1 = Y m 1 − f ( U m 1 ) (11) 当 E m 1 ≠ 0 时进行反向传播调解，那么通过对方程解 X n 1 和h增加调节量： X n 1 = X n 1 + δ n 1 (12) h = h + τ (13) 那么，经过激活函数调解之后能够使 E m 1 = 0 ，则满足条件： f ( A m n ( X n 1 + δ n 1 ) + I m 1 ( h + τ ) ) = f ( U m 1 + A m n δ n 1 + I m 1 τ ) = Y m 1 (14) 对激活函数按照一阶Taylor展式展开，则有： f ( U m 1 + A m n δ n 1 + I m 1 τ ) = f ( U m 1 ) + f ′ ( U m 1 ) [ A m n δ n 1 + I m 1 τ ] = Y m 1 (15) 那么就有： f ′ ( U m 1 ) [ A m n δ n 1 + I m 1 τ ] = Y m 1 − f ( U m 1 ) = E m 1 (16) 由于有关系式： A m n δ n 1 + I m 1 τ = E m 1 f ′ ( U m 1 ) (17) 假如 τ = 0 ，则有： A m n δ n 1 = E m 1 f ′ ( U m 1 ) (18) A m n T A m n δ n 1 = A m n T [ E m 1 f ′ ( U m 1 ) ] (19) ( A m n T A m n ) − 1 A m n T A m n δ n 1 = ( A m n T A m n ) − 1 A m n T [ E m 1 f ′ ( U m 1 ) ] (20) δ n 1 = ( A m n T A m n ) − 1 A m n T [ E m 1 f ′ ( U m 1 ) ] (21) 假如 τ ≠ 0 ，从而，常数项的调解量就可以是： I m 1 τ = E m 1 f ′ ( U m 1 ) − A m n δ n 1 (22) I m 1 T I m 1 τ = I m 1 T { E m 1 f ′ ( U m 1 ) − A m n δ n 1 } (23) ( I m 1 T I m 1 ) − 1 I m 1 T I m 1 τ = ( I m 1 T I m 1 ) − 1 I m 1 T { E m 1 f ′ ( U m 1 ) − A m n δ n 1 } (24) 整理后得到： τ = ( I m 1 T I m 1 ) − 1 I m 1 T { E m 1 f ′ ( U m 1 ) − A m n δ n 1 } (25) 只要重复上述过程，则可以逐步迭代，直到取得增加了调节量的 X n 1 和h的值，也就是具有扰动项的方程组的最优解。 2.2.3. 预测结果检验 如果在模拟窗口 n 0 下，我们可以得到最优解 x 1 ， x 2 ， ⋯ ， x n − 1 ， h ，那么，只要将其代入对于全样本窗口 N 1 下，自然就可以计算出区间 ( n ， N 1 ) 下的预测值，而预测区间 ( n 0 ， N 1 ) 下的预测值，自然也就会得到了。 因为对于股票指数预测来说，对于上涨或者下跌趋势的预测往往比股票指数值接近更有意义 [ 7 ]，所以，我们需要对于预测效果进行分析。当原值与预测值变化趋势一致时，我们称为Same Trend；当趋势不同时，我们称为Diff Trend，二者之和等于1，Same Trend值越大，则预测效果越好。