源自:https://bbs.pinggu.org/thread-3622067-1-1.html
基础准备1:
## strptime的一些实例:用于时间字符串的转换
dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")
x <- paste(dates, times)
strptime(x, "%m/%d/%y %H:%M:%S")
# The answer
# [1] "1992-02-27 23:03:20" "1992-02-27 22:29:56"
# [3] "1992-01-14 01:03:30" "1992-02-28 18:21:03"
# [5] "1992-02-01 16:56:26"
strptime(c("2006-01-08 10:07:52", "2006-08-07 19:33:02"),"%Y-%m-%d %H:%M:%S")
# 以上得到了相同的结果
# [1] "2006-01-08 10:07:52" "2006-08-07 19:33:02"
strptime(c("2006:01:08 10:07:52", "2006:08:07 19:33:02"),"%Y:%m:%d %H:%M:%S")
# [1] "2006-01-08 10:07:52" "2006-08-07 19:33:02"
strptime(c("06:01:08 10:07:52", "06:08:07 19:33:02"),"%y:%m:%d %H:%M:%S")
# [1] "2006-01-08 10:07:52" "2006-08-07 19:33:02"
strptime(c("06?01?08 10:07:52", "98?08?07 19:33:02"),"%y?%m?%d %H:%M:%S")
# [1] "2006-01-08 10:07:52" "1998-08-07 19:33:02"
##################################################################
##################################################################
基础准备2
# as.POSIXlt用于得到区域的日期时间或者把时间撮数据转成POSIXlt类别
Sys.time()
# [1] "2015-03-20 12:57:38 CST"
as.POSIXlt(Sys.time(), "EST" )
# "2015-03-19 23:57:59 EST"
as.POSIXlt(Sys.time(), "GMT")
# [1] "2015-03-20 04:58:08 GMT"
as.POSIXlt(Sys.time(), "America/New_York")
# [1] "2015-03-20 01:00:04 EDT"
z <- 1472562988
as.POSIXct(z, origin = "1960-01-01")
# [1] "2006-08-30 21:16:28 CST"
as.POSIXlt(strptime(c("06?01?08 10:07:52", "98?08?07 19:33:02"),"%y?%m?%d %H:%M:%S"))
# [1] "2006-01-08 10:07:52" "1998-08-07 19:33:02"
##################################################################
##################################################################
实例
数据:
本帖隐藏的内容
- # 代码实例
- rm(list=ls())
- setwd("D:/MyDriversRoad/R_files12")
- # 设定我自己的R语言工作目录
- # 下面有数据
- Data<-read.csv(file='HS300_240minuete.csv', header=TRUE, col.names=c("Date","Tick"))
- # 查看数据
- View(Data)
- Data$Date<-as.POSIXlt(strptime(Data$Date,"%Y/%m/%d %H:%M"))
- # 注意举例中的数据没有分钟(Seconds)
- # 获取对数收益率(Log Return)
- # LogReturn(t)=log(Stock(t)/Stock(t-1))=log(Stock(t))-log(Stock(t-1))
- logtick<-diff(log(Data$Tick))
- # 获取标准化的对数收益率(对数据进行标准化)
- logtick <- (logtick-mean(logtick))/sd(logtick)
- # seq制造等差数列:以floor(min(logtick))为初值,以ceiling(max(logtick))为终值,0.01为间隔
- x <- seq(floor(min(logtick)), ceiling(max(logtick)), by=0.01)
- # 画图
- par(family='serif')
- # density(logtick)得到对数收益率的核密度,log="y"意味着y轴进行对数化
- plot(density(logtick), log="y", xlab="", ylab="", axes=FALSE, main="Log Scale")
- # dnorm(x)求得的是x正态分布的密度
- lines(x,dnorm(x), lty=2)
- # 一个是实际的收益密度,一个是理论的收益密度,lty代表线型
- legend("topleft", legend=c("Empirical","Theoretical"), lty=c(1,2))
##################################################################
##################################################################
# 代码实例
rm(list=ls())
setwd("D:/MyDriversRoad/R_files12")
# 设定我自己的R语言工作目录
# 下面有数据
Data<-read.csv(file='HS300_240minuete.csv', header=TRUE, col.names=c("Date","Tick"))
# 查看数据
View(Data)
Data$Date<-as.POSIXlt(strptime(Data$Date,"%Y/%m/%d %H:%M"))
# 注意举例中的数据没有分钟(Seconds)
# 获取对数收益率(Log Return)
# LogReturn(t)=log(Stock(t)/Stock(t-1))=log(Stock(t))-log(Stock(t-1))
logtick<-diff(log(Data$Tick))
# 获取标准化的对数收益率(对数据进行标准化)
logtick <- (logtick-mean(logtick))/sd(logtick)
# seq制造等差数列:以floor(min(logtick))为初值,以ceiling(max(logtick))为终值,0.01为间隔
x <- seq(floor(min(logtick)), ceiling(max(logtick)), by=0.01)
# 画图
par(family='serif')
# density(logtick)得到对数收益率的核密度,log="y"意味着y轴进行对数化
plot(density(logtick), log="y", xlab="", ylab="", axes=FALSE, main="Log Scale")
# dnorm(x)求得的是x正态分布的密度
lines(x,dnorm(x), lty=2)
# 一个是实际的收益密度,一个是理论的收益密度,lty代表线型
legend("topleft", legend=c("Empirical","Theoretical"), lty=c(1,2))
# 此目的在于比较股票的对数收益率是否能够拟合正态分布
# 或者说股票的对数收益率是否服从正态分布
# 此目的在于比较股票的对数收益率是否能够拟合正态分布
# 或者说股票的对数收益率是否服从正态分布