1. 程式人生 > >BP神經網路預測股指走勢

BP神經網路預測股指走勢

神經網路訓練過程


預測後通過交易的模擬曲線和盈利狀況


程式碼如下

% 神經網路預測股指走勢
% Written by Phillip Wan
% Email:[email protected]

%% 準備工作
tic;
clear;
clc;
close all;
format compact;
w=windmatlab;

%% 匯入資料
[w_wsi_data,w_wsi_codes,w_wsi_fields,w_wsi_times,w_wsi_errorid,w_wsi_reqid]=w.wsi('IF00.CFE','close,open,high,low,volume','2013-02-06 09:00:00','2013-04-06 16:09:58','PriceAdj=F');

%% 處理資料轉置
close0=w_wsi_data(:,1)';
open0=w_wsi_data(:,2)';
high0=w_wsi_data(:,3)';
low0=w_wsi_data(:,4)';
vol0=w_wsi_data(:,5)';

%% 初始化變數
num=1;   %初始項
endNum=300; %後endNum項不適用作為測試
no_use=0; %最後若干項不使用

% 輸入項
v0=[close0(num:end-endNum);open0(num:end-endNum);high0(num:end-endNum);low0(num:end-endNum);vol0(num:end-endNum)];
% 輸出項
p0=[close0(num+1:end-endNum+1)];

% 輸入輸出歸一化
[v,vps]=mapminmax(v0);
[p,pps]=mapminmax(p0);

%% 建立網路
net=feedforwardnet([4,3]);

% 訓練引數
net.trainParam.epochs=9000;
net.trainParam.goal=0.0002;

%% 開始訓練
[net,tr]=train(net,v,p);

%% 儲存訓練好的神經網路
save net01 net;
load('net01.mat');

%% 使用網路
v_test0=[close0(end-endNum:end-no_use-1);open0(end-endNum:end-no_use-1);high0(end-endNum:end-no_use-1);low0(end-endNum:end-no_use-1);vol0(end-endNum:end-no_use-1)];
p_test=[close0(end-endNum+1:end-no_use)]; %實際結果
close_pre=[close0(end-endNum:end-no_use-1)]; %之前的收盤價

% 測試資料歸一化
[v_test,v_testps]=mapminmax('apply',v_test0,vps);
result0=sim(net,v_test);

% 測試結果,反歸一化
result=mapminmax('reverse',result0,pps);

%% 誤差
error=result-p_test;

%% 詳細盈虧
lg=length(close_pre);
windata=zeros(1,lg);
windata(1,1)=0;
winnum=0;
for i=2:lg
    win=0; %盈虧錢數
    if(result(1,i)>=close_pre(1,i-1))
        win=p_test(1,i)-close_pre(1,i-1);
    else
        win=close_pre(1,i-1)-p_test(1,i);
    end
    
    if(win>=0)
        winnum=winnum+1;
    end
    windata(1,i)=win+windata(1,i-1);
end

%c 成功率
win_rate=winnum/lg

%% 計算回撤
backratio=zeros(1,lg);
for m=1:lg
    c=max(windata(1:m));
    backratio(1,m)=(windata(1,m)-c)/c;
end

%% 作圖
figure;
subplot(3,1,1);
plot(p_test);
hold on; 
grid on;
plot(result,'g');
grid on;
legend('IF00','神經網路');
title('神經網路模擬曲線')
subplot(3,1,2);
plot(windata);
grid on;
title('資金盈利');
subplot(3,1,3);
plot(backratio);
grid on;
title('最大回撤');


相關推薦

BP神經網路預測股指走勢

神經網路訓練過程 預測後通過交易的模擬曲線和盈利狀況 程式碼如下 % 神經網路預測股指走勢 % Written by Phillip Wan % Email:[email protected] %% 準備工作 tic; clear; clc; close a

BP神經網路預測例項

BP神經網路的預測,根據輸出層的是線性函式,這樣可以擬合出輸出和輸入之間的函式關係, 從而實現輸入新的值時,可以預測值, 例項: <span style="font-size:18px;"><span style="font-size:18px;"&g

