1.华泰柏瑞沪深300ETF申购赎回清单
libname yugao "E:\yugao\work\htbr300ETF"; data yugao.ht120531; infile "Z:\300_0531.ETF" dlm="|" firstobs=15 obs=300 lrecl=1024; retain fundid fundname fundnum cashrep premise fixamount; length fundid $6 fundname $8 fundnum 4. cashrep $1 premise 7. fixamount 8.; input fundid fundname fundnum cashrep premise fixamount; Fundid1="510301"; CreationRedemptionUnit=900000; MaxCashRatio=0.30000; Publish="1"; CreationRedemption="1"; Recordnum=300; EstimateCashComponent=-17975.00; TradingDay="20120530"; PreTradingDay="20120529"; CashComponent=-17875.00; NAVperCU=2386394.00; NAV=2.652; label fundid="股票代码" fundname="股票名称" fundnum="股票数量" cashrep="现金替代标志" premise="现金替代溢价比例" fixamount="固定替代金额" Fundid1="一级市场基金代码" CreationRedemptionUnit="最小申购、赎回单位(单位:份)" MaxCashRatio="现金替代比例上限?" Publish="是否需要公布IOPV?" CreationRedemption="申购、赎回的允许情况?" Recordnum="申购数量" EstimateCashComponent="预估现金部分(单位:元) " TradingDay="交易日期" PreTradingDay="交易前一期" CashComponent="现金差额(单位:元) " NAVperCU="最小申购、赎回单位资产净值(单位:元)" NAV="基金份额净值(单位:元)"; run; proc compare base=yugao.ht120530 compare=yugao.ht120531; var fundnum; run; quit;
2.分红派息
关键词:除权价
data test; input fundid $6. fundnum spj xjhl sgl; label fundid = "股票代码" fundnum = "股票数量" spj = "收盘价" xjhl = "现金红利派息" sgl = "送股转股比率" ; cards; 600143 500 10.82 0.24 0.6 600123 200 48.45 0.49 1.0 600183 300 8.040 0.288 0.3 600276 300 26.12 0.008 0.1 002304 100 32.87 1.35 0.2 600528 300 8.22 0.09 0 600008 500 5.40 0.117 0 600026 300 5.89 0.09 0 600037 300 8.32 0.09 0 600518 700 12.67 0.045 0 600694 100 32.87 0.27 0 ;run; data test1; set test; if sgl^=0 then do; cqj=(spj-xjhl)/(1+sgl);end; else cqj=0; run; proc print data=test1;run; proc sql; create table test2 as select *, sum(xjhl*fundnum) as xjhl_tot, fundnum*(1+sgl) as fundnum_new from test1; quit; proc print data=test2;run;
3.沪深300与上证50点差计算
*从数据库读数据; libname base oledb provider=sqloledb properties=("data source" = "IP" "user id" = "用户" "password" = "密码" "initial catalog" = "数据库名"); *读取分时数据,沪深300和上证50; data a; set base.oneminsh000300; keep time close; run; data b; set base.oneminsz000016 (rename=(close=close1)); keep time close1; run; *合并两数据; proc sql; create table new as select * from a left join b on a.time=b.time; quit; *数据进行标准化; proc standard data=new mean=0 std=1 out=new1; var close close1; run; *计算差值; proc sql; create table new2 as select time, (close-close1) as _n_close from new1; quit; *作图; ods graphics on; proc timeseries data=sasuser.new2 out=need plot=(series); id time interval=minute accumulate=median; var _n_close; run; ods graphics off;
4.轮动情况
*读取中证500指数一天的分秒数据,计算5日均线 5日均线由前四天价格和该天实时价格平均所得; data timesellsz399905; set sasuser.timesellsz399905; m5_price=(14641.593+price)/5; run; *比较5日均线和改天实时数据的轮动情况,考察是否穿越,以判断 时候开仓平仓等交易行为; proc sgplot data=timesellsz399905; series x=time y=price; series x=time y=m5_price; run;
5.ETF与股指点差
*数据准备; data jiashi; set sasuser.jiashi_etf(rename=(open=open1 high=high1 low=low1 close=close1)); date=put(datepart(time),yymmdd10.); keep date open1 high1 low1 close1 amount; run; data hs300; set sasuser.hs300; date=put(datepart(time),yymmdd10.); keep date open high low close; if date>="2012-05-28"; run; data need; merge jiashi hs300 (in=a); by date; if a=1 then output; run; data need_1; set need; if _n_=1 then amount=open*300/open1; else amount=808389.90536; run; data need1; set need_1; dif_open=(amount*open1-300*open)/300; dif_high=(amount*high1-300*high)/300; dif_low= (amount*low1-300*low)/300; dif_close=(amount*close1-300*close)/300; keep date dif_open dif_high dif_low dif_close; run;