[程式] SAS迴圈問題

看板Statistics作者 (安安)時間12年前 (2013/05/08 03:44), 編輯推噓6(6032)
留言38則, 2人參與, 最新討論串1/3 (看更多)
------------------------------------------------------------------------ [軟體程式類別]: 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

05/08 09:01, , 1F
舉時例說明吧 就程式來看 你要做的是報酬率研究
05/08 09:01, 1F

05/08 09:22, , 2F
補充:程式範例中,有先array r{60} ret1-ret60;
05/08 09:22, 2F

05/08 09:24, , 3F
與array z{60} zri_ew1-zri_ew60;
05/08 09:24, 3F

05/08 09:32, , 4F
與array xpr{60} pret1-pret60;
05/08 09:32, 4F

05/08 09:51, , 5F
實例:假設建構投資組合的時間點yrmon=199803,現在有未來60
05/08 09:51, 5F

05/08 09:52, , 6F
個月的報酬率為ret1-ret60,假設ret15為缺值,則希望遇到缺值
05/08 09:52, 6F

05/08 09:52, , 7F
之後的報酬率"皆"以xpr{i}取代,並計算持有期間報酬至"遇到
05/08 09:52, 7F

05/08 09:52, , 8F
缺值當年度的年底(12月)"也就是ret15為缺值時,對應的實際年
05/08 09:52, 8F

05/08 09:53, , 9F
月應為199906,則199906-199912的報酬率,皆以xpr{i}取代,此
05/08 09:53, 9F

05/08 09:55, , 10F
時y=21,也就是ret15=pret15,ret16=pret16,...,ret21=pret21
05/08 09:55, 10F

05/08 09:55, , 11F
時,zri_ew{21}即停止迴圈
05/08 09:55, 11F

05/08 10:02, , 12F
(但由於迴圈會繼續執行至i=60,假設ret22為缺值,則i=22時,
05/08 10:02, 12F

05/08 10:03, , 13F
又會計算出新的y並計算出zri_ew{新的y},可是想要的是遇到
05/08 10:03, 13F

05/08 10:03, , 14F
第一個缺值時,該年度年底的zri_ew,而非計算至第二個缺值之
05/08 10:03, 14F

05/08 10:03, , 15F
年底)
05/08 10:03, 15F

05/08 10:33, , 16F
請舉實際的例子 你說的 完全不知道那個報酬率是哪個
05/08 10:33, 16F

05/08 10:36, , 17F
個股報酬率 投資組合報酬率 大盤報酬率
05/08 10:36, 17F

05/08 10:38, , 18F
例如你的ret和pret的關係為何?
05/08 10:38, 18F

05/08 10:41, , 19F
另外 既然已經算累積報酬率了 我不知道為何投組報酬率有缺值
05/08 10:41, 19F

05/08 10:42, , 20F
難道你是先算個股持有60個月報酬率後才算投組平均
05/08 10:42, 20F

05/08 10:42, , 21F
ret為個股報酬率,pret為相同規模等級之投資組合報酬率
05/08 10:42, 21F

05/08 10:42, , 22F
如果是這樣算的話 那就問題大了
05/08 10:42, 22F

05/08 10:44, , 23F
zri_ew則為此迴圈產生的新變數,為個股之持有期間報酬
05/08 10:44, 23F

05/08 10:46, , 24F
在計算持有期間報酬時,遇到缺值則以pret取代!
05/08 10:46, 24F

05/08 10:46, , 25F
請先處理個股報酬率缺值 不要在array處理
05/08 10:46, 25F

05/08 10:47, , 26F
且只要做到遇到缺值該年之年底!而不用做到i=60時
05/08 10:47, 26F

05/08 10:47, , 27F
每個月相同規模的股票面對的是相同投組的報酬率
05/08 10:47, 27F

05/08 10:56, , 28F
每次形成投資組合 先垂直的抓出60個月的資料
05/08 10:56, 28F

05/08 10:57, , 29F
遇有缺值 其後資料全部刪掉 之後再補同組合的報酬率
05/08 10:57, 29F

05/08 10:59, , 30F
用這個邏輯寫 應該會比較順一點
05/08 10:59, 30F

05/08 10:59, , 31F
剛想到一個方法!等等用"回應"的方式發布!您再幫我check看看
05/08 10:59, 31F

05/08 11:07, , 32F
不過 我不知道哪篇paper是這樣替代報酬率的
05/08 11:07, 32F

05/08 11:12, , 33F
Lakonishok, J., Shleifer, A., & Vishny, R. W. (1994).
05/08 11:12, 33F

05/08 11:13, , 34F
Contrarian investment, extrapolation, and risk.
05/08 11:13, 34F

05/08 11:17, , 35F
If a stock disappears from CRSP during a year,
05/08 11:17, 35F

05/08 11:18, , 36F
its return is replaced until the end of the year with
05/08 11:18, 36F

05/08 11:18, , 37F
the return on a corresponding size decile portifolio...
05/08 11:18, 37F

05/08 11:19, , 38F
(p.1545)
05/08 11:19, 38F
文章代碼(AID): #1HYLcYXD (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1HYLcYXD (Statistics)