matlab利用訓練好的BP神經網路預測新資料(先儲存網路,再使用網路

1,儲存網路。   save ('net') % net為已訓練好的網路,這裡把他從workspace儲存到工作目錄,顯示為net.mat文件。 2,使用網路。   load ('net')

MATLAB使用BP神經網路進行資料預測

P=[93 260.5 -52 -0.07 1.216 3621 139 29 6.142 100 252.45 -48 -0.04 0.925 3600 142 27.5 5.068 121 241.52 -45 -0.02 1.113 3563 133 31.7 5.19

BP神經網路迴歸預測模型(python實現)

       神經網路模型一般用來做分類,迴歸預測模型不常見,本文基於一個用來分類的BP神經網路,對它進行修改,實現了一個迴歸模型,用來做室內定位。模型主要變化是去掉了第三層的非線性轉換,或者說把非線性啟用函式Sigmoid換成f(x)=x函式。這樣做的主要原因是Sigmoi

BP神經網路基於Tensorflow的實現(程式碼註釋詳細)

BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,是目前應用最廣泛的神經網路。 在一般的BP神經網路中,單個樣本有m個輸入和n個輸出,在輸入層

kreas搭建神經網路預測波士頓房價(手寫K折交叉驗證)

1、程式說明 所有注意事項均寫入註釋 from keras.datasets import boston_housing import numpy as np from keras import models from keras import layers from keras.o

BP神經網路 如何進行權值的初始化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

遺傳演算法+BP神經網路組合求解非線性函式

用遺傳演算法求解非線性問題是常見的求解演算法之一,求解的過程就是隨機生成解,計算適應度,然後選擇,交叉,變異,更新種群,不斷迭代,這樣,每個個體都會向每代中最佳的個體學習並靠攏,這是區域性最優解;而變異操作是為了在靠近當前最優解的同時還有機會變異出更佳的基因,從而跳出區域性最優解而達到全域性最優解。

BP神經網路說明及推導

    學習神經網路,很多基礎知識不用就會忘了,這段時間重新進行一下整理和總結。在此留做記錄。首先從最基礎的BP神經網路開始。並進行相關演算法的推導。     人工神經網路是仿照人大腦的功能而用數學公式搭建的一種結構。現在藉助計算機語言在高效能的計算機上得

神經網路學習(3)————BP神經網路以及python實現

一、BP神經網路結構模型                BP演算法的基本思想是,學習過程由訊號的正向傳播和誤差的反向傳播倆個過程組成,輸入從輸入層輸入,經隱層處理以後,傳向輸出層。如果輸出層的實際輸出和期望輸出不符合

BP神經網路演算法的理解

BP神經網路在百度百科中的解釋就是:BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,是目前應用最廣泛的神經網路。大家應該對基本的神經網路模型有一定程度的瞭解,

一種用迴歸神經網路學習說話人嵌入的無監督神經網路預測框架

An Unsupervised Neural Prediction Framework for Learning Speaker Embeddings using Recurrent Neural Networks 一種用迴歸神經網路學習說話人嵌入的無監督神經網路預測框架 摘要 本文提出

單隱層BP神經網路C++實現

    這幾天抽時間學習了一下很久之前就想學習的BP神經網路。通過閱讀西瓜書的神經網路部分的原理和參考了網上幾篇部落格,我自己用C++編寫、實現了一個單隱層BP神經網路。     簡單畫了個示意圖,好理解下面給出的公式:(注意:圖中省略了其他的節點之間的連

神經網路學習(三)——BP神經網路演算法

前面學習了感知器和自適應線性神經網路。 下面介紹經典的三層神經網路結構,其中每個神經元的啟用函式採用Sigmoid。PS:不同的應用場景,神經網路的結構要有針對性的設計,這裡僅僅是為了推導演算法和計算方便才採用這個簡單的結構。 訓練步驟: 1.正向傳播 2.反向傳播(BP)

Tensorflow實現BP神經網路

Tensorflow實現BP神經網路 摘要:深度學習中基本模型為BP深度神經網路,其包括輸入層、隱含層和輸出層。輸入層的神經元個數取決於資料集屬性特徵的個數,輸出層神經元個數取決於劃分類標的個數。BP神經網路通過梯度下降法不斷調整權重矩陣和偏向進行調參,實現神經網路的訓練。   本人

基於PCA與BP神經網路的人臉識別

基於PCA與BP神經網路的人臉識別 引言 1、PCA演算法 2、PCA原理推導 3、神經網路 4、matlab程式碼 5、C++程式碼 引言 前面的特徵提取部分採用的是PCA,後面的識別分類

BP神經網路 MATLAB源程式

和以前的習慣一樣,只舉典例,然後給程式和執行結果進行說明。 問題背景是: 給定某地區20年的資料,6列,21行,第一列值為年份,第二列為人數,第三列為機動車數量,第四列為公路面積,第五列為公路客運量,第六列為公路貨運量,這20年是1990年到2009年,現在給我們2010和2011年,第二、

BP神經網路&卷積神經網路概念

1、BP神經網路 1.1 神經網路基礎 神經網路的基本組成單元是神經元。神經元的通用模型如圖 1所示,其中常用的啟用函式有閾值函式、sigmoid函式和雙曲正切函式。  圖 1 神經元模型 神經元的輸出為:  y=f(∑i=1m

小川學習筆記--BP神經網路JAVA程式碼解析

小川學習筆記–BP神經網路JAVA程式碼解析 闊別有些時日了,今天我就寫一篇最近學習BP神經網路JAVA程式碼的一個筆記,我們大家都知道BP神經網路是在上個世紀進行了兩次熱潮,由於反向傳播的發現從而促進了神經網路的發展。由於筆者在本科期間還未學習過JAVA,因此還在學習階段,對於一些程式