1. Data profile

The clean database has five tables in data/. The first table gives the row count, date range and number of distinct tickers of each table. The tables after it give the percent of missing values in every column.

table rows distinct tickers date range
company 139 139 list_date: 1962-02-09 to 2025-11-27; delist_date: Inf to -Inf
universe_q 2,000 139 quarter_end: 2020-12-31 to 2025-09-30
price_daily 165,930 139 date: 2021-01-04 to 2025-12-31
financials_q 3,559 139 period_end: 2019-09-30 to 2025-12-31; public_date: 2019-11-14 to 2026-03-31
index_daily 1,459 NA date: 2020-01-02 to 2025-12-31

company

column percent missing
ticker 0.00
name 0.72
industry 0.00
list_date 0.00
delist_date 100.00

universe_q

column percent missing
ticker 0
quarter_end 0
mktcap 0
rank 0

price_daily

column percent missing
ticker 0
date 0
adj_close 0
close_unadj 0
volume 0
shares 0
mktcap 0

financials_q

column percent missing
ticker 0
period_end 0
assets 0
liabilities 0
equity 0
ni_parent 0
revenue 100
public_date 0

index_daily

column percent missing
date 0
taiex_close 0

Comment. All key columns are complete (no missing tickers or dates), and every table has one row per primary key. The column company.delist_date, financials_q.revenue is entirely missing because it was not part of the TEJ download. Among the other columns the highest share of missing values is 0.72% in company.name.

2. Queries

Q1. Stocks with at least 12 months of price data, by industry

industry n_stocks_total n_stocks_12m
M2324 23 23
M2800 16 16
M2325 15 15
M2328 15 15
M2600 8 8
M2331 7 7
M1500 6 6
M1722 5 5
M2326 4 4
M2327 4 4
M3700 4 4
M1200 3 3
M1300 3 3
M2000 3 3
M2200 3 3
M2329 3 3
M9900 3 3
M1100 2 2
M1400 2 2
M2900 2 2
M1600 1 1
M1800 1 1
M1900 1 1
M2100 1 1
M2500 1 1
M3600 1 1
M3800 1 1
M9700 1 1

Comment. 139 of the 139 companies have at least 12 months of prices; the largest industry group is M2324 with 23 stocks. Every company has a full year or more of prices.

Q2. Entries and exits of the top 100 by quarter-end

quarter_end prev_quarter_end n_stocks entered left turnover_pct
2020-12-31 NA 100 NA NA NA
2021-03-31 2020-12-31 100 4 4 4
2021-06-30 2021-03-31 100 10 10 10
2021-09-30 2021-06-30 100 6 6 6
2021-12-31 2021-09-30 100 4 4 4
2022-03-31 2021-12-31 100 6 6 6
2022-06-30 2022-03-31 100 7 7 7
2022-09-30 2022-06-30 100 7 7 7
2022-12-31 2022-09-30 100 3 3 3
2023-03-31 2022-12-31 100 5 5 5
2023-06-30 2023-03-31 100 5 5 5
2023-09-30 2023-06-30 100 6 6 6
2023-12-31 2023-09-30 100 3 3 3
2024-03-31 2023-12-31 100 5 5 5
2024-06-30 2024-03-31 100 3 3 3
2024-09-30 2024-06-30 100 3 3 3
2024-12-31 2024-09-30 100 5 5 5
2025-03-31 2024-12-31 100 4 4 4
2025-06-30 2025-03-31 100 4 4 4
2025-09-30 2025-06-30 100 4 4 4

Comment. On average 4.9 stocks entered and 4.9 left the top 100 each quarter, so about 4.9% of the list changes per quarter. Turnover was highest at 2021-06-30 with 10 entrants; the first quarter-end has no previous quarter to compare with.

Q3. Monthly returns for every stock-month

ticker month month_end px_date adj_close ret
1101 2021-01-01 2021-01-31 2021-01-29 29.6251 NA
1101 2021-02-01 2021-02-28 2021-02-26 30.9902 0.0461
1101 2021-03-01 2021-03-31 2021-03-31 34.5319 0.1143
1101 2021-04-01 2021-04-30 2021-04-29 38.4426 0.1132
1101 2021-05-01 2021-05-31 2021-05-31 38.0736 -0.0096
1101 2021-06-01 2021-06-30 2021-06-30 37.6309 -0.0116
1101 2021-07-01 2021-07-31 2021-07-30 38.8115 0.0314
1101 2021-08-01 2021-08-31 2021-08-31 38.2735 -0.0139
1101 2021-09-01 2021-09-30 2021-09-30 40.2879 0.0526
1101 2021-10-01 2021-10-31 2021-10-29 38.1155 -0.0539
1101 2021-11-01 2021-11-30 2021-11-30 36.3381 -0.0466
1101 2021-12-01 2021-12-31 2021-12-30 37.9180 0.0435
1101 2022-01-01 2022-01-31 2022-01-26 37.0095 -0.0240
1101 2022-02-01 2022-02-28 2022-02-25 37.4045 0.0107
1101 2022-03-01 2022-03-31 2022-03-31 39.4189 0.0539

(first 15 of 8,203 rows; the full table is output/q3_monthly_returns.csv)

