作者sipa (sipa)
看板Statistics
标题[问题] SAS计算变数的问题
时间Wed Jun 4 17:39:56 2008
1. (buy_sell=1是买入、3是持有而2是卖出。)
我需要找出每一天的交易资料对应的上一次卖出之股票资料(例:股票代号)
因为有可能同一天卖出两支以上的股票,要如何在1/5後的每一天都记录
上次卖出之股票代号(LSS)也就是1/5卖出的2303和3864?(资料型态如下)
我目前想到的作法是先把buy_sell=2的资料抽出来,然後记录lag(stock_id),
这样就知道每次卖出股票时,上次卖出的股票是哪一支。
因为只要日期比最靠近的卖出时点还早的资料,
所对应的上次卖出股票代号就会跟该卖出时点资料所记录的一样,
因此只要将完整的交易资料按照trade_date排序,
然後根据每一笔buy_sell=2的时间点,只要trade_date比它早的就跟它分成同组,
尔後再按照此组别,将一开始只有buy_sell=2的资料档也加注同样的组别,
然後再合并在一起,其他交易资料就能记录上次卖出的股票代号。
但是问题会出现在如果一天卖出两支以上的股票,要如何同时记录?
Trade_date Stock_id Buy_date Sell_date buy_sell volume price
LSS \
1998/1/1 2303 1998/1/1 1998/1/5 1 1000 20
N/A \
1998/1/2 2303 1998/1/1 1998/1/5 3 1000 15
N/A \
1998/1/3 2303 1998/1/1 1998/1/5 3 1000 24
N/A \
1998/1/4 2303 1998/1/1 1998/1/5 3 1000 27
N/A \
1998/1/5 2303 1998/1/1 1998/1/5 2 1000 30
N/A \
1998/1/3 3864 1998/1/3 1998/1/5 1 2000 25
N/A \
1998/1/4 3864 1998/1/3 1998/1/5 3 2000 20
N/A \
1998/1/5 3864 1998/1/3 1998/1/5 2 2000 15
N/A \
1998/1/4 2578 1998/1/4 1998/1/10 1 3000 40
N/A \
1998/1/5 2578 1998/1/4 1998/1/10 3 3000 35
N/A \
1998/1/6 2578 1998/1/4 1998/1/10 3 3000 30
2303\
3864\
1998/1/7 2578 1998/1/4 1998/1/10 3 3000 33
2303\
3864\
1998/1/8 2578 1998/1/4 1998/1/10 3 3000 45
2303\
3864\
1998/1/9 2578 1998/1/4 1998/1/10 3 3000 48
2303\
3864\
1998/1/10 2578 1998/1/4 1998/1/10 2 3000 50
2303\
3864\
2. 计算上次卖出股票的後续报酬
记录上次卖出的股票之後,再读进每一天该股票的价格,
进一步计算上次卖出股票的当日市场报酬,
报酬是和卖出价作比较。
主要的问题还是在上次同日卖出不只一支股票时,会有问题!
Trade_date Stock_id buy_sell volume price
LSS LSSP PostR \
1998/1/1 2303 1 1000 20
N/A N/A N/A \
1998/1/2 2303 3 1000 15
N/A N/A N/A \
1998/1/3 2303 3 1000 24
N/A N/A N/A \
1998/1/4 2303 3 1000 27
N/A N/A N/A \
1998/1/5 2303 2 1000 30
N/A N/A N/A \
1998/1/3 3864 1 2000 25
N/A N/A N/A \
1998/1/4 3864 3 2000 20
N/A N/A N/A \
1998/1/5 3864 2 2000 15
N/A N/A N/A \
1998/1/4 2578 1 3000 40
N/A N/A N/A \
1998/1/5 2578 3 3000 35
N/A N/A N/A \
1998/1/6 2578 3 3000 30
2303 28 (1000/3000)*(28-30)/30 \
3864 17 +(2000/3000)*(17-15)/15\
1998/1/7 2578 3 3000 33
2303 25 (1000/3000)*(25-30)/30 \
3864 13 +(2000/3000)*(13-15)/15\
1998/1/8 2578 3 3000 45
2303 23 (1000/3000)*(23-30)/30 \
3864 15 +(2000/3000)*(15-15)/15\
1998/1/9 2578 3 3000 48
2303 27 (1000/3000)*(27-30)/30 \
3864 18 +(2000/3000)*(18-15)/15\
1998/1/10 2578 2 3000 50
2303 24 (1000/3000)*(24-30)/30 \
3864 19 +(2000/3000)*(19-15)/15\
两个颇复杂的问题,想请版上的强者们帮忙!
拜托了 >"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234