matlab套利,期现套利-现货组合构建(1)-市值权重法
本帖最后由 faruto 于 2011-12-27 23:58 編輯
期現套利-現貨組合構建(1)-市值權重法
最近抽空做的一點東西,常見的期現套利現貨構建的方法之1——市值權重法。
一直想把跟蹤指數的東西做一下,都是常見的方法,高手繞行。
采用市值權重法,選取150只股票來復制HS300指數,然后通過二次規劃quadprog來進行權重優化。
% 樣本內數據20110104-20111216,日線
% 共234個交易日
% 樣本外數據% 20111219-20111223,1分鐘線
% 共5個交易日,計算1日跟蹤誤差、2日跟蹤誤差、3日跟蹤誤差、5日跟蹤誤差
模型簡化:
1.沒有考慮2011年HS300成分股的幾次變動情況
2.對于數據不完整的股票(上市時間過晚,股東大會停牌或者其他情況停牌 等等導致數據不完整),直接從待選股票池剔除。
以上兩個簡化都可以進行優化改善,我著實懶得弄了。
后面還想實現的是
期現套利-現貨組合構建(2)-行業抽樣權重優化法
期現套利-現貨組合構建(3)-行業抽樣Beta優選法
期現套利-現貨組合構建(4)-逐步回歸法
期現套利-現貨組合構建(5)-Alpha-Beta聚類法
但不知道有沒有時間,再就是最近要實現一個基于MATLAB GUI 的股票行情軟件,整體框架我都思考差不多了。===============================================================FS_ArbitrageMain腳本程序
Last Modified by LiYang 2011/12/27
Email:farutoliyang@gmail.com
程序實現測試所使用的MATLAB版本:MATLAB R2011b(7.13)
如果程序在您本機運行不了,請首先檢查您MATLAB的版本號,推薦使用較新版本的MATLAB。
Contentsa little clean work
Load Data
樣本內、樣本外數據劃分
Calculate Opt Weight On TrainData
樣本內、樣本外跟蹤誤差分析
Save Data To Mat Format
Record Time
a little clean work
tic;clear;clc;close all;format compact;Load Data
% 市值權重法選股
load FS_WeightMethod;樣本內、樣本外數據劃分
% 樣本內數據20110104-20111216,日線
% 共234個交易日IndexTrain = Index;StockTrain = StockSelect;
% 樣本外數據% 20111219-20111223,1分鐘線
% 共5個交易日,計算1日跟蹤誤差、2日跟蹤誤差、3日跟蹤誤差、5日跟蹤誤差
% IndexTest
% StockTestCalculate Opt Weight On TrainData
跟蹤誤差定義:
file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_eq08065.png
FS_ArbitrageMain_eq08065.png (5.48 KB, 下載次數: 22)
2011-12-27 23:50 上傳
優化目標函數:
file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_eq26332.png
file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_eq87321.png
FS_ArbitrageMain_eq26332.png (6.18 KB, 下載次數: 8)
2011-12-27 23:51 上傳
FS_ArbitrageMain_eq87321.png (4.16 KB, 下載次數: 8)
2011-12-27 23:51 上傳
Weight = FSweight(IndexTrain, StockTrain);
樣本內、樣本外跟蹤誤差分析
Report = TEAnalysis(IndexTrain, StockTrain, IndexTest, StockTest, Weight)
Report =
'樣本內夏普比率'? ?? ? [? ? -0.0883]
'樣本內信息比率'? ?? ? [? ???0.1922]
'樣本內跟蹤誤差'? ?? ? [4.0949e-004]
'1日樣本外跟蹤誤差'? ? [2.8127e-004]
'2日樣本外跟蹤誤差'? ? [2.5635e-004]
'3日樣本外跟蹤誤差'? ? [2.3806e-004]
'5日樣本外跟蹤誤差'? ? [2.4657e-004]
FS_ArbitrageMain_01.png (11.35 KB, 下載次數: 5)
2011-12-27 23:52 上傳
FS_ArbitrageMain_02.png (8.29 KB, 下載次數: 7)
2011-12-27 23:52 上傳
FS_ArbitrageMain_03.png (6.11 KB, 下載次數: 3)
2011-12-27 23:52 上傳
FS_ArbitrageMain_04.png (11.09 KB, 下載次數: 6)
2011-12-27 23:52 上傳
FS_ArbitrageMain_05.png (7.78 KB, 下載次數: 8)
2011-12-27 23:52 上傳
FS_ArbitrageMain_06.png (6.05 KB, 下載次數: 6)
2011-12-27 23:52 上傳
file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_01.png file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_02.png file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_03.png file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_04.png file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_05.png file:///C:/Users/faruto/Desktop/MatlabTradeStation%28MTS%29ToolBox/FSArbitrage/html/FS_ArbitrageMain_06.png Save Data To Mat Format
save FS_ArbitrageMain;Record Timetoc;Elapsed time is 4.091125 seconds.
最終運行的腳本代碼:
%% FS_ArbitrageMain
% 腳本程序
%
% Last Modified by LiYang 2011/12/27
%
% Email:farutoliyang@gmail.com
%
% 程序實現測試所使用的MATLAB版本:MATLAB R2011b(7.13)
%
% 如果程序在您本機運行不了,請首先檢查您MATLAB的版本號,推薦使用較新版本的MATLAB。
%% a little clean work
tic;
clear;
clc;
close all;
format compact;
%% Load Data
% 市值權重法選股
load FS_WeightMethod;
%% 樣本內、樣本外數據劃分
% 樣本內數據20110104-20111216,日線
% 共234個交易日
IndexTrain = Index;
StockTrain = StockSelect;
% 樣本外數據
% 20111219-20111223,1分鐘線
% 共5個交易日,計算1日跟蹤誤差、2日跟蹤誤差、3日跟蹤誤差、5日跟蹤誤差
% IndexTest
% StockTest
%% Calculate Opt Weight On TrainData
% 跟蹤誤差定義:
%
% $ TE = \sqrt{\frac{1}{T-1}\sum_{t=1}^{T}(\sum_{i=1}^{N}w_{i}R_{it}-Rm_t)^2} $
%
% 優化目標函數:
%
% $ min: TE = \frac{1}{T-1}\sum_{t=1}^{T}(\sum_{i=1}^{N}w_{i}R_{it}-Rm_t)^2$
%
% $ s.t. \sum_{i=1}^{N}w_i = 1$
% $ (0\leq{w_i}\leq{1},i = 1,2,...N)$
Weight = FSweight(IndexTrain, StockTrain);
%% 樣本內、樣本外跟蹤誤差分析
Report = TEAnalysis(IndexTrain, StockTrain, IndexTest, StockTest, Weight)
%% Save Data To Mat Format
save FS_ArbitrageMain;
%% Record Time
toc;復制代碼
可能帖子格式沒整理好。。。先這樣。。
總結
以上是生活随笔為你收集整理的matlab套利,期现套利-现货组合构建(1)-市值权重法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国移动大转盘游戏次数限制
- 下一篇: matlab人脸追踪,求大神帮助我这个菜