作者popyou (精進用功修行不停)
看板LUCHUO332
標題[問題]有關用Matlab寫pair trading的問題
時間Mon May 26 23:48:37 2008
※ [本文轉錄自 MATLAB 看板]
作者: popyou (精進用功修行不停) 看板: MATLAB
標題: [問題]有關用Matlab寫pair trading的問題
時間: Mon May 26 23:04:04 2008
原本問題是這樣子的
首先先找出台積電(Px)跟聯電(Py)的近三年收盤價
令 Z=Px/Py
然後就可以畫出一個Z的二微的圖
再算出標準差跟平均數
假設今天有一筆錢玩股票
(假設平均值大約是2標準差是1)
為了考慮加權 所以先買了台積電一張聯電兩張
投資策略是當Z值超過標準差加一倍標準差(也就是3)時
表示台積電價格被高估
所以要賣掉手上的台積電一張 買聯電兩張
這時候手上的持股是四張聯電
當Z值回到平均值加一倍標準差的時候
就把聯電賣掉兩張買一張台積電
同樣的當Z值低於平均值減一倍標準差時
就賣掉兩張聯電買台積電一張
(張數不一定是限制住買一賣二之類的,可以根據手上所擁有的錢來決定)
也就是說當Z值落在1~3的時候
手上是台積電聯電各半
超過3時全部換成聯電
低於1時全部換成台積電
就這樣根據投資策略來運作
要問這樣三年下來
會賺還是虧多少錢
如果寫的出來可以再考慮手續費
跟可以自定加減給倍標準差的問題
問題來了XD
我昨天開始看書(第一次使用Matlab就上手(?))
其實是新陸出版社的 投資分析
把基本的指令都看懂的
不過在寫程式的時候我遇到問題
Z值一旦超過設定的平均值加一倍標準差
就要有買賣的動作
但是要怎麼找到那一個值(第一個超過所設定標準的值)?
我每次都找到一連串的值
假設是4 5 6 7 8 9
我只要4跟9
在4跟9的時候進行買賣
要怎麼寫才可以阿?
小於平均值扣一倍標準差時也一樣
因為我念的是數學系
都沒特別去涉獵程設這部分
臨時有急需要寫出這個程式
所以希望板上的專家們可以給點幫助
我把我寫的先PO給大家看一下
DataZ=csvread('data2006-1.csv')%讀取資料
m=mean(DataZ);%定義算術平均數
s=std(DataZ);%定義標準差
y1=m+s;%求出上限
y2=m-s;%求出下限
x=1:1:577;%創立X軸
fprintf('%s%d\n','Z的平均數=',m)
fprintf('%s%d\n','Z的標準差=',s)
plot(x,y,x,y1,x,y2,x,m)
a=find(y>y1);%找出大於上線的值
min(a)<---這行還沒寫完
--
愛不是個會乾涸的儲水池,
而是一到源遠流長的清泉;
流的越長越久,就越澄清有勁。
愛迪‧坎扥(Eddie Cantor)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.99.9.41
※ 編輯: popyou 來自: 122.99.9.41 (05/26 23:47)
※ popyou:轉錄至看板 ck54th332 05/26 23:47
--
我想知道 所有 跟妳有關的事
當妳哭 當妳笑 當妳心情好 當妳心情壞
我通通都想知道
也許你說我怎麼 愛的這麼 強烈
或許是因為 天蠍座 的個性吧
如果這樣 會造成妳的困擾
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.99.9.41
→ popyou:寫了一整天 還是卡死死 05/26 23:49
→ popyou:寫出來了...感謝幫忙 05/28 23:49
推 lee18:樓上花了整整兩天一分不差寫出來了XDD 恭喜恭喜 05/30 00:29
→ popyou:真巧 = = 06/05 02:00