Comment. There are 8,203 stock-months, of which 8,064 have a return; the others are the first month of each stock’s history (including January 2021, because prices start in January 2021) or months after a missing month. The mean monthly return is 1.75%, the median is 0.70%, and 5 returns exceed +100%.

Q4. Average monthly return and volatility by industry

industry n_stocks n_stock_months mean_monthly_ret sd_monthly_ret
M1722 5 226 0.0543 0.2325
M2600 8 472 0.0316 0.1737
M2328 15 883 0.0265 0.1257
M1800 1 59 0.0254 0.1594
M1500 6 354 0.0234 0.1288
M2325 15 885 0.0227 0.1082
M1600 1 59 0.0223 0.1382
M2331 7 413 0.0200 0.1063
M2329 3 177 0.0183 0.0883
M2324 23 1,291 0.0181 0.1334
M2800 16 944 0.0153 0.0486
M2327 4 236 0.0139 0.0581
M2000 3 177 0.0138 0.1436
M2500 1 59 0.0101 0.0644
M9900 3 177 0.0092 0.0900
M1900 1 59 0.0086 0.0860
M2326 4 236 0.0080 0.1157
M3800 1 59 0.0058 0.0846
M1400 2 118 0.0053 0.0627
M2900 2 118 0.0049 0.0712
M1200 3 177 0.0039 0.0443
M1100 2 118 0.0013 0.0576
M2100 1 59 0.0011 0.0790
M3600 1 59 -0.0013 0.1340
M1300 3 177 -0.0037 0.0842
M2200 3 177 -0.0037 0.0779
M3700 4 236 -0.0048 0.0780
M9700 1 59 -0.0063 0.0693

Comment. Average monthly returns by industry range from -0.63% to 5.43%, with the highest in M1722. The most volatile industry is M1722 (standard deviation 23.25%); returns are not winsorized, so extreme months are included.

Q5. Stocks with a gap of more than 10 trading days without a price

## No stock has a gap of more than 10 trading days.

Comment. No stock has a gap longer than 10 trading days inside its price history. Another 139 stocks start late or end early in the sample because they listed or were delisted (output/q5_late_start_or_early_end.csv).

Q6. The analysis table

One row per stock-month: next-month return, log market cap, book-to-market and ROE, for stocks that were in the top 100 at the previous quarter-end, using only statements whose statutory deadline had already passed at the end of month t.

ticker month_end ret_next log_mktcap bm roe period_end_used public_date
1101 2021-01-31 0.0461 12.3700 0.8810 0.1227 2020-09-30 2020-11-14
1101 2021-02-28 0.1143 12.4196 0.8383 0.1227 2020-09-30 2020-11-14
1101 2021-03-31 0.1132 12.5383 0.7445 0.1227 2020-09-30 2020-11-14
1101 2021-04-30 -0.0096 12.6623 0.6933 0.1175 2020-12-31 2021-03-31
1101 2021-05-31 -0.0116 12.6527 0.7218 0.1174 2021-03-31 2021-05-15
1101 2021-06-30 0.0314 12.6517 0.7225 0.1174 2021-03-31 2021-05-15
1101 2021-07-31 -0.0139 12.6826 0.7005 0.1174 2021-03-31 2021-05-15
1101 2021-08-31 0.0526 12.6004 0.7770 0.1172 2021-06-30 2021-08-14
1101 2021-09-30 -0.0539 12.6518 0.7381 0.1172 2021-06-30 2021-08-14
1101 2021-10-31 -0.0466 12.5965 0.7800 0.1172 2021-06-30 2021-08-14
1101 2021-11-30 0.0435 12.5488 0.7841 0.1005 2021-09-30 2021-11-14
1101 2021-12-31 -0.0240 12.5914 0.7514 0.1005 2021-09-30 2021-11-14
item n
stock-months eligible (top 100 at previous quarter-end) 6,000
dropped: non-positive book equity 0
rows kept in Q6 table 6,000
rows with missing next-month return 100
rows with missing log market cap 0
rows with missing book-to-market 0
rows with missing ROE 8

Comment. The table has 6,000 stock-months after dropping 0 with non-positive book equity. It is missing the next-month return for 100 rows (for example December 2025, whose next month is outside the sample) and ROE for 8 rows.

Proof that the reporting-lag rule avoids look-ahead

ticker month_end statement period used public by (deadline) days public before month-end
1101 2022-01-31 2021-09-30 2021-11-14 78
1101 2022-02-28 2021-09-30 2021-11-14 106
1101 2022-03-31 2021-09-30 2021-11-14 137
1101 2022-04-30 2021-12-31 2022-03-31 30
1101 2022-05-31 2022-03-31 2022-05-15 16
1101 2022-06-30 2022-03-31 2022-05-15 46
1101 2022-07-31 2022-03-31 2022-05-15 77
1101 2022-08-31 2022-06-30 2022-08-14 17
1101 2022-09-30 2022-06-30 2022-08-14 47
1101 2022-10-31 2022-06-30 2022-08-14 78
1101 2022-11-30 2022-09-30 2022-11-14 16
1101 2022-12-31 2022-09-30 2022-11-14 47

Comment. At each month-end the statement used was made public (statutory deadline) before that date: at the end of June the table uses the March quarter, not June. The minimum gap between the deadline and the month-end over all 6,000 rows is 16 days, so no row uses information from the future.