第一題
# 1
library(zoo)
##
## 載入套件:'zoo'
## 下列物件被遮斷自 'package:base':
##
## as.Date, as.Date.numeric
TAIFEX <- read.csv("C:/Users/88698/Downloads/f9112312.csv",
sep=",", stringsAsFactors =F, strip.white =
TRUE, header=T)
第二題
#2
TAIFEX <- TAIFEX[TAIFEX[, 10] != 0, ]
第三題
#3
FITX <- TAIFEX[TAIFEX$FUTR_ID == "FITX", ]
第四題
#4
table(FITX$SETT_YM)
##
## 200301 200302 200303 200306 200309
## 2393 278 57 74 45
summary(FITX$SETT_YM)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 200301 200301 200301 200301 200301 200309
FITX <- FITX[FITX$SETT_YM == "200301", ]
第五題
#5
Sys.setlocale(category = "LC_ALL", locale="English")
## Warning in Sys.setlocale(category = "LC_ALL", locale = "English"): using locale
## code page other than 65001 ("UTF-8") may cause problems
## [1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
td <- as.POSIXct(
paste(FITX$DATE, FITX$DEAK.HR, FITX$DEAK.Min, FITX$DEAK.Sec, sep=" "),
format = "%Y%m%d %H %M %S"
)
head(td)
## [1] "2002-12-31 08:45:09 CST" "2002-12-31 08:45:09 CST"
## [3] "2002-12-31 08:45:09 CST" "2002-12-31 08:45:32 CST"
## [5] "2002-12-31 08:45:40 CST" "2002-12-31 08:45:44 CST"
#unique_td <- td[!duplicated(td)]
#FITX.ts <- zoo(FITX[match(unique_td, td), -c(3:7)], unique_td)
library(zoo)
FITX.ts <- zoo(FITX[,-c(3:7)], td)
## Warning in zoo(FITX[, -c(3:7)], td): some methods for "zoo" objects do not work
## if the index entries in 'order.by' are not unique
head(FITX.ts)
## Warning in zoo(rval, index(x)[i]): some methods for "zoo" objects do not work
## if the index entries in 'order.by' are not unique
## FUTR_ID SETT_YM STRIKE PRC QTY BUY_P1 BUY_Q1 BUY_P2 BUY_Q2
## 2002-12-31 08:45:09 FITX 200301 0 4416 41 4415 1 4414 10
## 2002-12-31 08:45:09 FITX 200301 0 4416 41 4416 1 4415 1
## 2002-12-31 08:45:09 FITX 200301 0 4416 41 4416 1 4415 1
## 2002-12-31 08:45:32 FITX 200301 0 4417 2 4414 10 4412 12
## 2002-12-31 08:45:40 FITX 200301 0 4415 1 4414 10 4412 12
## 2002-12-31 08:45:44 FITX 200301 0 4416 1 4414 10 4412 12
## BUY_P3 BUY_Q3 BUY_P4 BUY_Q4 BUY_P5 BUY_Q5 SEL_P1 SEL_Q1
## 2002-12-31 08:45:09 4412 12 4411 7 4410 27 4417 3
## 2002-12-31 08:45:09 4414 10 4412 12 4411 7 4417 3
## 2002-12-31 08:45:09 4414 10 4412 12 4411 7 4417 3
## 2002-12-31 08:45:32 4411 7 4410 25 4409 2 4416 3
## 2002-12-31 08:45:40 4411 7 4410 25 4409 2 4416 2
## 2002-12-31 08:45:44 4411 7 4410 25 4409 2 4417 2
## SEL_P2 SEL_Q2 SEL_P3 SEL_Q3 SEL_P4 SEL_Q4 SEL_P5 SEL_Q5
## 2002-12-31 08:45:09 4423 8 4425 2 4426 2 4427 1
## 2002-12-31 08:45:09 4423 8 4425 2 4426 2 4427 1
## 2002-12-31 08:45:09 4422 2 4423 8 4425 2 4426 2
## 2002-12-31 08:45:32 4417 2 4422 2 4423 8 4424 1
## 2002-12-31 08:45:40 4417 2 4422 2 4423 8 4424 1
## 2002-12-31 08:45:44 4423 8 4424 1 4425 2 4426 2
## DEALQTY DEALBUY_N DEALSEL_N
## 2002-12-31 08:45:09 41 28 23
## 2002-12-31 08:45:09 41 28 23
## 2002-12-31 08:45:09 41 28 23
## 2002-12-31 08:45:32 45 31 26
## 2002-12-31 08:45:40 47 33 28
## 2002-12-31 08:45:44 49 35 30
第六題
#6
FITX.ts <- FITX.ts[!duplicated(time(FITX.ts)), ]
plot.ts(FITX.ts$PRC,
main = "Nearby Contracts of FITX",
col = "steelblue1",
ylab = "Trading Price",
xlab = "", las=0, cex=2
)

#7
library(highfrequency)
library(xts)
FITX.15min = aggregateTS(as.xts(FITX.ts), on="minutes", k=15)
dim(FITX.ts); dim(FITX.15min)
## [1] 1831 28
## [1] 302 28
plot.ts(FITX.15min$PRC)
