zoukankan      html  css  js  c++  java
  • R语言 股价分析

    首先判断股价的分布是不是正态分布:

    #获取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)


  • 相关阅读:
    2.MYSQL之初体验
    nginx+uWSGI+django+virtualenv+supervisor
    静态动态网页
    web server 基础知识
    nginx与location语法详解
    编译安装nginx
    虚拟环境之virtualenvwrapper
    python开发之virtualenv
    【剑指Offer】面试题12. 矩阵中的路径
    【剑指Offer】面试题11. 旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/rav009/p/5131071.html
Copyright © 2011-2022 走看看