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)


  • 相关阅读:
    基础总结深入:数据类型的分类和判断(数据、内存、变量) 对象 函数 回调函数 IIFE 函数中的this 分号
    BOM 定时器 通过修改元素的类来改变css JSON
    事件 事件的冒泡 事件的委派 事件的绑定 事件的传播
    DOM修改 使用DOM操作CSS
    包装类 Date Math 字符串的相关的方法 正则表达式 DOM DOM查询
    数组 call()、apply()、bind()的使用 this arguments
    autocad 二次开发 最小包围圆算法
    win10 objectarx向导在 vs2015中不起作用的解决办法
    AutoCad 二次开发 jig操作之标注跟随线移动
    AutoCad 二次开发 文字镜像
  • 原文地址:https://www.cnblogs.com/rav009/p/5131071.html
Copyright © 2011-2022 走看看