ss <- read.csv("~/Desktop/ss.endmonth.csv", header=FALSE)
# 导入数据,数据来源于谷歌(见下方链接)
# https://www.google.com/finance/historical?cid=7521596&startdate=Jan%2031%2C%202012&enddate=Dec%2031%2C%202014&num=30&gl=us&ei=X6AgVpGvNMLCiQLJt4LIBQ&start=690
#总共有36个观测值
ss
## V1 V2
## 1 1201 2292.61
## 2 1202 2428.49
## 3 1203 2262.79
## 4 1204 2396.32
## 5 1205 2372.23
## 6 1206 2225.43
## 7 1207 2103.63
## 8 1208 2047.52
## 9 1209 2086.17
## 10 1210 2068.88
## 11 1211 1980.12
## 12 1212 2269.13
## 13 1301 2385.42
## 14 1302 2365.59
## 15 1303 2236.62
## 16 1304 2177.91
## 17 1305 2300.59
## 18 1306 1979.21
## 19 1307 1993.80
## 20 1308 2098.38
## 21 1309 2174.66
## 22 1310 2141.61
## 23 1311 2220.50
## 24 1312 2115.98
## 25 1401 2033.08
## 26 1402 2056.30
## 27 1403 2033.31
## 28 1404 2026.36
## 29 1405 2039.21
## 30 1406 2048.33
## 31 1407 2201.56
## 32 1408 2217.20
## 33 1409 2363.87
## 34 1410 2420.18
## 35 1411 2682.83
## 36 1412 3234.68
r=c()
for (i in 2:36){
r[i]=(ss[i,2]-ss[i-1,2])/ss[i-1,2]
}
#计算涨跌幅r,其中r[1]为NA缺失值
r
## [1] NA 0.059268694 -0.068231700 0.059011221 -0.010052914
## [6] -0.061882701 -0.054730996 -0.026672942 0.018876494 -0.008287915
## [11] -0.042902440 0.145955801 0.051248716 -0.008313001 -0.054519169
## [16] -0.026249430 0.056329233 -0.139694600 0.007371628 0.052452603
## [21] 0.036351852 -0.015197778 0.036836772 -0.047070480 -0.039178064
## [26] 0.011421095 -0.011180275 -0.003418072 0.006341420 0.004472320
## [31] 0.074807282 0.007104053 0.066151001 0.023821107 0.108524986
## [36] 0.205696969
m=c()
for (i in 2:36){
if (r[i] > 0.01){
m[i]=1
}
else if (r[i]< -0.01){
m[i]=3
}
else
m[i]=2
}
#计算Markov链m,为了方便后续计算概率,将上涨记为1,持平记为2,下跌记为3
m
## [1] NA 1 3 1 3 3 3 3 1 2 3 1 1 2 3 3 1 3 2 1 1 3 1
## [24] 3 3 1 3 2 2 2 1 2 1 1 1 1
n1=matrix(nrow = 3,ncol = 3,data = c(0))
for (i in 2:36){
n1[m[i],m[i+1]]=n1[m[i],m[i+1]]+1
}
#计算市场状态一步转移的频数表n1
n1
## [,1] [,2] [,3]
## [1,] 5 3 6
## [2,] 3 2 2
## [3,] 6 2 5
n2<-n1
for (i in 1:3){
n2[i,]=n2[i,]/sum(n2[i,])
}
colnames(n2)<-c("rise","fair","fall")
rownames(n2)<-c("rise","fair","fall")
#计算一步转移概率矩阵n2,更改行列名称
n2
## rise fair fall
## rise 0.3571429 0.2142857 0.4285714
## fair 0.4285714 0.2857143 0.2857143
## fall 0.4615385 0.1538462 0.3846154