01 · 執行摘要Executive Summary
本研究針對 2023 年 1 月至 2025 年 12 月期間於 Steam 平台上架、並具備成人內容標籤 (Sexual Content 必含、且同時具 Nudity / Hentai / NSFW 任一)之全部 668 款作品 進行縱向資料收集,匯整 555,127 筆玩家評論時間戳,並以 Google TimesFM 2.5 (2026-03-31 發布之最新版本,200M 參數、context 長度 16,384、原生 horizon 達 1,000 步) 針對未來 180 日進行逐日、以及 26 週逐週之上市時機預測。
對應地,模型同時指出 2026-06-27 ~ 2026-07-06 為最不利之檔期 (對應週層級最低分 2026-07-06,分數 -0.164), 主因為該區間與 Steam 年度夏季特賣主檔重疊,新作品之自然發現路徑受既有折扣作品強勢曝光擠壓。 建議此區間避免安排首發檔期,或透過延長曝光、配合特定季節性活動另尋替代方案。
02 · 關鍵建議Key Recommendations
根據 TimesFM 於 668 款作品 × 1,087 日歷史資料上之預測, 本報告提出下列可直接採納之上市安排建議。
建議採納之檔期
建議避開之檔期
備註: 建議檔期係基於未來 180 日之預測窗口。 2026 年第四季後段(11 月起)與 2027 年以後之檔期尚不在本次分析範圍內; 如需延長預測範圍,請延長歷史資料並重新執行預測管線。
03 · 研究範疇與樣本Scope & Sample
本次分析以上架時間介於 2023 至 2025 年 之 Steam 成人向作品為母體。
資料來源
- Steam Store Search API(以官方 tag 數值做精準 AND 過濾)
- Steam
appdetailsAPI(發行資訊、出版商、內容描述符) - Steam
appreviewsAPI(玩家評論時間戳,每款上限 50 頁 × 100 筆) - Steam 官方 Tag 字典(
store.steampowered.com/tagdata/populartags/english)
發行年份分佈
| 發行年份 | 收錄款數 | 分佈 |
|---|---|---|
| 2025 | 186 | |
| 2024 | 244 | |
| 2023 | 238 |
隱私與合規
所有玩家評論在擷取時即移除個人識別欄位(steamid、author profile),
僅保留時間戳(timestamp)、好評與否(voted_up)、
以及語言(language)等非個資欄位。本報告未呈現任何個別玩家資訊。
04 · 方法論Methodology
4.1 成人內容分類標準
本研究採用四層 cascade 分類機制,依序評估每款作品:
-
特許作品清單(
app_whitelist): Steam 封鎖抓取但經人工確認為成人向之特定 App ID。 -
成人專屬出版商清單(
publisher_whitelist): 全目錄均為成人作品之出版商(如 JAST USA、MangaGamer 等)。 -
Steam Tag 組合規則(
tag_rules·主要標準): 作品之 Steam user tag 須同時滿足 Sexual Content(12095) 與以下任一:Nudity(6650)、Hentai(9130)、NSFW(24904)。 此為本研究識別成人向作品之主要依據。 -
Steam 內容描述符(
content_descriptor·補充): 官方 ID 3(Adult Only Sexual Content)或 ID 4(Frequent Nudity)。 該欄位由開發者自願填寫,近年命中率顯著下降,僅作為補充 fallback。
分類主標準:
作品必須具備 Sexual Content 標籤,
且至少具備 Nudity、Hentai 或 NSFW 其中之一。
此定義排除僅為「性議題討論」但未實際呈現成人內容之作品。
4.2 指標定義
- S1 — 週上架密度: 每週新上架之成人向作品數量。 作為競爭密度之代理指標;數值越高代表首發檔期競爭越劇烈。
- S2 — 週評論動能: 所有作品於上架後首四週內所累積之玩家評論數, 按評論發生週彙總。作為同類型玩家到場密度之代理指標; 數值越高代表該週玩家閱讀與撰寫評論之活躍度越強。
- 季節性 Bonus: 基於 Steam 官方特賣行事曆、Next Fest 及日本節慶(Golden Week、Comiket、Obon) 所建立之固定區間調整係數。
4.3 預測模型
主要預測採用 Google TimesFM 2.5-200m
(2026-03-31 發布之最新版本,參數量 2 億、context 長度 16,384、
原生 forecast horizon 達 1,000 步,並新增 30M 連續 quantile 預測頭)。
本次以 pooled 聚合時序對 S1(週/日上架密度)、S2(週/日評論動能)各自產生點估計,
並啟用 normalize_inputs、force_flip_invariance、
infer_is_positive、fix_quantile_crossing 等 2.5 新增特性。
報告同時提供三項統計基線以做交叉比對:
rolling_median:近 13 週滾動中位數;高度稀疏資料之保守基線。seasonal_naive:去年同週複製;對具明顯年周期資料有效。croston:Croston 法;為間歇性需求(大量零值)設計。
4.4 綜合評分
每一時段(週或日)之綜合分數按以下公式計算:
score(t) = w1 × (-rank_S1(t)) + w2 × rank_S2(t) + w3 × seasonal_bonus(t)
其中 rank_S1 為 S1(競爭密度)之分位排名(越低越好,因此取負號),
rank_S2 為 S2(玩家動能)之分位排名(越高越好)。
權重 w1 / w2 / w3 由 config/scoring_weights.yaml 讀取。
05 · 週別預測Weekly Forecast
未來 26 週(半年期)之逐週綜合排名。 週期粒度適合用於上市時段策略之早期決策。
5.1 推薦週期(綜合分數前 10 名)
| 排名 | 週起始日 | 綜合分數 | S1 預測 | S2 預測 | 事件 |
|---|---|---|---|---|---|
| 1 | 2026-10-19 | +0.180 | 2.6 | 369.8 | |
| 2 | 2026-06-15 | +0.101 | 3.8 | 347.6 | |
| 3 | 2026-06-22 | +0.101 | 3.5 | 349.8 | |
| 4 | 2026-09-21 | +0.084 | 3.0 | 377.4 | |
| 5 | 2026-09-28 | +0.082 | 2.8 | 374.2 | |
| 6 | 2026-10-12 | +0.080 | 2.6 | 369.2 | |
| 7 | 2026-08-24 | +0.013 | 3.5 | 371.3 | |
| 8 | 2026-09-14 | +0.013 | 3.1 | 371.9 | |
| 9 | 2026-08-03 | +0.011 | 3.3 | 368.7 | |
| 10 | 2026-08-10 | +0.011 | 3.3 | 370.6 |
5.2 避開週期(綜合分數末 10 名)
| 排名 | 週起始日 | 綜合分數 | S1 預測 | S2 預測 | 事件 |
|---|---|---|---|---|---|
| 1 | 2026-06-29 | -0.164 | 3.2 | 352.2 | |
| 2 | 2026-07-06 | -0.164 | 3.2 | 358.3 | |
| 3 | 2026-05-04 | -0.103 | 3.3 | 289.3 | |
| 4 | 2026-10-05 | -0.052 | 2.7 | 371.3 | |
| 5 | 2026-05-11 | -0.020 | 3.6 | 319.1 | |
| 6 | 2026-05-18 | -0.012 | 3.8 | 336.0 | |
| 7 | 2026-06-01 | +0.001 | 3.7 | 347.1 | |
| 8 | 2026-06-08 | +0.001 | 3.7 | 347.8 | |
| 9 | 2026-04-27 | +0.002 | 2.9 | 244.7 | |
| 10 | 2026-05-25 | +0.003 | 3.8 | 352.2 |
06 · 日別預測Daily Forecast
未來 180 日之逐日綜合排名。 日粒度適合用於確認首發具體日期, 並確認與 Steam 業界慣例(週二 / 週四發行)之相容性。
6.1 推薦日期(綜合分數前 15 名)
| 排名 | 日期 | 星期 | 綜合分數 | S1 預測 | S2 預測 | 事件 |
|---|---|---|---|---|---|---|
| 1 | 2026-06-17 | 週三 | +0.096 | 0.00 | 60.9 | |
| 2 | 2026-06-18 | 週四 | +0.054 | 0.02 | 47.3 | |
| 3 | 2026-06-16 | 週二 | +0.051 | 0.97 | 46.1 | |
| 4 | 2026-09-16 | 週三 | +0.008 | 0.00 | 64.1 | |
| 5 | 2026-09-23 | 週三 | +0.008 | 0.00 | 65.0 | |
| 6 | 2026-06-19 | 週五 | +0.006 | 0.11 | 35.6 | |
| 7 | 2026-06-20 | 週六 | +0.006 | 0.06 | 35.4 | |
| 8 | 2026-08-19 | 週三 | +0.006 | 0.01 | 63.1 | |
| 9 | 2026-09-02 | 週三 | +0.006 | 0.00 | 63.0 | |
| 10 | 2026-09-30 | 週三 | +0.006 | 0.00 | 63.5 | |
| 11 | 2026-10-14 | 週三 | +0.006 | 0.01 | 63.9 | |
| 12 | 2026-06-15 | 週一 | +0.004 | 0.41 | 34.9 | |
| 13 | 2026-06-21 | 週日 | +0.004 | 0.16 | 34.4 | |
| 14 | 2026-07-15 | 週三 | +0.003 | 0.00 | 62.6 | |
| 15 | 2026-08-05 | 週三 | +0.003 | 0.00 | 62.9 |
6.2 避開日期(綜合分數末 15 名)
| 排名 | 日期 | 星期 | 綜合分數 | S1 預測 | S2 預測 | 事件 |
|---|---|---|---|---|---|---|
| 1 | 2026-06-29 | 週一 | -0.277 | 0.38 | 31.9 | |
| 2 | 2026-06-27 | 週六 | -0.274 | 0.07 | 32.8 | |
| 3 | 2026-06-28 | 週日 | -0.274 | 0.14 | 32.5 | |
| 4 | 2026-06-26 | 週五 | -0.269 | 0.10 | 33.7 | |
| 5 | 2026-07-03 | 週五 | -0.269 | 0.13 | 33.4 | |
| 6 | 2026-07-04 | 週六 | -0.269 | 0.07 | 33.8 | |
| 7 | 2026-07-06 | 週一 | -0.269 | 0.39 | 33.1 | |
| 8 | 2026-07-05 | 週日 | -0.263 | 0.18 | 34.3 | |
| 9 | 2026-08-14 | 週五 | -0.254 | 0.14 | 37.0 | |
| 10 | 2026-08-15 | 週六 | -0.254 | 0.09 | 37.7 | |
| 11 | 2026-08-16 | 週日 | -0.254 | 0.16 | 37.0 | |
| 12 | 2026-06-30 | 週二 | -0.233 | 0.94 | 42.4 | |
| 13 | 2026-07-07 | 週二 | -0.229 | 0.92 | 43.2 | |
| 14 | 2026-07-02 | 週四 | -0.224 | 0.02 | 44.4 | |
| 15 | 2026-06-25 | 週四 | -0.219 | 0.00 | 45.8 |
07 · 季節性事件日曆Seasonal Calendar
下列事件日曆係依據 Valve 官方 H1/H2 公告、Steam Next Fest 時間表, 以及相關國際 / 日本文化節慶整理。 每一事件於綜合評分中以固定調整係數參與。
| 事件名稱 | 期間 | 調整係數 | 影響方向 |
|---|---|---|---|
| Spring Sale | 2026-03-19 至 2026-03-26 | -0.4 | 利空 |
| Summer Sale | 2026-06-25 至 2026-07-09 | -0.5 | 利空 |
| Autumn Sale | 2026-10-01 至 2026-10-08 | -0.4 | 利空 |
| Winter Sale | 2026-12-17 至 2027-01-04 | -0.5 | 利空 |
| Next Fest Feb | 2026-02-23 至 2026-03-02 | +0.3 | 利好 |
| Next Fest Jun | 2026-06-15 至 2026-06-22 | +0.3 | 利好 |
| Next Fest Oct | 2026-10-19 至 2026-10-26 | +0.3 | 利好 |
| Golden Week | 2026-04-29 至 2026-05-06 | -0.2 | 利空 |
| Obon | 2026-08-13 至 2026-08-16 | -0.2 | 利空 |
| Comiket Summer | 2026-08-14 至 2026-08-16 | -0.3 | 利空 |
| Comiket Winter | 2026-12-30 至 2026-12-31 | -0.3 | 利空 |
| Lunar New Year | 2026-02-16 至 2026-02-22 | -0.3 | 利空 |
資料來源:Steam 官方特賣公告頁、Valve 官方新聞稿、
日本各地方政府公告。所有日期已於 memory/valve-2026-schedule.md 登記交叉驗證時間。
超過公告範圍之未來年度(2027 及以後)暫不納入評分。
08 · 模型驗證Model Validation
8.1 子類別 Holdout Backtest(sMAPE)
以歷史末端 4 / 8 / 12 / 26 週作為保留集,各模型分別於前段歷史訓練並預測保留期, 按 Symmetric Mean Absolute Percentage Error(sMAPE)評分; 數值越低代表預測越準確。
| Category | Model | Horizon | sMAPE |
|---|---|---|---|
| gameplay_heavy | rolling_median | 4 | 33.33 |
| gameplay_heavy | timesfm | 4 | 41.11 |
| gameplay_heavy | croston | 4 | 51.70 |
| gameplay_heavy | seasonal_naive | 4 | 53.33 |
| gameplay_heavy | rolling_median | 8 | 40.71 |
| gameplay_heavy | timesfm | 8 | 43.62 |
| gameplay_heavy | croston | 8 | 53.44 |
| gameplay_heavy | seasonal_naive | 8 | 63.21 |
| gameplay_heavy | rolling_median | 12 | 38.25 |
| gameplay_heavy | croston | 12 | 40.50 |
| gameplay_heavy | timesfm | 12 | 42.43 |
| gameplay_heavy | seasonal_naive | 12 | 64.37 |
| gameplay_heavy | rolling_median | 26 | 41.98 |
| gameplay_heavy | timesfm | 26 | 45.01 |
| gameplay_heavy | croston | 26 | 51.12 |
| gameplay_heavy | seasonal_naive | 26 | 60.22 |
| other | rolling_median | 4 | 0.00 |
| other | croston | 4 | 9.40 |
| other | seasonal_naive | 4 | 25.00 |
| other | timesfm | 4 | 35.95 |
| other | rolling_median | 8 | 8.33 |
| other | seasonal_naive | 8 | 12.50 |
| other | croston | 8 | 15.21 |
| other | timesfm | 8 | 30.69 |
| other | rolling_median | 12 | 5.56 |
| other | seasonal_naive | 12 | 32.22 |
| other | timesfm | 12 | 38.15 |
| other | croston | 12 | 50.17 |
| other | rolling_median | 26 | 25.64 |
| other | seasonal_naive | 26 | 39.36 |
| other | croston | 26 | 48.58 |
| other | timesfm | 26 | 50.18 |
| sim_management | rolling_median | 4 | 16.67 |
| sim_management | timesfm | 4 | 19.98 |
| sim_management | seasonal_naive | 4 | 26.67 |
| sim_management | croston | 4 | 34.19 |
| sim_management | rolling_median | 8 | 16.67 |
| sim_management | timesfm | 8 | 18.46 |
| sim_management | croston | 8 | 20.80 |
| sim_management | seasonal_naive | 8 | 38.33 |
| sim_management | rolling_median | 12 | 11.11 |
| sim_management | timesfm | 12 | 13.38 |
| sim_management | seasonal_naive | 12 | 31.11 |
| sim_management | croston | 12 | 43.44 |
| sim_management | rolling_median | 26 | 17.95 |
| sim_management | seasonal_naive | 26 | 21.03 |
| sim_management | timesfm | 26 | 27.46 |
| sim_management | croston | 26 | 35.32 |
方法論提醒:
子類別切分後單一時序資料點稀疏,
rolling_median 對多數零值周預測 0 即精確命中,
導致 sMAPE 被人為壓低。此表應視為原始數據之透明揭露,
模型勝負之最終判定請參見下節 pooled 密度 backtest。
8.2 Pooled 密度公平 Backtest
為消除子類別稀疏性造成之評分偏差,此 backtest 改以「密集樣本(全 Steam 快取)」 與「稀疏樣本(僅成人範疇)」分別建立 pooled 時序, 於相同 horizon 與相同 metric 上比較各模型。
密集資料(全 Steam 快取樣本)
每週平均 7.2 筆;歷史 1484 週。
| 模型 | 4 週 | 8 週 | 12 週 | 26 週 |
|---|---|---|---|---|
| rolling_median | 116.67 | 200.00 | 200.00 | 111.54 |
| seasonal_naive | 188.99 | 184.85 | 183.13 | 188.78 |
| croston | 117.10 | 81.55 | 134.86 | 111.94 |
| timesfm | 174.90 | 187.01 | 194.12 | 143.59 |
稀疏資料(僅成人向範疇)
每週平均 0.9 筆;歷史 586 週。
| 模型 | 4 週 | 8 週 | 12 週 | 26 週 |
|---|---|---|---|---|
| rolling_median | 66.67 | 83.33 | 200.00 | 200.00 |
| seasonal_naive | 133.33 | 171.43 | 133.33 | 159.42 |
| croston | 91.79 | 89.75 | 124.17 | 139.87 |
| timesfm | 111.18 | 121.17 | 141.61 | 146.92 |
數值為 sMAPE(Symmetric Mean Absolute Percentage Error),越低越準;表格中每個 horizon 的勝者以綠色標示。
09 · 研究限制Limitations
- 樣本範圍:本次分析以 2023 至 2025 年 上架作品為主要對象。 2022 年及以前之作品未涵蓋,若須納入完整歷史需延長 backfill 範圍並重新聚合。
- Steam Tag 更新延遲:作品之 Steam user tag 由玩家投票產生, 新作品須累積投票始能進入 top tag 清單。 上架未滿 3 個月之近期作品,其 tag 組合可能尚未穩定, 可能造成本研究之近期樣本輕度少計。
- TimesFM 2.5 Horizon 能力: TimesFM 2.5 原生 max_horizon 為 256 步(約 8 個月), 本次 26 週 / 180 日預測均在此原生範圍內,無須 iterative rollout 或 horizon padding; 輸出於 output patch 128 倍數邊界(128 / 256)對齊。
- 季節日曆覆蓋範圍:現行事件日曆僅完整覆蓋 2026 年。 若預測 horizon 超出 2026/12/31,該時段內無任何季節性調整, 建議於後續更新 2027 年活動表後重新執行預測。
- 外部事件未建模:重大業界事件(大型遊戲特別發表、 主機平台發表會、突發社群話題)未納入模型,可能造成個別時段之實際表現 偏離預測。
10 · 附錄Appendix
A. 技術規格
| 主 Python 環境 | CPython 3.14(polars / httpx / pytest) |
| TimesFM 專屬環境 | CPython 3.11 + PyTorch 2.x(.venv-tfm/) |
| 預測模型 | Google TimesFM 2.5-200m PyTorch(2026-03-31 發布;由 google-research/timesfm source 安裝) |
| 預測權重 | config/scoring_weights.yaml |
| 分類設定 | config/adult_classifier.yaml(v2) |
| 事件日曆 | config/seasonal_events.yaml |
| Backfill Rate Limit | 0.67 req/s(符合 Steam 200 req / 5 min 配額) |
B. 重現指令
cd D:/Tool/timesfm
# 1. 候選池發現(Steam Store Search 為主)
python -m scripts.run_discovery --skip-steamspy --steam-search-throttle-sec 2.5
# 2. 擷取範圍內作品至工作集(本次:2023–2025)
python -c "import polars as pl; \
pl.read_parquet('data/raw/app_catalog_full.parquet') \
.filter(pl.col('release_year').is_in([2023,2024,2025])) \
.write_parquet('data/raw/app_catalog_core.parquet')"
# 3. Backfill(checkpoint-resumable)
python scripts/run_backfill.py --phase phase1_core --max-pages 50 --max-weeks 260
# 4. 週聚合
python scripts/run_aggregator.py --catalog data/raw/app_catalog_core.parquet
# 5. TimesFM Pooled Forecast
.venv-tfm/Scripts/python.exe scripts/run_pooled_analysis.py \
--granularity week --horizon 26 --forecaster timesfm --top 26
.venv-tfm/Scripts/python.exe scripts/run_pooled_analysis.py \
--granularity day --horizon 180 --forecaster timesfm --top 20
# 6. (選用)公平密集 vs 稀疏 Backtest
.venv-tfm/Scripts/python.exe scripts/run_density_backtest.py \
--out data/forecast/density_backtest.json
# 7. 重建本報告
python scripts/build_report.py
C. 產出檔案清單
data/forecast/pooled_week.parquet | 26 週逐週預測 |
data/forecast/pooled_day.parquet | 180 日逐日預測 |
data/forecast/forecast_horizons.parquet | per-category × 週預測 |
data/forecast/backtest_matrix.md | per-category sMAPE backtest |
data/weekly/s1_releases_by_cat.parquet | 週上架密度 |
data/weekly/s2_reviews_by_cat.parquet | 週評論動能 |
data/report/index.html | 本報告(靜態、可離線開啟) |