作者ygzjkx (安安)
看板Statistics
標題[程式] SAS迴圈問題
時間Wed May 8 03:44:31 2013
------------------------------------------------------------------------
[軟體程式類別]:
SAS
[程式問題]:
迴圈問題
[軟體熟悉度]:
中(3個月到1年)
[問題敘述]:
程式目的:
若xr{i}不為缺值時,則zri_ew{i}=(1+zri_ew{i-1})*(1+xr{i})-1;
若遇到觀察值之第一筆缺值時,則迴圈到y值停止!
遇到瓶頸:
假設i=5的時候遇到缺值,則會求出一個y值,預期可以求得zri_ew{y}
但迴圈繼續執行時,萬一同一筆觀察值在i=7時,也為缺值,
則此時會求出一個新的y值,預期會求得新的zri_ew{y}!
但我希望迴圈到第一個y時就停止迴圈!
換句話說,若觀察值出現兩個以上的缺值,本文需要的為第一個缺值所計算出來的
y值,但下述程式範例似乎會取到觀察值最後一個缺值所計算出來的y值!
不知程式範例應如何修改,麻煩幫忙解惑!感恩!
[程式範例]:
zri_ew1=ret1;
DO i=2 TO 60;
IF xr{i} NE . THEN zri_ew{i}=(1+zri_ew{i-1})*(1+xr{i})-1;
ELSE
DO;
xr{i}=xpr{i};
y=i+(12-MOD(MOD(yrmon,100)+i,12));
DO UNTIL (i=y);
zri_ew{i}=(1+zri_ew{i-1})*(1+xr{i})-1;
END;
END;
END;
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.126.192.41
1F:推 tew:舉時例說明吧 就程式來看 你要做的是報酬率研究 05/08 09:01
2F:→ ygzjkx:補充:程式範例中,有先array r{60} ret1-ret60; 05/08 09:22
3F:→ ygzjkx:與array z{60} zri_ew1-zri_ew60; 05/08 09:24
4F:→ ygzjkx:與array xpr{60} pret1-pret60; 05/08 09:32
5F:→ ygzjkx:實例:假設建構投資組合的時間點yrmon=199803,現在有未來60 05/08 09:51
6F:→ ygzjkx:個月的報酬率為ret1-ret60,假設ret15為缺值,則希望遇到缺值 05/08 09:52
7F:→ ygzjkx:之後的報酬率"皆"以xpr{i}取代,並計算持有期間報酬至"遇到 05/08 09:52
8F:→ ygzjkx:缺值當年度的年底(12月)"也就是ret15為缺值時,對應的實際年 05/08 09:52
9F:→ ygzjkx:月應為199906,則199906-199912的報酬率,皆以xpr{i}取代,此 05/08 09:53
10F:→ ygzjkx:時y=21,也就是ret15=pret15,ret16=pret16,...,ret21=pret21 05/08 09:55
11F:→ ygzjkx:時,zri_ew{21}即停止迴圈 05/08 09:55
12F:→ ygzjkx:(但由於迴圈會繼續執行至i=60,假設ret22為缺值,則i=22時, 05/08 10:02
13F:→ ygzjkx:又會計算出新的y並計算出zri_ew{新的y},可是想要的是遇到 05/08 10:03
14F:→ ygzjkx:第一個缺值時,該年度年底的zri_ew,而非計算至第二個缺值之 05/08 10:03
15F:→ ygzjkx:年底) 05/08 10:03
16F:推 tew:請舉實際的例子 你說的 完全不知道那個報酬率是哪個 05/08 10:33
17F:→ tew:個股報酬率 投資組合報酬率 大盤報酬率 05/08 10:36
18F:→ tew:例如你的ret和pret的關係為何? 05/08 10:38
19F:推 tew:另外 既然已經算累積報酬率了 我不知道為何投組報酬率有缺值 05/08 10:41
20F:→ tew:難道你是先算個股持有60個月報酬率後才算投組平均 05/08 10:42
21F:→ ygzjkx:ret為個股報酬率,pret為相同規模等級之投資組合報酬率 05/08 10:42
22F:→ tew:如果是這樣算的話 那就問題大了 05/08 10:42
23F:→ ygzjkx:zri_ew則為此迴圈產生的新變數,為個股之持有期間報酬 05/08 10:44
24F:→ ygzjkx:在計算持有期間報酬時,遇到缺值則以pret取代! 05/08 10:46
25F:推 tew:請先處理個股報酬率缺值 不要在array處理 05/08 10:46
26F:→ ygzjkx:且只要做到遇到缺值該年之年底!而不用做到i=60時 05/08 10:47
27F:→ tew:每個月相同規模的股票面對的是相同投組的報酬率 05/08 10:47
28F:推 tew:每次形成投資組合 先垂直的抓出60個月的資料 05/08 10:56
29F:→ tew:遇有缺值 其後資料全部刪掉 之後再補同組合的報酬率 05/08 10:57
30F:→ tew:用這個邏輯寫 應該會比較順一點 05/08 10:59
31F:→ ygzjkx:剛想到一個方法!等等用"回應"的方式發布!您再幫我check看看 05/08 10:59
32F:推 tew:不過 我不知道哪篇paper是這樣替代報酬率的 05/08 11:07
33F:→ ygzjkx:Lakonishok, J., Shleifer, A., & Vishny, R. W. (1994). 05/08 11:12
34F:→ ygzjkx:Contrarian investment, extrapolation, and risk. 05/08 11:13
35F:→ ygzjkx:If a stock disappears from CRSP during a year, 05/08 11:17
36F:→ ygzjkx: its return is replaced until the end of the year with 05/08 11:18
37F:→ ygzjkx:the return on a corresponding size decile portifolio... 05/08 11:18
38F:→ ygzjkx:(p.1545) 05/08 11:19