PHPMem v2.0.1
Version
1.6.45
Uptime
15 days 8 hours 18 minutes 49 seconds
Memory
Total
512MB
Used
24,01MB (4.69%)
Free
487,99MB
Keys
Current
27 650
Total (since start)
33 978
Evictions
0
Reclaimed
160
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
11 / 1 024 max
Total
170 049
Rejected
0
llm:f4053e34895a2b118e3e4829b8a7c9e7087ed2358308b24759de70fac6c4bd0e
Edit
{
"action": "final",
"content": "**Overall:** the table is structurally clean, but it has several real quality issues. The main one is mixed currencies and units across exchanges. Outliers and impossible-looking values are mostly explained by that.\n\n**Clean checks (no problem found)**\n- There are no duplicate (stock, date) keys, so the grain holds (step-1 `dup_key_rows` = 0, step-3 `duplicate_key_rows` = 0).\n- There are no nulls in any of the 13 columns (step-0 non-null counts equal 422,729; step-3 `rows_with_nulls` = 0).\n- There are no non-positive prices and no negative volumes.\n- There are no rows where high < low.\n- Dates run 2012-01-02 to 2025-08-04, all parsed as dates.\n\n**Issues found**\n1. **Mixed currencies and price scales (the biggest issue).** Prices are in local currency with no currency column, so closes are not comparable across tickers.\n - The `.KS` (Korea) suffix has a median close of about 33,788 and a max of 300,000 (000660.KS, July 2025).\n - The `.T` (Tokyo) suffix has a median of about 1,756.\n - Suffixes such as `.TW`, `.TWO`, `.SW` and `.L` sit around 30–105, while US tickers without a suffix have a median of about 22.\n - The `.AX` (Australia) suffix has a median of about 0.45, with a minimum close of 0.009.\n - Any cross-company price-level comparison or averaging is therefore invalid without normalising to returns or converting currency. The `.L` (London) tickers may also be quoted in pence rather than pounds, but that is not verified here.\n2. **Apparent outliers that are really scale effects.** The top closes are all 000660.KS at 294,500–300,000, which are legitimate KRW values rather than errors. Only 2 rows flag as >3× or <⅓ jumps: GCTS on 2024-03-27 (6.687) and CTNK.F on 2012-07-11 (0.265). These are likely real events, such as a reverse split or an illiquid stock, but they should be checked.\n3. **Inconsistent OHLC logic.** Between 461 and 471 rows have a close outside the high–low range, depending on the check. In step-0, 461 closes and 10 opens fall outside the range. Step-3 counts 471 rows where open or close is outside it. These are impossible values, probably from adjusted-price mismatches or bad source data.\n4. **Zero-volume and stale rows.**\n - 4,888 rows have zero volume. They are concentrated in `.AX` (1,288 rows), `.F` (1,279), `.SS` (365), `.T` (300) and `.TW` (280), as well as in the no-suffix US group (949 rows).\n - 6,840 rows have a flat range (high = low). Those are illiquid or non-trading days, and they distort volatility and volume signals.\n5. **Extreme volume range.** Volume has a median of 898,500 and a max of about 3.69 billion. Volume units and share definitions differ by exchange, so the max needs verification.\n6. **Inconsistent ticker formats.** The `stock_name` column mixes 19 suffix conventions, including no suffix, `.KS`, `.T` and `.TWO`. The `company_name` and `stock_name` columns each have 152 distinct values, matching one to one. The card's \"~149\" company estimate is slightly off.\n7. **Uneven history.** Row counts per suffix imply different coverage periods. For example, `.MI` has only 881 rows, about 3.5 years, against roughly 3,400 for the long-history tickers. Panels are unbalanced, so time-series comparisons need care.\n\n**Recommendations:** add a currency field or convert to a common currency, use returns instead of price levels, exclude or flag zero-volume and flat-range rows, and review the 471 OHLC-inconsistent rows and the two jump cases before modelling.\n\nThese claims come from the profiling queries in steps 0–3."
}