看板 LUCHUO332 關於我們 聯絡資訊
※ [本文轉錄自 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