1. Đọc dữ liệu từ link google sheet
library(googlesheets4)
gs4_deauth()
df <- read_sheet("https://docs.google.com/spreadsheets/d/1qfALo1paROLI2iw_WO-jxOz_rpohInJxktRdQ7BwPcM/edit?usp=sharing")
## ✔ Reading from "TLG".
## ✔ Range 'TLG'.
  1. Lấy dữ liệu mã cổ phiếu mình cần, ví dụ: VNINDEX
df# xem toàn bộ dataframe
## # A tibble: 3,335 × 7
##    Date                Close  Open  High   Low Volume `%`      
##    <dttm>              <dbl> <dbl> <dbl> <dbl> <chr>  <list>   
##  1 2012-04-11 00:00:00  1882 1968. 2097. 1968. 0.39K  <dbl [1]>
##  2 2012-04-12 00:00:00  1927 2003. 2027. 2003. 5.18K  <chr [1]>
##  3 2012-04-13 00:00:00  1904 2027. 2027. 2003. 16.21K <dbl [1]>
##  4 2012-04-16 00:00:00  1904 2003. 2003. 1980. 1.12K  <dbl [1]>
##  5 2012-04-17 00:00:00  1927 2062  2062  2015. 1.07K  <chr [1]>
##  6 2012-04-18 00:00:00  1927 2027. 2027. 2027. 0.63K  <dbl [1]>
##  7 2012-04-19 00:00:00  1938 2038. 2038. 2038. 1.37K  <chr [1]>
##  8 2012-04-20 00:00:00  1949 2027. 2050. 2027. 0.15K  <chr [1]>
##  9 2012-04-23 00:00:00  1904 2062  2062  2003. 2.34K  <dbl [1]>
## 10 2012-04-24 00:00:00  1893 1991. 1991. 1991. 0.05K  <dbl [1]>
## # ℹ 3,325 more rows
TLG <- df[, c("Date", "Close")]
TLG # xem dataframe TLG
## # A tibble: 3,335 × 2
##    Date                Close
##    <dttm>              <dbl>
##  1 2012-04-11 00:00:00  1882
##  2 2012-04-12 00:00:00  1927
##  3 2012-04-13 00:00:00  1904
##  4 2012-04-16 00:00:00  1904
##  5 2012-04-17 00:00:00  1927
##  6 2012-04-18 00:00:00  1927
##  7 2012-04-19 00:00:00  1938
##  8 2012-04-20 00:00:00  1949
##  9 2012-04-23 00:00:00  1904
## 10 2012-04-24 00:00:00  1893
## # ℹ 3,325 more rows
  1. Kiểm tra dữ liệu
str(TLG) 
## tibble [3,335 × 2] (S3: tbl_df/tbl/data.frame)
##  $ Date : POSIXct[1:3335], format: "2012-04-11" "2012-04-12" ...
##  $ Close: num [1:3335] 1882 1927 1904 1904 1927 ...
head(TLG)
## # A tibble: 6 × 2
##   Date                Close
##   <dttm>              <dbl>
## 1 2012-04-11 00:00:00  1882
## 2 2012-04-12 00:00:00  1927
## 3 2012-04-13 00:00:00  1904
## 4 2012-04-16 00:00:00  1904
## 5 2012-04-17 00:00:00  1927
## 6 2012-04-18 00:00:00  1927
tail(TLG)
## # A tibble: 6 × 2
##   Date                Close
##   <dttm>              <dbl>
## 1 2026-05-15 00:00:00 50000
## 2 2026-05-18 00:00:00 49800
## 3 2026-05-19 00:00:00 49800
## 4 2026-05-20 00:00:00 49700
## 5 2026-05-21 00:00:00 49200
## 6 2026-05-22 00:00:00 49100
summary(TLG)
##       Date                         Close      
##  Min.   :2012-04-11 00:00:00   Min.   : 1882  
##  1st Qu.:2015-09-16 12:00:00   1st Qu.:14372  
##  Median :2019-04-23 00:00:00   Median :29162  
##  Mean   :2019-05-03 01:14:16   Mean   :26638  
##  3rd Qu.:2022-12-27 12:00:00   3rd Qu.:37372  
##  Max.   :2026-05-22 00:00:00   Max.   :58800

4.1. Thống kê mô tả dữ liệu giá chứng khoán

library(fBasics)
basicStats(TLG$Close)
##              X..TLG.Close
## nobs         3.335000e+03
## NAs          0.000000e+00
## Minimum      1.882000e+03
## Maximum      5.880000e+04
## 1. Quartile  1.437200e+04
## 3. Quartile  3.737200e+04
## Mean         2.663769e+04
## Median       2.916200e+04
## Sum          8.883668e+07
## SE Mean      2.452283e+02
## LCL Mean     2.615687e+04
## UCL Mean     2.711850e+04
## Variance     2.005567e+08
## Stdev        1.416180e+04
## Skewness    -2.064410e-01
## Kurtosis    -9.327620e-01

4.2. Thống kê mô tả dữ liệu return của giá chứng khoán

return_TLG <- diff(log(TLG$Close)) # chuyển giá thành return
head(return_TLG) # xem 6 giá trị đầu 
## [1]  0.023629348 -0.012007453  0.000000000  0.012007453  0.000000000
## [6]  0.005692124
tail(return_TLG)
## [1] -0.003992021 -0.004008021  0.000000000 -0.002010051 -0.010111310
## [6] -0.002034589
library(fBasics)
basicStats(return_TLG)
##              return_TLG
## nobs        3334.000000
## NAs            0.000000
## Minimum       -0.072576
## Maximum        0.090144
## 1. Quartile   -0.009128
## 3. Quartile    0.010509
## Mean           0.000978
## Median         0.000000
## Sum            3.261524
## SE Mean        0.000403
## LCL Mean       0.000188
## UCL Mean       0.001768
## Variance       0.000541
## Stdev          0.023266
## Skewness       0.077756
## Kurtosis       1.666157
summary(return_TLG)
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -0.0725758 -0.0091281  0.0000000  0.0009783  0.0105094  0.0901441

5.1. Vẽ đồ thị và hàm mật độ giá chứng khoán

ts.plot(TLG$Close)

plot(TLG)

plot(TLG, type = 'l') # hoặc gõ plot(vn$Date, vn$VNINDEX, type = "l")

d1 = density(TLG$Close)
plot(d1, type = "l")

5.2. Vẽ đồ thị và hàm mật độ return của giá chứng khoán

ts.plot(return_TLG)

plot(return_TLG)

plot(TLG$Date[-1], return_TLG, type = 'l')

hist(return_TLG)

d2 = density(return_TLG)
plot(d2, type = "l")