MARKET RESEARCH
題材預測與命中率
全部來自真實到期結算(prediction_tracker 的閉環)
整體
📋 prereg 樣本帳 — 累積中判準全部從 prereg-2026-08-27-theme-horizon.toml 讀,不寫死在程式裡
三個變體
| 變體 | 設定 | 判定分母 n | alpha | 勝大盤 | 判定 |
|---|---|---|---|---|---|
| a 縮目標配現有停損 | 5 日 · 停損 ATR×2 · 目標 +5% | 90 | -0.46% | 49% | ⏳ insufficient |
| b 放停損配現有目標 | 20 日 · 停損 ATR×4 · 目標 +12% | 45 | +0.94% | 56% | ⏳ insufficient |
| c 上界參考,不可執行 | 20 日 · 停損 none · 目標 +12% | 44 | +0.90% | 59% | ⏳ insufficient |
⚠️ 「判定分母 n」不等於「已結算筆數」。 結算了但對不到大盤基準(算不出 alpha)的列不進判定—— 判準訂在 alpha,沒有 alpha 的列對這個判準沒有資訊。 兩個數字在上表逐列並排;下面「離判得出來還有多遠」那張表用的是 已結算筆數,因為那裡問的是「還要收幾筆」。
離判得出來還有多遠
| 判準 | 現在 | 需要 | 還要多久 | 說明 |
|---|---|---|---|---|
| 已結算樣本(每個變體,取最少) | 44 | 60 | 約 6 個交易日 | 各變體已結算 a 90/b 45/c 44;20 日窗的變體比 5 日窗晚滿期。ETA 以進帳速度估(每交易日約 3.0 筆),而且那是「還要收幾筆」,結算本身還要再等最長那個窗——所以實際日期會比這個數字更晚 |
| 獨立預測日 | 35 | 30 | ✅ 已達成 | 這條比樣本數重要——60 筆若來自 6 天,等於 6 個觀察 |
| 不同標的 | 4 | 15 | 🔴 照這樣走不到 | 🔴 卡的不是時間,是上游每天挑同樣那幾檔 |
| 單一標的佔比 | 33% | ≤ 25% | 🔴 照這樣走不到 | 🔴 同上——標的數不變,佔比就下不來 |
每個交易日約 3.0 筆進帳 (105 筆 / 35 天)。 上游完全不受影響——題材獵人照它自己的規則跑(5 日結算、ATR×2、+12%), 這份帳只是把同一批預測用三個變體再重放一次。 為了測 prereg 去改上游的出場規則,就沒有對照組了。
🔴 判準訂在 alpha 不是勝率。 勝率靠拉長持有期就能到 72%,而那幾乎全是大盤給的(見下一格)—— 用勝率當判準會讓這個系統「改對了」卻什麼也沒改善。 停止規則:三個變體全部有結論且全部不過 → 結論是「選股沒有可交易的 edge」, 不換一組再試。
🎯 想辦法提升到 60% — 能,但要先看它值多少口徑與表格當場算;標了「2026-08-27 快照」的兩格是那天手量的,沒有重算。沒有改任何判準,也沒有調任何參數
把持有期從 5 日改成 10 日,賺錢比例就從 41% 到 58%、20 日到 72%。 沒有改任何判準、沒有調任何參數——那兩欄的資料一直存在,只是從來沒有被算出來 (見下方「為什麼是空的」)。
| 持有期 | n | 賺錢 | 個股 | 同期大盤 | alpha | 勝過大盤 |
|---|---|---|---|---|---|---|
| 5 日 | 132 | 41% | -0.40% | +0.67% | -1.07% | 40% |
| 10 日 🎯 | 36 | 58% | +3.40% | +3.22% | +0.18% | 48% |
| 20 日 🎯 | 36 | 72% | +4.76% | +4.27% | +0.49% | 48% |
賺錢比例
超額報酬(alpha)
🔴 但那個 60% 幾乎全是大盤給的。 10 日的 alpha 只有 +0.18%、20 日 +0.49%,而勝過大盤的比例 都只有 48%——比丟銅板還低一點。同期大盤 10 日就漲了 3.22%: 這個 58% 買 0050 抱十天也拿得到。 「勝率」上去了,選股的貢獻沒有。
而真正的病灶:目標與停損互相打架
兩個參數各自都合理——ATR×2 是標準寬度 (我查證過,實測中位 1.94 倍,上游那句「屬 ATR×2.0 的正常寬度」是真的), +12% 對 20 日持有也不離譜。但它們的時間尺度不一致: ATR×2 適合 5 日持有,+12% 需要 20 日。 放在一起就是被一般波動掃出場,然後看著它漲回去—— 所以「20 日 + 停損停利」的 alpha 是 −5.37%, 比不設停損還差 5.9 個百分點。
⚠️ 所以我沒有直接把停損改寬。 36 筆來自 11 個獨立預測日、 7 檔股票(這是 10 日那個子樣本自己的 獨立日數,不是全樣本的 43 天/8 檔), 在這上面挑一個停損寬度就是過擬合——那與「拉長 horizon」不同, 後者沒有任何自由度被挑過(10/20 是上游本來就宣告的)。 要改停損或目標,先寫 prereg:說死要改成什麼、判準是什麼、 什麼結果會推翻它,然後往前累積樣本驗證。
🔍 勝率為什麼這麼低全部從現有資料當場算,沒有任何寫死的數字
一、那個數字不是在量「有沒有賺錢」
| 口徑 | 值 | 算法 | 為什麼不一樣 |
|---|---|---|---|
| 本站上方那格「勝率」 | 37.1%(33/89) | (勝利+達標) ÷ (勝利+達標+失敗+停損) | 小贏與續抱從分子分母同時拿掉——小贏是賺錢的,拿掉它會低估;續抱是小虧,拿掉它會高估 |
| 用上游判準、本站重算 | 22.9%(33/144) | (勝利+達標) ÷ 全部列。勝利=5 日漲 ≥5% | 分母含只有 2 日資料的列;分子要求一週漲 5%。⚠️ 這不是上游畫面上那個數字——見下一列 |
| 上游報告自己印的 | 44.4%(64/144) | (勝利+達標+小贏) ÷ 全部列 | 上游的 prediction_settlement 把小贏也算贏,所以它印出來的數字比上一列高得多(它自己那份報告寫 35.4%,見 /theme-report)。⚠️ 筆數會與上游略有出入——本站的是去重後的快照 |
| 漲 ≥5%(只算真的結算的) | 22.7%(30/132) | 把還沒走完 5 日的列從分母拿掉 | 分母修正,判準不變 |
| 有沒有賺錢 | 40.9%(54/132) | 5 日報酬 > 0 | 一般人講「勝率」指的是這個 |
| 扣成本後賺錢 | 40.2%(53/132) | 扣 0.6%(手續費+證交稅,進出合計) | 這才是實際能拿到的 |
上游 prediction_tracker.py 的算法是
(勝利+達標) ÷ 全部列數,而勝利=5 日漲 ≥5%。
也就是它量的是「一週漲超過 5%」的比率,分母還含著
12 筆只有 2 日資料、還沒走完 5 日的列。
一週漲 5% 本來就是少數事件——這個數字低,一半是定義決定的。
這 6 個數字沒有一個是錯的,它們量的是不同的東西。
二、目標與同期間報酬分布
目標漲幅中位數 +12.0% 低於同表 5 日報酬的 95 分位 +17.7%。這是樣本分布比較;個別目標及盤中觸價達標率須逐筆另算。
三、🔴 而「有沒有賺錢」的 41% 本身也撐不起結論
132 筆不是 132 個獨立樣本。 欣興一檔就佔 42 筆、賺錢 40%,而 43 個預測日裡有 36 對是相鄰交易日——5 日持有配上連續下單, 那是同一筆交易被抽樣好幾次,不是好幾個獨立觀察。 所以這個勝率主要在描述欣興這一檔的表現, 不是在描述這套系統的選股能力。
四、對大盤的超額報酬
描述性 t 值 -1.46; 配對 127 列來自 42 個預測日。 同日多股及持有窗重疊使樣本相依,未完成相依與多重比較校正,不宣稱統計顯著。 alpha 是相對基準的差額,不等於絕對報酬。
五、兩個被測過的解釋
❌ 追高(進場前漲多的、進場後跌慘)——台股這裡證據不支持(判定由程式算,不是寫死的)。
| 進場前 5 日 | 筆數 | 幾檔股票 | 進場前 | 進場後 |
|---|---|---|---|---|
| 前最冷 | 44 | 5 | -6.7% | -0.02% |
| 中間 | 43 | 6 | +1.4% | -0.78% |
| 前最熱 | 44 | 5 | +13.7% | -0.26% |
分位切下去可能等於按股票切,不是按「進場前多熱」切——所以判準要求每一組至少 2 檔股票(現在最少的那一組 5 檔)。扣掉日期均值之後相關 -0.096、p = 0.27783。留著這一格而不是刪掉——「測過了、不成立」與「沒測過」是兩件事。
⚠️ 信心分數與報酬——這個問題現在問得了(判定由程式算,不是寫死的)。
prob_boom ≤65 那組平均 +3.73%、賺錢 75%(8 筆);≥76 那組 -0.54%、賺錢 39%(124 筆)。相關 -0.104。
🔴 這一格 2026-08 判「問不了」,理由是 prob_boom 與(日期, 題材)完全共線——那時候沒有任何一天出現兩種不同的prob_boom。現在有 1 天出現了(取值 55.0、90.0、94.0、95.0),共 43 個預測日,所以共線檢定過了。
⚠️ 過了共線檢定不等於結論成立。只有 1 天可以做同日比較,那是「這個問題現在問得了」,離「答得出來」還很遠。
六、順帶查到的上游資料缺陷
本站唯讀,只報不改;但也不拿這些欄位算任何東西。
🟢 10/20 日欄位已回填(2026-08-25,見預測紀律)——現在沒有全為 0 的欄位。
🟢 best_gain = −100.0 哨兵現為 0 筆(2026-08-25 重算前曾有 8 筆,含台積電 +3.69%、廣達 +10.70%)。
🔍 照這些建議做會賺錢嗎(投資顧問視角)這不是回測(無部位大小、無停損),是訊號方向性的期望值
最好的一筆 +23.6%、最差 -23.1%。 勝率與期望值是兩件事——勝率 41% 配上「小賺多次、大賠一次」 仍然是負期望值。這一格看的是後者,因為那才是帳戶餘額的走向。 成本為保守假設值,非實際券商費率。
催化劑熱度分數 prob_boom(不是機率;這張表目前測不出東西)本站唯讀,不改上游;但也不替上游的數字背書
| 熱度分數(prob_boom,非機率) | 樣本 | 勝 | 勝率 |
|---|---|---|---|
| <60 | 6 | 5 | 83% |
| 60-70 | 1 | 1 | 100% |
| 70-80 | 2 | 0 | 0% |
| 80+ | 80 | 27 | 34% |
① prob_boom 根本不隨個股變動。theme_simulator_v3.py:116 算的是 min(情境催化劑 × 10, 95)——分子只跟題材有關,同一個題材底下每一檔股票拿到一模一樣的分數。而催化劑上游已被 clamp 在 10.0,所以熱度 ≥9.5 的題材必然輸出 95(目前 ABF 載板與 AI GPU 都是 10.0)。它在建構上就不可能有個股鑑別力,不是「校準不好」。
② 寫進結算檔的那個值,不是那筆預測自己的機率。prediction_tracker.py:344-345 在 for r in resolved: 迴圈裡寫的是 row['scenario'] 與 row['prob_boom']——row 是上一個迴圈殘留的變數,整批結算因此被貼上同一個值。實測 44 個多筆批次裡有 42 個批次的 prob_boom 完全相同,上表 89 筆中有 84 筆(94%)落在這種批次裡。
兩件事加起來:依 prob_boom 分箱,等於依「哪一批結算」分箱,也就是依時間分箱。上表量到的是不同時期的行情差異,不是機率的鑑別力。
那 corr_with_gain = −0.273 呢?它是 prob_boom_auditor.py 拿同一個被污染的欄位算的,所以同樣不成立。上游 v1.3 據此廢除 prob_boom 排序的那個決定,結論方向也許對(它確實沒有鑑別力),但理由是錯的——真正的原因是①的建構性缺陷,不是「高分會虧」。
這些數字該怎麼讀
1. prob_boom 不是機率,也不是「反向指標」——它在建構上就沒有資訊。
上游算的是 min(題材催化劑 × 10, 95):分子只跟題材有關,
同一題材下每一檔股票拿到完全相同的分數,而催化劑已被 clamp 在 10.0,
所以熱門題材必然輸出 95。把「暴漲機率 95%」讀成「95% 的把握」是錯的——
它只是催化劑分數換了個單位再撞上天花板。
(先前這一頁寫「它是反向指標」,那個說法已於 2026-08-25 更正:
證據來自一個被污染的欄位,見上方可靠度表的說明。)
2. 「續抱」不是中性結果。結算分類裡的續抱代表尚未觸及 停利或停損——樣本裡若續抱佔比偏高,要留意是不是在拖延認賠 (讓虧損部位一直掛著不結算,帳面勝率會失真)。
3. 這套系統的強項不在選股,在題材偵測。RSS 催化劑掃描 與熱度排名是它真正獨特的部分;把它當成「今天市場在講什麼」的 雷達,比當成「買什麼會漲」的推薦更貼近它目前的實證能力。
最近 15 筆結算名稱欄多數是從 prediction_log 依代號補回來的(上游 70 列裡 58 列沒填);「熱度分數」=上游 prob_boom=min(情境催化劑×10, 95),同一題材各股相同,不是勝率或機率
| 結算日 | 代碼 | 名稱 | 情境 | 熱度分數(非機率) | 5日報酬 | 結果 |
|---|---|---|---|---|---|---|
| 2026-10-14 | 8046 | 南電 | ABF載板超級循環 | 95.0 | -5.0% | 失敗 |
| 2026-10-14 | 3037 | 欣興 | ABF載板超級循環 | 95.0 | -9.5% | 失敗 |
| 2026-10-14 | 2330 | 台積電 | AI GPU 需求爆發 | 95.0 | -2.9% | 停損 |
| 2026-10-13 | 3037 | 欣興 | ABF載板超級循環 | 95.0 | -11.6% | 停損 |
| 2026-10-13 | 8046 | 南電 | ABF載板超級循環 | 95.0 | -4.0% | 失敗 |
| 2026-10-13 | 2356 | 英業達 | AI GPU 需求爆發 | 95.0 | -1.6% | 續抱 |
| 2026-10-12 | 3037 | 欣興 | ABF載板超級循環 | 95.0 | -5.3% | 失敗 |
| 2026-10-12 | 8046 | 南電 | ABF載板超級循環 | 95.0 | -1.4% | 續抱 |
| 2026-10-12 | 2356 | 英業達 | AI GPU 需求爆發 | 95.0 | -2.4% | 續抱 |
| 2026-10-08 | 3037 | 欣興 | ABF載板超級循環 | 95.0 | +3.7% | 小贏 |
| 2026-10-08 | 2356 | 英業達 | AI GPU 需求爆發 | 95.0 | -4.0% | 失敗 |
| 2026-10-08 | 8046 | 南電 | ABF載板超級循環 | 95.0 | +2.4% | 小贏 |
| 2026-10-07 | 3037 | 欣興 | ABF載板超級循環 | 95.0 | +9.2% | 勝利 |
| 2026-10-07 | 2356 | 英業達 | AI GPU 需求爆發 | 95.0 | -2.5% | 續抱 |
| 2026-10-07 | 8046 | 南電 | ABF載板超級循環 | 95.0 | +6.5% | 勝利 |
5f92ccf(第 163 次提交,2026-10-14) | 資料建置於 2026-10-14 10:30 UTC | 行情與研究結果供查看;會員可管理觀察清單並要求更新個股分析