- 金币:
-
- 奖励:
-
- 热心:
-
- 注册时间:
- 2006-7-3
|
|

楼主 |
发表于 2008-2-14 21:30
|
显示全部楼层
基于BP 神经网络智能交易系统的设计
基于BP 神经网络智能交易系统的设计贾国芳
1 引言
神经网络模型对证券指数或股票价格的预测已有广泛的应用[1,2] ,国内外学者关于这方面的研究方向
总体来看有五类方向: ①叶中行、顾立庭[3] 选择上证指数和上海二纺机股票的数据作为模拟对象,研究股
价变化的模式分类; ②陈可等人[4] 基于BP 神经网络并选择“新疆众合”为研究对象,研究其股价运动曲线
拟合问题; ③林杰等人[5] 给出基于BP 神经网络的时间序列预测模型,结合定性与定量分析预测股价涨跌
趋势; ④张金良等人[6] 以沪、深股市实时分时数据为基础,用神经网络对证券市场的8种经典分时形态进
行动态分割处理和模式识别; ⑤黄小原等人[7] 提出证券组合投资的神经网络专家系统构想。
然而,大量的研究文献只给出了实验的模拟结果,极少对建模过程进行详细的叙述,且对评价技术也较
少论及。若基于设计恰当的神经网络所构建的交易系统去指导交易,则比完全市场化的方法去进行交易要
好得多[8] 。本文主要工作是构建上证综指时间序列预测模型,并设计一个买卖证券指数的智能交易系统。
模拟上证综指表明智能化神经网络交易系统可为投资者带来更多的利益。
2 证券指数的时间序列建模设计
时间序列是一序列变量Xt = (xt-n, ., xt-i, ., xt-2 , xt-1 ) , xt-i 表示在时刻t各变量的过去值,如股票指
数或价格。本文目的之一是基于过去的股票价格集Xt 预测未来的价格趋势。模型表示为,找一函数F: Rn
→ R ,得: x.
t = F(xt-n, ., xt-i, .xt-2 , xt-1 ) ,这里x.
t 表示预测值。基于下述函数,通过x.
t 预测x.t+1 。
.xt+1 = F ( xt - ( n - 1) , ., xt - i , .xt - 2 , xt - 1 , .xt ) (1)
类似地, .xt+2 , .xt+3 , ., .xt+d - 1 也能被预测,预测的神经网络近似为F 。训练好的网络可用于预测未来d天
的证券指数或股票价格。
众所周知证券市场是非线性的动量市场,主要受利率、通货膨胀率、经济增长率、政策形式等多种因素
的影响。显然这些因素之间存在相互关联、相互依赖和相互作用的关系,但他们之间的关系难以用数学解
析函数表示。股市的收盘指数或股价是包含有用信息最为重要的因素之一,因而本文选择上证综指收盘价
时间序列来预测其未来的变化趋势。
3 上证综指智能交易系统设计
构建一个智能交易系统常常关系到预测模型的选择和交易策略,BP神经网络的应用最为普遍,因其提
供了较好的泛化能力且易于实现。虽然确定一个优化的网络体系结构和网络参数是困难的,只要采取合适
地训练,这些网络还是能表现出较好的性能。本文选择三层BP网络,取典型的单极性函数f ( x) =
1
1 + e- x 。
此网络的输入为上证综指的收盘价,输出只有一个值.xt ,它表示未来第t天上证综指的收盘价。经反复试
验,得出输入层有20个神经元,输出层有5个神经元。
3. 1 改进的误差函数设计
本文考虑到股票市场固有的非线性,且证券市场股票指数的涨跌大势对于股票的交易具有举足轻重的
指导意义,改进措施是在误差函数中引入惩罚系数α ,目的是为了使模型对指数的涨跌趋势做出更有效的
预测,改进后的误差函数为:
MSE =
1
2 Σ
N
t =1
α( .xt - xt ) 2 (2)
这里
α =
β 若( .xt - xt - 1 ) ( xt - xt - 1 ) > 0
2 - β 否则
β∈ (0, 1)
它表示如果预测的方向与实际方向一致α则为一很小的常数,否则为一较大的常数,即错误的预测方向
比正确的预测方向处罚得重。换句话说,如果预测的趋势正确,则将误差缩小,否则放大误差,从而继续训
练样本得出合适的各层权重。
3. 2 学习过程设计
给出一定数量由输入样本集和一个目标输出组成的集对,在有导师指导下进行训练学习。一般来讲,
反馈感知器结构是最为常用的学习规则,通过最陡下降的方法,使式(2)总均方差MSE尽可能小。
N 代表训练样本的总数,本文N = 300,即取上证综指1994年10月20日至1995年8月4日,共300天
的收盘指数。对于输出层,给出其权重和阈值的更新规则:
wj ( k + 1) = wj ( k) +η( xt - .xt ) .xt (1 - .xt ) yj ( k) +λ(wj ( k) - wj ( k - 1) )
c ( k + 1) = c ( k) +η( xt - .xt ) .xt (1 - .xt ) +λ( c ( k) - c ( k - 1) )
(3)
其中连接隐层神经元j到输出层的权重表示为wj , c为输出节点的阈值,再给出隐层的权重和阈值更新
规则:
vji ( k + 1) = vji ( k) +ηyj (1 - yj ) xi ( k) ( xt - .xt ) .xt (1 - .xt ) wj +λ( vji ( k) - vji ( k - 1) )
bj ( k + 1) = bj ( k) +ηyj (1 - yj ) ( xt - .xt ) .xt (1 - .xt ) vj +λ( bj ( k) - bj ( k - 1) )
(4)
其中, vji 表示连接输入层i和隐层j神经元的权重, η为学习率, λ为动量因子, bj 表示第j个隐层节点
的阈值。随机给定初始权重和阈值(取值区间为[ - 0. 5, 0. 5 ] ) ,每一个输入集经此网络得到一个输出集。
此输出集和目标输出集之间的误差由式(2)决定,并由式(3) 、式(4)计算调整后的权重和阈值。用每个数
据集对网络进行反重训练,直到训练误差在一定的容忍度内。
3. 3 改进的数据预处理设计
数据预处理方法基本可分为两类:平滑法、变换法。本文根据指数时间序列数据的特点,首先对样本数
据进行核平滑(Kernel Smoothing) [ 9 ] 处理,接着再对平滑后的训练样本进行变换处理。
设当前时间为t ,已知时间变量X在前n个时刻各个观测值分别为xt n, ., xti, ., xt2 , xt ,其中xt 表
----1 -i
示变量X 在过去t-i时刻的观测值,则
n
ΣKh (τ -(t-i)) xt
-i
m(τ)= i= 1
n (5)
ΣKh (τ -(t-i))
i=1
其中m(τ) 表示在时刻τ的平滑值, τ =t-n,t -n+ 1, .,t -1,t ; Kh
1 -
x2
为高斯核函数:
(6)
Kh(x) = e 2h2
h 2π
已知t时刻以前n个历史数据,令τ =
t时间的平滑预测
值: n,t -n+ 1, .,t
现令,选1994 年1月3日至1994 年5月30 日,共100 天上证综指数据。从第21 天起,滚动向前平滑预
x.
t =m (t) 。如果令τ =t-
t ,经式(5) 、式(6)计算得到时间序列变量X在
-1, 则得到时间序列变量在前,共天的平滑值。
测到第100 天,从而得到80 个预测值,经与实际值对比,当平滑参数取值1. 8时,平均误差较小。如果我们
根据式(6) 、式(7)对整个时间序列数据集进行逐天滚动向前平滑,从而可实现对训练集和测试集的数据平
滑处理。
314 提高网络泛化能力设计
虽然很多方法试图提高网络泛化能力,但迄今为止理论上仍无有效的解决方法。从实践上看,提高网
络的泛化能力的有效方法是保留一些训练集作为测试集。本文与其他研究者有所不同,提出两个步骤以提
高网络的泛化能力。首先,通过给定的大次数来随机训练样本集,直到满足停止判定条件(网络训练的结束
条件为测试集总均方差小于所要求精度的113倍);其次,当生成了神经网络模型后,维持各层权重和阈值
不变,一旦经过某段交易期后,再用最新的上证综指收盘指数时间序列数据重新训练网络,从而得到新的各
层权重和阈值。本文每隔150 天对网络进行再训练,可较好地提高网络的泛化能力。
315 智能指数交易策略设计
31511 买入和持有策略设计
买入和持有策略是一基准策略,这一策略可以测试当前的交易能否获利。设某投资者从时刻t买入指
数并一直持有到时刻t +M 卖出,买入并持有该指数的回报Rbh 定义如下:
Rbh =
xt+M -xt (7)
xt
即开始时刻t买入,并在t +M 时刻卖出, xt+M 表示在时刻t +M 时证券市场指数(也可为某股的卖出价
格), xt 表示在时刻t买入的证券市场指数(也可为某股的买入价格) 。进而用这一基准策略,与下文设计的
智能交易策略进行对比,以判断其优劣。
3. 5. 2 当前的交易策略设计
在研制了神经网络的预测模型后,网络被训练以预测未来趋势。然而,本文的重点为了指导投资者从
买卖指数中赚钱获利。实践中判断预测模型是否有效,必须按实际的交易策略进行检验。本文设计的智能
交易买卖策略,如下:
买卖信号=
买入若RBP > RBT
(8)
卖出若RSP < RST 且为下降趋势
0≤i <d
RB P 表示预测买入的回报,按式RBP =
max (x.t+i ) -xt-1
计算得出,其中m ax (x.t+i ) 表示预测未来d天内
xt-10≤i <d
最高指数价格, RB T 为投资者预先设定好的要求实现的预期投资收益率(本文设定为正常数5% ) ,如果RB P
> RBT 意味着投资者可从t时刻买入该指数或某股票,能在未来d天内的某天达到最高点卖出股票,就可以
超过预期的投资收益率5% , 因而应在t 时刻当机立断买入。RS P 表示预测卖出的回报, 按式RSP =
0≤i <d
m in (x.t+i ) -xt-1
计算得出,其中m in (x.t+i ) 表示预测的d未来天内最低指数或某股票价格, RST 为投资者预
xt-10≤i <d
先设定好的预期止损率(即一旦手中股票亏损达到此比率,应立即斩仓卖出手中持有的指数或某股票(本文
设为负常数6. 9% ),如果RSP < RST 意味着投资者必须在时刻卖出手中持有的指数或某股票。“下降趋势”
表示在过去两天的下跌,由平滑方法计算得出。另外,为减少交易策略设计的复杂性,假设投资者的持有现
金要么一次全部买入要么一次全部买出。根据BP 神经网络预测模型,结合本交易策略能告诉我们何时应
该买入、卖出指数或股票。
4 性能评估设计
本文的BP 网络训练算法和交易策略系统在C ++ forDOS 环境下实现,使用四组上证指数时间序列数
据:第一组,从1994 年1月3日至1994 年5月31 日,共100 天作为数据平滑用;第二组,从1994 年10 月20
日至1995 年8月4日,共300 个交易天指数时间序列数据作为训练集;第三组,从1995 年8月7日至1996
年5月3日,共200 个交易天指数时间序列数据作为网络训练测试集;第四组,从1996 年5月31 日至2005
年2月25 日作为模拟交易检验集,共2111 天。根据本文所取的平滑参数h= 118, 假设交易手续费率为
01005, 随机选择次数54200, 其他有关参数: n= 20,m = 5,η = 0101,λ = 015,d = 30,RBT = 0105, RST =
-01069,β = 015. 以第四组数据为模拟交易检验集,每个交易天滚动一次预测未来的30 天指数,然后把训
练周期向前移动一个交易天,每150 天再对网络训练一次,M 取值2111 。误差评价规则如下:
M
1
E(i) =
M Σ|x.t+i -xt+i |,i = 0, 1, .,d -1. (9)
t= 0
显然, x.t+i 表示预测值, xt+i 为实际收盘价, E( i) 表示总预测检验期M 个d 天内第i天平均绝对误差,
i= 0, 1, 2, .,d -1 。
俗话说:“看准大盘,赚大钱! ”。众多的实践经验也告诉我们:只有把握住证券市场的,才有可能
实现赚钱的梦想。在评价预测模型的性能时,趋势预测的准确度是最为重要的判定标准[ 10 ] 。在本文中,方
向趋势准确度TAD (Trend Accuracy in Direction, )被用于计量训练系统的性能。设从t-1时刻预测未来d
个交易天,其趋势准确度计算如下:
M
1
TAD (i) =
M ΣD ji ×100% (10)
j=0
而
Dji =
1 若(x.t+i -xt-1 ) ( xt+i -xt-1 )> 0
,i ∈ [ 0, d)
0 else
其中: x.t+i 表示在预测期内第i交易天内的预测值。TAD (i), i = 0, 1, 2, .,d -1表示总预测检验期M 个
d天内第i天的平均趋势精度。举例说明,设用BP 网络算法从初始交易天1996 年5月30 日出发预测未来
d天的指数,不妨设d= 15 ; 现假设到了第4个交易天1996 年6月5日,从而M= 4 。d天内每天的绝对误
差平均值, 可表示为E( 0), E ( 1), ., E ( 14) ; d 天内每天平均趋势精度表示为TAD ( 0), TAD ( 1), .,
TAD ( 14) 。此外,还用总交易次数NTT 、买入次数NB 、卖出次数NS 、卖出次数中获利的次数NPT 、卖出成功率
SRS 来评价交易策略。
5 结合BP网络的交易策略算法设计与实验结果
511 结合BP 网络的交易策略算法设计
用式(7)计算持有收益,并按交易策略式(8)做出相应的指数买卖决策。如下算法:
步骤A: 初始读入模拟交易检验集M 中第一个样本点前20 个交易天指数,从而得到用BP 网络预测所
要求的输入样本集(此输入样本集有20 个数据元素,作为BP 网络的输入集) 。
步骤B: 读入M 的全部2111 个时间序列数据。
步骤C: 对整个模拟交易检验期:
C1: 用式(5) 、式(6)平滑处理预处理输入样本集;
C2: 如果满150 天,调用BP 算法重新训练网络(注意:此时的输入训练样本对需向后平移150 天),转步
骤C3;
C3: 根据已得到的BP 网络权值和阈值,向前滚动计算未来30 天的指数预测值;
C4: 计算收益率,按式(7)计算持有收益以及式(8)中预测的买入收益率和卖出收益率RS P ,并按式(8)
做指数买卖决策;
C5:
C6: 向前平移一天,重新定义输入样本集,转步骤C1;
对智能交易策略进行评价,计算30 天预测期内每天绝对误差,以及计算每天趋势数值D ji ;
步骤D: 性能评估。用式(9)计算总预测检验期M, 30 天内每天的绝对误差平均值;用式(10)计算总预
测检验期M, 30 天内每天的平均趋势精度;
步骤E: 结束。
512 实验结果
根据本文所定义的平均趋势精度,考察整个模拟交易检验期2111 天,预测期为30 天,每天的平均趋势
精度见图1。按交易策略算法,整个预测检验期的买卖交易数据为:总交易次数NTT 为39 次,买入次数NB
为20 次,卖出次数NS 为19 次;收益率为正值的有13 次,故卖出成功率SRS 为68% ( =13/19) 。智能交易
策略与持有策略相比,买卖上证综指的收益对比见图2。
图1 30 天内平均每天趋势精度
6 结束语
由图1, 对于未来30 天的上证综指的趋势预测,平均精度为54% , 且预测的时间越远趋势精度越高,说
明本算法对上证综指大盘走势的预测效果较为显著。但从第21 天开始,趋势精度略有下降,其原因是本文
有意未按满150 天从新训练网络而导致在远期每天平均趋势精度略有下降。由图2, 按智能交易策略进行
指数交易,卖出成功率达到近百分之七十,智能交易策略买卖指数与持有策略相比,投资者所获得的回报前
者是后者的近三倍。
图2 智能交易策略与持有策略之间的收益对比 |
|
|