在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先判断股价的分布是不是正态分布:
#获取3m公司收盘价 mmmdata = read.csv("E:\\kuaipan\\A Introduction to Analysis of Financial Data with R\\chapter 1\\ch1data\\d-mmm-0111.txt",header = T) mmmprice = as.numeric(sapply(mmmdata, function(l){substring(l,15)})) #绘制频度直方图 hist(mmmprice, nclass = 35) #绘制密度图,并和同方差同均值的正态分布做比较 mmmprice.density=density(mmmprice) x=seq(-.1,.1,.001) # Create a sequence of x with increment 0.001. y1=dnorm(x,mean(mmmprice),sd(mmmprice)) plot(mmmprice.density$x,mmmprice.density$y,xlab='rtn',ylab='density',type='l') lines(x, y1, lty=2) legend(0.06,32,c('price','Norm'),lty = c(1,2)) #使用流行的qq图来与正态分布做比较 qqnorm(mmmprice) qqline(mmmprice) #ohlc analysis #ohlc means open highest lowest and close price library(quantmod) getSymbols("AAPL",from="2015-01-03",to="2015-09-30") chartSeries(AAPL) #the left protuberance means open price, the right one means close price barChart(AAPL,theme='white.mono',bar.type='ohlc') #最近n个price的均值的变化趋势——移动平均曲线 "ma" <- function(pri,n,plot=TRUE){ # pri: price series of an asset (univariate) # n: window size # nob=length(pri) ma1=pri range=max(pri)-min(pri) if(nob > n){ psum=sum(pri[1:(n-1)]) ma1[1:n]=psum/(n-1) for (i in n:nob){ psum=psum+pri[i] ma1[i]=psum/n psum=psum-pri[i-n+1] } } if(plot){ par(mfcol=c(1,1)) plot(pri,type='l',xlab="time index") lines(ma1,lty=2) loc=max(pri)-range/3 legend(n/2,loc,c(paste("n = ",c(n))),lty=2) title(main='Moving average plot') } ma <- list(ma=ma1) } ma(as.numeric(AAPL$AAPL.Close)) 下面这段代码可以用来对二元正态假设进行判断, 代码中对IBM 和 SP 的股价收益率进行了分析 分析手段1: 协方差矩阵 分析手段2: 用rmnorm函数生成了2元正态分布的变量, 对比了两个plot, 来得出ibm和sp的股价收益率不符合二元正态假设! da = read.table("E:\\kuaipan\\A Introduction to Analysis of Financial Data with R\\chapter 1\\ch1data\\m-ibmsp-2611.txt", header = T) ibm=log(da$ibm+1) # Transform to log returns sp=log(da$sp+1) tdx=c(1:nrow(da))/12+1926 # Create time index par(mfcol=c(2,1)) plot(tdx,ibm,xlab='year',ylab='lrtn',type='l') title(main='(a) IBM returns') plot(tdx,sp,xlab='year',ylab='lrtn',type='l') # X-axis first. title(main='(b) SP index') cor(ibm,sp) # Obtain sample correlation m1=lm(ibm~sp) # Fit the Market Model (linear model) summary(m1) plot(sp,ibm,cex=0.8) # Obtain scatter plot ablines(0.008,.807) # Add the linear regression line da = read.table("E:\\kuaipan\\A Introduction to Analysis of Financial Data with R\\chapter 1\\ch1data\\m-ibmsp-2611.txt", header = T) ibm = log(da$ibm + 1) sp = log(da$sp + 1) rt=cbind(ibm, sp) m1=apply(rt,2,mean) v1= cov(rt) #协方差, 判断两个维度的相关度 library(mnormt) x=rmnorm(1029,mean=m1,varcov=v1)#随机二元正态分布生成 plot(x[,2],x[,1],xlab='sim-sp',ylab='sim-ibm',cex=.8) |
请发表评论