作者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