[問題] SAS計算變數的問題
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