sel_month <- as.Date("2020-12-01") # 50 largest stocks selected in this month
win_start <- as.Date("2018-01-01")
win_end <- as.Date("2020-12-01") # 36-month window
n_top <- 50
# OPTIONAL: TEJ stock file(s) with stock code, date, monthly return, market value.
# Put the file next to this .Rmd (or give the full path). Leave NULL if you have none yet.
stock_files <- NULL # e.g. c("tej_stock_2017_2025.xlsx")
TOP50__2018-2025.xlsx)The factor data from your uploaded file is built into this document, so no file path is needed. Values are in percent (TEJ), converted to decimals below.
ff3_raw <- tibble::tribble(
~Date, ~Mkt, ~SMB, ~HML, ~Rf,
201812, -1.6912, 1.3346, -2.1142, 1.045,
201901, 1.9631, 0.0341, 0.0837, 1.045,
201902, 4.4682, 0.3841, -2.012, 1.045,
201903, 2.3039, 0.4998, -1.4823, 1.045,
201904, 2.9774, -2.034, 0.2454, 1.045,
201905, -4.3307, 1.5714, 2.2665, 1.045,
201906, 3.1907, -1.3933, -0.7903, 1.045,
201907, 2.9402, 1.402, 0.9882, 1.045,
201908, -1.2756, 2.2032, -1.1659, 1.045,
201909, 2.1216, -1.4567, -0.9756, 1.045,
201910, 4.7426, -2.254, -1.3045, 1.045,
201911, 1.0799, -1.9401, 3.4893, 1.045,
201912, 4.476, -0.8082, -1.5641, 1.045,
202001, -4.3368, -0.8064, -0.2487, 1.045,
202002, -1.8544, -0.076, -0.3514, 1.045,
202003, -13.8962, -2.2179, -2.3226, 0.795,
202004, 13.1776, 5.9529, 1.9246, 0.795,
202005, -0.5231, 5.5189, -0.3267, 0.795,
202006, 6.7265, 0.3759, 1.6339, 0.795,
202007, 10.5466, -5.4945, -6.6159, 0.795,
202008, -0.0977, 5.5599, 7.6317, 0.795,
202009, -0.394, -0.3002, 0.6311, 0.795,
202010, 0.2043, 0.4993, 2.5335, 0.795,
202011, 9.3275, -0.2675, 0.9808, 0.795,
202012, 7.4394, -3.1343, 2.533, 0.795,
202101, 2.609, -6.6254, -8.8644, 0.795,
202102, 5.3468, 3.8544, 2.6764, 0.795,
202103, 3.0917, 2.7548, 6.0862, 0.795,
202104, 7.0657, -0.1155, 18.3558, 0.795,
202105, -2.8645, -5.8574, 0.3184, 0.795,
202106, 4.3, 4.1065, 6.7649, 0.795,
202107, -2.0646, 2.5151, 0.7242, 0.795,
202108, 2.2434, -5.0198, 0.8207, 0.795,
202109, -2.935, 1.1358, 2.4129, 0.795,
202110, 0.1504, 1.5618, 0.0795, 0.795,
202111, 2.4868, 1.9208, -0.9342, 0.795,
202112, 4.6015, 1.1576, -0.9394, 0.795,
202201, -2.91, -5.0122, -0.2106, 0.795,
202202, -0.0653, 1.5479, 1.4452, 0.795,
202203, 0.3769, -0.1847, 2.5816, 1.045,
202204, -6.2044, 1.0733, 1.7546, 1.045,
202205, 1.1295, 1.691, -3.8868, 1.045,
202206, -10.378, 3.5363, 3.3743, 1.2,
202207, 2.9838, 0.4935, -2.7401, 1.2,
202208, 1.0578, 5.7463, 1.3848, 1.2,
202209, -10.8649, 0.1011, 4.9374, 1.325,
202210, -3.5537, -0.8461, 1.6877, 1.325,
202211, 14.7201, -2.146, -7.1873, 1.325,
202212, -4.9165, 2.9072, 1.853, 1.45,
202301, 7.782, -2.3922, -5.4326, 1.45,
202302, 1.4299, 4.8504, -1.2716, 1.45,
202303, 2.4791, 1.9839, -3.7971, 1.575,
202304, -1.865, 2.6621, 2.2804, 1.575,
202305, 6.3721, -2.3795, -2.189, 1.575,
202306, 3.342, 1.4255, -0.7202, 1.575,
202307, 2.2632, -3.8691, 3.829, 1.575,
202308, -2.7053, 1.2205, 0.8909, 1.575,
202309, -1.5878, 1.8801, 1.8718, 1.575,
202310, -2.2733, 0.6754, -0.3085, 1.575,
202311, 8.7955, 0.4628, -0.4597, 1.575,
202312, 2.8933, -2.3574, 1.282, 1.575,
202401, -0.2977, -0.1365, -2.0605, 1.575,
202402, 5.8546, 2.0636, -3.9557, 1.575,
202403, 7.1463, -7.9988, 3.5737, 1.7,
202404, 0.4211, 2.6175, 5.5349, 1.7,
202405, 3.6518, 1.4309, 2.859, 1.7,
202406, 9.061, -4.5677, -3.416, 1.7,
202407, -2.7868, 1.276, 4.0775, 1.7,
202408, 0.4629, 1.4047, -2.3261, 1.7,
202409, -0.1467, 0.0656, 0.9326, 1.7,
202410, 2.5532, -3.8195, -2.6079, 1.7,
202411, -2.5685, 0.2519, 0.003, 1.7,
202412, 3.4963, -1.025, -8.139, 1.7,
202501, 1.9739, -3.3194, -2.2618, 1.7,
202502, -2.2123, 4.9412, 4.4022, 1.7,
202503, -10.1131, -0.9996, 3.9881, 1.7,
202504, -2.3014, -2.1569, -2.2312, 1.7,
202505, 5.3773, -2.8071, -0.6949, 1.7,
202506, 4.9776, -4.8906, -4.6067, 1.7,
202507, 6.7898, -3.2908, -2.1778, 1.7,
202508, 3.0178, 3.9158, -3.1657, 1.7,
202509, 6.6635, -7.2084, -1.0908, 1.7,
202510, 9.2301, -9.2126, -1.4514, 1.7,
202511, -2.2515, 0.0901, 5.3439, 1.7,
202512, 4.8698, -0.2322, 0.8177, 1.7
)
ff3 <- ff3_raw %>%
mutate(month = ymd(paste0(Date, "01")),
across(c(Mkt, SMB, HML, Rf), ~ .x / 100)) %>%
select(month, Mkt, SMB, HML, Rf)
cat("Factor months available:", format(min(ff3$month), "%Y/%m"), "to",
format(max(ff3$month), "%Y/%m"), "(", nrow(ff3), "months )\n")
## Factor months available: 2018/12 to 2025/12 ( 85 months )
Note: the uploaded factor file starts in 2018/12, so
2018/01-2018/11 have no factor values (shown as NA).
Re-download the TEJ factors from 2018/01 to fill them.
read_any <- function(path) {
if (grepl("\\.csv$", path, ignore.case = TRUE)) read_csv(path, show_col_types = FALSE)
else read_excel(path)
}
to_month <- function(x) {
if (inherits(x, "POSIXt") || inherits(x, "Date")) return(floor_date(as.Date(x), "month"))
ymd(paste0(substr(gsub("[^0-9]", "", as.character(x)), 1, 6), "01"))
}
find_col <- function(df, pattern) {
hit <- names(df)[str_detect(names(df), regex(pattern, ignore_case = TRUE))]
if (length(hit)) hit[1] else NA_character_
}
auto_scale <- function(x) if (median(abs(x), na.rm = TRUE) > 0.2) x / 100 else x
pick1 <- function(x) { x <- x[!is.na(x)]; if (length(x)) x[1] else NA_real_ }
have_stock <- !is.null(stock_files) && all(file.exists(stock_files))
if (have_stock) {
read_stock <- function(f) {
d <- read_any(f)
c_id <- find_col(d, "^coid$|co_id|stock.?id|code|\u4ee3\u78bc|\u516c\u53f8")
c_dt <- find_col(d, "date|mdate|\u5e74\u6708|\u65e5\u671f")
c_ret <- find_col(d, "^ret|return|roi|\u5831\u916c")
c_mv <- find_col(d, "market.?value|^mv|\u5e02\u503c")
cat(f, "->", paste(c(id = c_id, date = c_dt, ret = c_ret, mv = c_mv), collapse = " | "), "\n")
tibble(id = trimws(as.character(d[[c_id]])), month = to_month(d[[c_dt]]),
ret = if (is.na(c_ret)) NA_real_ else suppressWarnings(as.numeric(d[[c_ret]])),
mv = if (is.na(c_mv)) NA_real_ else suppressWarnings(as.numeric(d[[c_mv]])))
}
stock <- bind_rows(lapply(stock_files, read_stock)) %>%
filter(!is.na(id), !is.na(month), !str_detect(id, "^Y9999")) %>%
group_by(id, month) %>% summarise(ret = pick1(ret), mv = pick1(mv), .groups = "drop") %>%
mutate(ret = auto_scale(ret))
cat("Stock data:", format(min(stock$month), "%Y/%m"), "to", format(max(stock$month), "%Y/%m"), "\n")
} else {
stock <- tibble(id = character(), month = as.Date(character()), ret = numeric(), mv = numeric())
cat("NO STOCK FILE SUPPLIED: stock columns below are placeholders (NA).\n",
"Set `stock_files` in section 1 once you have the TEJ stock data.\n")
}
## NO STOCK FILE SUPPLIED: stock columns below are placeholders (NA).
## Set `stock_files` in section 1 once you have the TEJ stock data.
top50_by_month <- stock %>%
filter(month >= as.Date("2017-11-01"), month <= as.Date("2025-12-01"), !is.na(mv)) %>%
group_by(month) %>% slice_max(mv, n = n_top, with_ties = FALSE) %>%
mutate(rank = row_number()) %>% ungroup() %>% arrange(month, rank)
if (nrow(top50_by_month) > 0) {
write_csv(top50_by_month, "top50_by_month.csv")
head(top50_by_month, 10)
} else cat("Not available yet (needs the stock file).")
## Not available yet (needs the stock file).
top50_sel <- top50_by_month %>% filter(month == sel_month) %>% pull(id)
if (length(top50_sel) == 0) top50_sel <- paste0("stock", 1:n_top) # placeholder names
stock_map <- tibble(Name = paste0("stock", seq_along(top50_sel)), `TEJ code` = top50_sel)
months <- tibble(month = seq(win_start, win_end, by = "month"))
ret_wide <- stock %>%
filter(id %in% top50_sel, month >= win_start, month <= win_end) %>%
select(month, id, ret) %>% pivot_wider(names_from = id, values_from = ret)
for (i in setdiff(top50_sel, names(ret_wide))) ret_wide[[i]] <- NA_real_
ret_wide <- months %>% left_join(ret_wide, by = "month") %>% select(month, all_of(top50_sel))
names(ret_wide)[-1] <- stock_map$Name
window1 <- ret_wide %>%
left_join(ff3 %>% select(month, Mkt, SMB, HML), by = "month") %>%
mutate(Date = format(month, "%Y/%m")) %>%
select(Date, starts_with("stock"), Mkt, SMB, HML)
cat("Table size:", nrow(window1), "rows x", ncol(window1), "columns\n")
## Table size: 36 rows x 54 columns
cat("Months with factor values:", sum(!is.na(window1$Mkt)), "of 36\n")
## Months with factor values: 25 of 36
excerpt <- window1 %>%
select(Date, stock1, stock2, stock50, Mkt, SMB, HML) %>%
mutate(across(-Date, ~ ifelse(is.na(.x), "NA", sprintf("%.4f", .x))))
dots <- excerpt[1, ]; dots[1, ] <- "..."
bind_rows(excerpt[1:3, ], dots, excerpt[34:36, ]) %>%
rename(`stock 1` = stock1, `stock 2` = stock2, `stock 50` = stock50) %>%
kable(align = "c", caption = "First window: stock returns and FF3 factors (decimals)") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "bordered"))
| Date | stock 1 | stock 2 | stock 50 | Mkt | SMB | HML |
|---|---|---|---|---|---|---|
| 2018/01 | NA | NA | NA | NA | NA | NA |
| 2018/02 | NA | NA | NA | NA | NA | NA |
| 2018/03 | NA | NA | NA | NA | NA | NA |
| … | … | … | … | … | … | … |
| 2020/10 | NA | NA | NA | 0.0020 | 0.0050 | 0.0253 |
| 2020/11 | NA | NA | NA | 0.0933 | -0.0027 | 0.0098 |
| 2020/12 | NA | NA | NA | 0.0744 | -0.0313 | 0.0253 |
window1 %>%
kable(digits = 4, caption = "50 largest stocks (selected 2020/12) + Mkt, SMB, HML") %>%
kable_styling(font_size = 10, bootstrap_options = c("striped", "condensed")) %>%
scroll_box(width = "100%", height = "500px")
| Date | stock1 | stock2 | stock3 | stock4 | stock5 | stock6 | stock7 | stock8 | stock9 | stock10 | stock11 | stock12 | stock13 | stock14 | stock15 | stock16 | stock17 | stock18 | stock19 | stock20 | stock21 | stock22 | stock23 | stock24 | stock25 | stock26 | stock27 | stock28 | stock29 | stock30 | stock31 | stock32 | stock33 | stock34 | stock35 | stock36 | stock37 | stock38 | stock39 | stock40 | stock41 | stock42 | stock43 | stock44 | stock45 | stock46 | stock47 | stock48 | stock49 | stock50 | Mkt | SMB | HML |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2018/01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/02 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/03 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/04 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/05 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/06 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/07 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/08 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/09 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/10 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/11 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 2018/12 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0169 | 0.0133 | -0.0211 |
| 2019/01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0196 | 0.0003 | 0.0008 |
| 2019/02 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0447 | 0.0038 | -0.0201 |
| 2019/03 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0230 | 0.0050 | -0.0148 |
| 2019/04 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0298 | -0.0203 | 0.0025 |
| 2019/05 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0433 | 0.0157 | 0.0227 |
| 2019/06 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0319 | -0.0139 | -0.0079 |
| 2019/07 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0294 | 0.0140 | 0.0099 |
| 2019/08 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0128 | 0.0220 | -0.0117 |
| 2019/09 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0212 | -0.0146 | -0.0098 |
| 2019/10 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0474 | -0.0225 | -0.0130 |
| 2019/11 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0108 | -0.0194 | 0.0349 |
| 2019/12 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0448 | -0.0081 | -0.0156 |
| 2020/01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0434 | -0.0081 | -0.0025 |
| 2020/02 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0185 | -0.0008 | -0.0035 |
| 2020/03 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.1390 | -0.0222 | -0.0232 |
| 2020/04 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.1318 | 0.0595 | 0.0192 |
| 2020/05 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0052 | 0.0552 | -0.0033 |
| 2020/06 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0673 | 0.0038 | 0.0163 |
| 2020/07 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.1055 | -0.0549 | -0.0662 |
| 2020/08 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0010 | 0.0556 | 0.0763 |
| 2020/09 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | -0.0039 | -0.0030 | 0.0063 |
| 2020/10 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0020 | 0.0050 | 0.0253 |
| 2020/11 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0933 | -0.0027 | 0.0098 |
| 2020/12 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.0744 | -0.0313 | 0.0253 |
kable(stock_map) %>% kable_styling(full_width = FALSE)
| Name | TEJ code |
|---|---|
| stock1 | stock1 |
| stock2 | stock2 |
| stock3 | stock3 |
| stock4 | stock4 |
| stock5 | stock5 |
| stock6 | stock6 |
| stock7 | stock7 |
| stock8 | stock8 |
| stock9 | stock9 |
| stock10 | stock10 |
| stock11 | stock11 |
| stock12 | stock12 |
| stock13 | stock13 |
| stock14 | stock14 |
| stock15 | stock15 |
| stock16 | stock16 |
| stock17 | stock17 |
| stock18 | stock18 |
| stock19 | stock19 |
| stock20 | stock20 |
| stock21 | stock21 |
| stock22 | stock22 |
| stock23 | stock23 |
| stock24 | stock24 |
| stock25 | stock25 |
| stock26 | stock26 |
| stock27 | stock27 |
| stock28 | stock28 |
| stock29 | stock29 |
| stock30 | stock30 |
| stock31 | stock31 |
| stock32 | stock32 |
| stock33 | stock33 |
| stock34 | stock34 |
| stock35 | stock35 |
| stock36 | stock36 |
| stock37 | stock37 |
| stock38 | stock38 |
| stock39 | stock39 |
| stock40 | stock40 |
| stock41 | stock41 |
| stock42 | stock42 |
| stock43 | stock43 |
| stock44 | stock44 |
| stock45 | stock45 |
| stock46 | stock46 |
| stock47 | stock47 |
| stock48 | stock48 |
| stock49 | stock49 |
| stock50 | stock50 |