MARKET RESEARCH
被監看的條件
153 條條件:11 條成立、140 條不成立、🔴 2 條算不出來
這一頁在說什麼判斷全部回去呼叫原本那一層,這一頁不重算任何判準。機器可讀版:/api/watched.json
這個站有6 層在監看:問題單、值班、橫幅、排程、Hermes、業務驗收。每一層都有自己的畫面,但沒有一頁說得出總共在看幾條。這一頁就是那份清單。已記錄限制仍代表條件成立;研究的負面結果與當期工程故障分開標示。
未觸發、需處理、待查,分開呈現。「條件不成立」與「判不出來」在原本的機制裡長得一模一樣——而後者更危險:量測層讀不到某個事實時,detect() 不出單,reconcile() 會把那張單記成「條件不再成立」自動結案。
來源讀不到可能被問題單誤判為條件消失;此頁會另列待查,不能當作修復證明。
這一頁把缺掉的事實指名道姓列出來,那個洞才看得見。
🔴 算不出來的條件(2 條)這不代表有問題,代表不知道有沒有問題——而那不該長得像沒問題
這些條件此刻沒有被判斷。畫面上它們與「沒問題」無法區分,而且問題單那一層會把它們自動結案。
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| ⚪ 待查 | *.prose_fabrication | 巡邏連續 ≥2 次記到「散文捏造數字」(fatal,誠信問題) | — | 缺事實:repeat_streaks——detect() 對這條不出單,而 reconcile() 會把它記成「條件不再成立」自動結案 |
| ⚪ 待查 | *.expectation_unreconciled | 巡邏連續 ≥3 次記到「預期未對帳」 | — | 缺事實:repeat_streaks——detect() 對這條不出單,而 reconcile() 會把它記成「條件不再成立」自動結案 |
問題單(18 條,6 條成立)判準寫在 src/tx/issues.py detect()
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| 📌 已記錄限制 | 發現層沒有超額報酬theme.no_excess_return | 發現層超額報酬檢定 |t| < 2 | major | 發現層檢定 t = +0.08(|t| < 2) |
| ⚠️ 注意 | 4 筆歷史匯入佔位列缺少原始身分theme.unthemed_predictions | 有預測的 scenario 為空或 format_b_recovered(按題材的統計會少算) | minor | 4 列為逾 30 日的舊格式補救佔位:原預測日期與股票代碼都是 unknown,無法可靠補題材;分組統計須另列不可歸屬數量,不能當作今天漏產預測。 |
| 📌 已記錄限制 | 事先判準 0 過 / 4 不過tx.criteria_zero | 四條事先判準通過 0 條 | major | direction / calibration / interval / cost 全部未通過 |
| 📌 已記錄限制 | 進場勝率低於 50%tx.entry_winrate_below_breakeven | walk-forward OOS 的進場勝率 < 基準(0.5) | major | walk-forward OOS 3,841 筆,進場勝率 0.4803,基準 0.50 |
| 📌 已記錄限制 | 方向命中率輸給「永遠猜多數類」tx.hit_below_majority | 方向命中率 < 多數類基準(永遠猜多數類的成績) | major | 方向命中率 0.3676,多數類基準 0.4317 |
| 📌 已記錄限制 | 宏觀面拿不到 CPI 與失業率us.macro_missing_cpi | 宏觀座位 status = partial(拿不到 CPI 與失業率) | minor | FRED 從本環境連不上(2026-08-26 實測 90 秒逾時兩次),座位只有利率,狀態 partial |
| ⚪ 待查 | *.expectation_unreconciled | 巡邏連續 ≥3 次記到「預期未對帳」 | — | 缺事實:repeat_streaks——detect() 對這條不出單,而 reconcile() 會把它記成「條件不再成立」自動結案 |
| ⚪ 待查 | *.prose_fabrication | 巡邏連續 ≥2 次記到「散文捏造數字」(fatal,誠信問題) | — | 缺事實:repeat_streaks——detect() 對這條不出單,而 reconcile() 會把它記成「條件不再成立」自動結案 |
| ✅ 未觸發 | paper.range_coverage | 該部門申報合理範圍的數字 < 90%(沒申報的沒受過檢查) | — | 16/16 申報了範圍 |
| ✅ 未觸發 | theme.range_coverage | 該部門申報合理範圍的數字 < 90%(沒申報的沒受過檢查) | — | 32/32 申報了範圍 |
| ✅ 未觸發 | theme.single_day_history | watchlist 有 > 5 列卻只有 1 個日期(append 語意壞了) | — | — |
| ✅ 未觸發 | tx.account_params_unset | 已啟用個人部位估算、但 [account] 未填(公開研究模式不適用) | — | 公開研究模式;私人帳戶未啟用,不列為待辦 |
| ✅ 未觸發 | tx.backtest_stale | 逐日紀錄落後資料最後交易日 ≥ 3 個工作日 | — | 落後 1 個已有答案的交易日(紀錄到 2026-10-12,答案到 2026-10-13) |
| ✅ 未觸發 | tx.cost_unverified | 成本參數有「查得到卻還沒查」的項目(user_accepted 與 pending_user_input 不計) | — | 0 項 |
| ✅ 未觸發 | tx.range_coverage | 該部門申報合理範圍的數字 < 90%(沒申報的沒受過檢查) | — | 43/43 申報了範圍 |
| ✅ 未觸發 | tx.unfreeze_gate_reached | 最慢的 horizon 已結算筆數 ≥ 解凍門檻(60)卻還沒動作 | — | 最慢的 horizon 33/60(h1 38/h3 35/h5 33) |
| ✅ 未觸發 | us.flow_history_short | 籌碼面歷史 < 20 天(談變化的最低天數) | — | — |
| ✅ 未觸發 | us.range_coverage | 該部門申報合理範圍的數字 < 90%(沒申報的沒受過檢查) | — | 75/75 申報了範圍 |
值班(9 條,1 條成立)判準寫在 src/tx/watch.py check()
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| ⚠️ 注意 | 研究 Agent 有未完整完成工作:每日會議watch.agent_execution | 研究 Agent 工作未完整完成,區分工程故障、資料阻擋與部分降級 | minor | 每日會議:執行狀態 degraded;未採用 LLM 自由敘述(不可用或引用核驗失敗)。數字與議題不受影響——它們由系統直接產生,LLM 只負責敘述。 |
| ✅ 未觸發 | audit_mutewatch.audit_mute | 稽核室有席位今天產不出真正的發言(錯誤封包也算沒發言) | — | — |
| ✅ 未觸發 | false_fixedwatch.false_fixed | 有問題單宣稱已修,但偵測器今天還抓得到那個條件 | — | — |
| ✅ 未觸發 | schedulewatch.schedule | 排程檢查本身算不算得出來(算不出來=值班看不到排程) | — | — |
| ✅ 未觸發 | servingwatch.serving | 站台的 :8010 是不是由 systemd unit 起的行程在服務,而且它啟動得比 web/ 與 src/tx/ 最新的 .py 還晚(uvicorn 不 reload,改了沒重啟就是在服務舊模組) | — | — |
| ✅ 未觸發 | supervisorwatch.supervisor | schedule_health.json 超過門檻沒更新(/health 上的「全部準時」不可信) | — | — |
| ✅ 未觸發 | themewatch.theme | 題材/台指期座位檔沒有在該跑的時間之後變新 | — | — |
| ✅ 未觸發 | tx_serieswatch.tx_series | 台指期序列沒有在該跑的時間之後變新 | — | — |
| ✅ 未觸發 | us_seatswatch.us_seats | 美股座位檔沒有在該跑的時間之後變新 | — | — |
橫幅(15 條,3 條成立)判準寫在 web/data.py banners()
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| 🔴 需處理 | 業務帳本banner.artifact_health | 業務產物驗收有 fail(帳本該前進卻沒前進、縮水、解析失敗被記成零…),或驗收本身超過 20 小時沒更新 | major | 🔴 業務帳本沒有前進:meeting_run.json |
| ⚠️ 注意 | assumed-costbanner.assumed_cost | 成本/帳戶參數有未查證項(含 user_accepted,口徑比問題單寬) | minor | ⚠️ assumed-cost:成本參數有 2 項採假設值,本站所有績效與口數皆基於假設值 |
| 🔴 需處理 | 上次每日鏈路有步驟失敗banner.last_run_failed | logs/LAST_RUN_FAILED 這個檔存在 | major | 🔴 上次每日鏈路有步驟失敗:2026-10-14 — 1 個步驟失敗: |
| ✅ 未觸發 | 回測資料不齊banner.backtest_audit | 每日回測稽核(21:50)有 fail 項:缺日、歷史改寫、IV 帳不合理、該結算沒結算… | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 每週 CI 失敗banner.ci_failed | logs/CI_FAILED 這個檔存在 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 資料落後今天約banner.data_stale | 序列最後交易日落後今天 > 3 個工作日 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | Hermes 排程異常banner.hermes_jobs | 看門狗判定 Hermes 有排程連續失敗或沒按時完成 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | Hermes 看門狗banner.hermes_watchdog | Hermes 看門狗超過 45 分鐘沒更新(那 9 個排程此刻沒有人在看) | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 歷史指紋變動banner.history_rewrite | logs/HISTORY_REWRITE 存在——應該凍結的過去被改寫了 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 件排程沒有按時完成banner.jobs_late | 有工作的產物沒在期限前變新(判產物,不判腳本說了什麼) | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 沒有任何行程在服務站台banner.serving_down | 連 :8010 都沒有人在聽 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 站台不是由 systemd unit 在跑banner.serving_orphan | 服務站台的行程不是 systemd unit 起的(重開機不會自己回來) | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 站台在跑舊程式碼banner.serving_stale | 磁碟上的程式碼比服務中的行程新——改了沒重啟 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 站台行程量不到banner.serving_unknown | 量不出服務行程的狀態——這本身就是異常 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
| ✅ 未觸發 | 排程監督自己停了banner.supervisor_stale | schedule_health 太舊——「全部準時」不可信 | — | 此刻沒有這面橫幅(判得出來,不是不知道) |
排程(56 條,0 條成立)判準寫在 config/schedule.toml + src/tx/schedule.py check_all()
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| ✅ 未觸發 | Agent 限次補跑schedule.Agent 限次補跑 | 7 * * * * 之後產物要變新(data/live/agent_recovery.json) | — | 每 15 分鐘巡查同日失敗;最多三次補跑;逾期或非暫時性問題交人工 |
| ✅ 未觸發 | Agent 限次補跑(每小時 22 分)schedule.Agent 限次補跑(每小時 22 分) | 22 * * * * 之後產物要變新(data/live/agent_recovery.json) | — | 同一補跑服務的四個巡查時刻;以共同心跳驗收,工作本身另看執行紀錄 |
| ✅ 未觸發 | Agent 限次補跑(每小時 37 分)schedule.Agent 限次補跑(每小時 37 分) | 37 * * * * 之後產物要變新(data/live/agent_recovery.json) | — | 同一補跑服務的四個巡查時刻;以共同心跳驗收,工作本身另看執行紀錄 |
| ✅ 未觸發 | Agent 限次補跑(每小時 52 分)schedule.Agent 限次補跑(每小時 52 分) | 52 * * * * 之後產物要變新(data/live/agent_recovery.json) | — | 同一補跑服務的四個巡查時刻;以共同心跳驗收,工作本身另看執行紀錄 |
| ✅ 未觸發 | FinMind 原件盤點schedule.FinMind 原件盤點 | 15 21 * * 1-6 之後產物要變新(data/live/finmind_inventory.json) | — | 唯讀:逐主鍵比「帳上每一列都找得到原件」,並拿 tx_night(期交所來源)當真值驗分 K 的晚盤段與夜盤尾巴——只比帳與原件的話,兩邊都沒有的東西永遠對得上。給人看的在 reports/finmind-storage.md。有缺口時 exit 1,但產物照寫(不然缺口會偽裝成「這支沒跑」)。 |
| ✅ 未觸發 | FinMind 每日增量(分點/分 K/集保/月營收/日K)schedule.FinMind 每日增量(分點/分 K/集保/月營收/日K) | 30 20 * * 1-6 之後產物要變新(data/live/finmind_daily_run.json) | — | 使用者 2026-09-23:「務必確保有存到本機上」。backfill_finmind.py 原本沒有排程——回補做完之後,從隔天起就沒有人在收 FinMind 的分點與台指期分 K(Sponsor 限定,10/22 到期後抓不回來)。🔴 --recheck 3:來源會晚到(09-22 的分 K 在 09-23 15:06 抓時還沒有晚盤),最近 3 個交易日即使收過也重抓。原件…(截斷) |
| ✅ 未觸發 | Hermes cron doctor 快照schedule.Hermes cron doctor 快照 | 5 7 * * * 之後產物要變新(data/live/hermes_doctor.txt) | — | 另一條 crontab 跑 hermes cron doctor 寫成檔,看門狗(不 shell out)讀它。doctor 只在排程時刻之後才發現設定層的錯(workdir 不在、憑證缺、drift),這裡讓它每天早上先講一次 |
| ✅ 未觸發 | TimesFM 影子預報schedule.TimesFM 影子預報 | 39 18 * * 1-5 之後產物要變新(data/live/timesfm_shadow_run.json) | — | 零樣本基礎模型(2.5,Apache 權重)與 GARCH 區間考同一份卷,record_only;判準凍結於 prereg-2026-09-01-timesfm-shadow.toml |
| ✅ 未觸發 | 上游資料層每日更新schedule.上游資料層每日更新 | 10 18 * * 1-5 之後產物要變新(twii_forecast/data/prod/model_panel.parquet) | — | twii_forecast 的 staging → prod 增量更新,排在 18:00 Hermes 之後、 18:30 本站 daily_run 之前(實測全鏈路 4 分 22 秒)。 🔴 2026-09-03 之前這個 repo 完全沒有排程(crontab/systemd/cron.d 三處都查過)。結果是 model_panel 停在 2026-08-12,本站的 cr…(截斷) |
| ✅ 未觸發 | 主動式 ETF 持股與買賣異動schedule.主動式 ETF 持股與買賣異動 | 50 8 * * 1-6 之後產物要變新(data/live/active_etf_run.json) | — | 主動式 ETF 依規定每日揭露持股,所以「經理人今天買了什麼」當天就看得到。🔴 揭露是分批進來的:實測穩定日 34/40,而最近一個交易日常常只有 20/40(跨兩天才填滿)——所以這支每次都重收最近 5 個交易日,並且「最新收齊的交易日」用覆蓋率判不用日期判。⚠️ 清單 40 檔裡有 6 檔完全沒有持股資料(3 檔剛上市、3 檔來源就沒有),畫面上逐檔列出來——「沒買賣」與「沒揭…(截斷) |
| ✅ 未觸發 | 亞洲鄰居日線schedule.亞洲鄰居日線 | 10 15 * * 1-5 之後產物要變新(data/live/asia_daily_run.json) | — | 日經 225+KOSPI 收盤後併入(14:00/14:30 台北時間收)。值班顯示與觀察——Yahoo 不當正式來源,不進特徵 |
| ✅ 未觸發 | 個股分點進出schedule.個股分點進出 | 50 15 * * 1-5 之後產物要變新(data/live/broker_daily_run.json) | — | 抓使用者觀察清單裡每一檔的前十大券商分點(Yahoo)。🔴 來源只給一天,而 15:50 抓到的是前一個交易日(分點資料傍晚才公布;2026-09-22 15:48 實測「資料時間:09-21」)——每天補收昨天那一張,不會遺失,但永遠晚一天。漏跑一天則永久少一天;六視窗(180/90/60/30/10/1)是往前累積出來的,不是抓得到的 |
| ✅ 未觸發 | 全市場盤後(看盤)schedule.全市場盤後(看盤) | 15 20 * * 1-6 之後產物要變新(data/live/market_run.json) | — | 看盤軟體的底:每一檔的日 K、三大法人、融資融券+大盤法人、加權/櫃買指數 → data/live/market.db。原件照來源原樣存 data/raw/finmind/market_*/。⚠️ 來源是 FinMind(10/22 到期),到期後要換官方端點——執行紀錄會記 errors/root_cause,首頁橫幅看內容。 |
| ✅ 未觸發 | 券商推薦(會員首頁)schedule.券商推薦(會員首頁) | 45 21 * * * 之後產物要變新(data/live/broker_calls_run.json) | — | 使用者 2026-09-24:會員登入後的首頁做成像 toalpha.tw/brokers。FinMind 全市場新聞+站上新聞 → 抓內文(原件先存 data/raw/broker_news/)→ 本地模型抽取 → 每一個數字都對過原文才收。模型不可用時整輪停手、不寫帳(run 檔記 root_cause),不會被記成「那天券商沒講話」。 |
| ✅ 未觸發 | 台指期每日鏈路schedule.台指期每日鏈路 | 30 18 * * 1-5 之後產物要變新(data/live/predictions.csv) | — | 重建 + 預測 + 結算,約 3–5 分鐘 |
| ✅ 未觸發 | 台指期部 agentschedule.台指期部 agent | 45 18 * * 1-5 之後產物要變新(data/live/agent_wave_tx.json) | — | 18:30 daily_run 之後 |
| ✅ 未觸發 | 回測資料稽核schedule.回測資料稽核 | 50 21 * * * 之後產物要變新(data/live/backtest_audit.json) | — | 使用者 2026-09-30:「每天都要檢查一次我們的回測到底有沒有做完」。唯讀、不動手:逐日比對回測紀錄三段×三天期、OOS 檔、live 帳、價格/標籤/特徵/籌碼、選擇權原件與 IV 帳(含合理性)、分 K、往前累積的帳。「回測做到最新了嗎」量的是已經有答案、卻還沒進回測的交易日(連假與答案還沒揭曉的日子不算)。排在 20:30 FinMind 分 K 與 21:15 盤點之後,當天…(截斷) |
| ✅ 未觸發 | 官方月營收與重大訊息schedule.官方月營收與重大訊息 | 40 8 * * * 之後產物要變新(data/live/tw_revenue_run.json) | — | 公開資訊觀測站(走證交所/櫃買 openapi,端點與實測見
scripts/probe_mops_openapi.py)。使用者三層檢查表第 3 項的正式來源:
月營收回答「故事有沒有變成訂單」,重大訊息回答「有沒有官方文件」。
🔴 四份端點全部只給最新一期(探針逐一量過 資料年月/出表日期
的取值只有一種),所以與集保同一個形狀——不存就永遠沒有。
重大訊息漏一天…(截斷) |
| ✅ 未觸發 | 帳本備份schedule.帳本備份 | 30 23 * * * 之後產物要變新(data/backups/last_backup.json) | — | append-only 帳本+prereg 判準,每天一顆 tar.gz 保留 14 天;10/12–10/22 接續永久封存,狀態在 finmind_preservation_run.json。備份掛了也要有人知道——監督盯 manifest |
| ✅ 未觸發 | 座位事實(台指期+題材)schedule.座位事實(台指期+題材) | 50 15 * * 1-5 之後產物要變新(data/live/dept_seats.json) | — | build_dept_seats.py——寫死座位的事實,無 LLM。15:50 題材波與 18:45
台指期波都會先跑它再叫 agent(同一個檔,兩波各寫一次)。
🔴 2026-09-04 才宣告,理由是 nag.AUTO_RERUNNABLE 裡有一條對應它的
自動重跑規則,但 key 寫成一個不存在的工作名——那條規則從來沒有生效過。
宣告成一條工作,key 才有東西對得…(截斷) |
| ✅ 未觸發 | 期交所 Put/Call 比schedule.期交所 Put/Call 比 | 20 15 * * 1-5 之後產物要變新(data/live/pc_ratio_run.json) | — | 收盤後封存+併入歷史。來源只給最近約 30 個交易日——滾動視窗,與三大法人同一種來源 |
| ✅ 未觸發 | 板塊資金流補抓schedule.板塊資金流補抓 | 12 16 * * 1-5 之後產物要變新(Thematic stocks/data/sector_flow/catchup_run.json) | — | 15:40 那一班踩在證交所 T86 的發布時刻上。實測最近七個交易日有三天
只拿到單邊(08-26/08-31 缺上櫃,09-07/09-08 缺上市),而單邊的那一天會被
COMPLETE_MIN 整天排除不進看板——排除是對的,但代價是看板結構上永遠
落後一個交易日。使用者 2026-09-09 問「今天 9/9 為什麼還在 9/7」就是這件事。
這一班只做「法人回補 → 收盤…(截斷) |
| ✅ 未觸發 | 極端多方訊號schedule.極端多方訊號 | 36 18 * * 1-5 之後產物要變新(data/live/extreme_signal.jsonl) | — | 架構1(q90/750 高閥值,只做多方,record_only)。18:30 主鏈路之後,腳本自帶等待與 stale 標記 |
| ✅ 未觸發 | 極端訊號結算schedule.極端訊號結算 | 42 18 * * 1-5 之後產物要變新(data/live/extreme_settle_run.json) | — | 開口的隔天回來對答案(T+1 開盤進、收盤出、扣 3bp)。閉嘴日也結算當對照——只記開口日是選擇性記帳 |
| ✅ 未觸發 | 每日精選發布schedule.每日精選發布 | 10 21 * * 1-5 之後產物要變新(data/live/daily_picks_publish_run.json) | — | Hermes 本地模型執行固定程式;只在當日資料完整時保存首次候選,過期不補寫 |
| ✅ 未觸發 | 每日精選盤前複核schedule.每日精選盤前複核 | 30 8 * * 1-5 之後產物要變新(data/live/daily_picks_preopen.json) | — | 盤前交易風險快照;原名單保留,新增風險標示暫停進場 |
| ✅ 未觸發 | 每週 CIschedule.每週 CI | 0 7 * * 0 之後產物要變新(logs/ci.log) | — | ok |
| ✅ 未觸發 | 盤外脈搏schedule.盤外脈搏 | 7 * * * * 之後產物要變新(data/live/overnight_pulse.jsonl) | — | 每小時 24/7 收 ES/NQ/EWT/BTC/VIX 報價,point-in-time 封存。無 LLM——22:00–06:30 的空窗由它補上 |
| ✅ 未觸發 | 稽核室① 每日會議schedule.稽核室① 每日會議 | 10 19 * * 1-5 之後產物要變新(experiments/meeting_minutes.jsonl) | — | 三支的第一支。每次執行都 append 一列,挑 0 篇的日子也會動 |
| ✅ 未觸發 | 稽核室② 問題檢討schedule.稽核室② 問題檢討 | 10 19 * * 1-5 之後產物要變新(data/live/issue_review_run.json) | — | 三支的第二支。產物是 run 檔不是帳——沒有可處置的單子時帳不會動,run 檔每次都會寫 |
| ✅ 未觸發 | 稽核室③ 巡邏與結算schedule.稽核室③ 巡邏與結算 | 10 19 * * 1-5 之後產物要變新(data/live/dept_scores.csv) | — | 三支的第三支。三波都跑完才有得評 |
| ✅ 未觸發 | 美股 CBOE 波動率指數schedule.美股 CBOE 波動率指數 | 20 6 * * 1-6 之後產物要變新(data/live/cboe_vix_run.json) | — | VIX 期限結構的原廠來源;Yahoo 於 2026-07-17 把 ^VIX3M/^VIX9D/^VIX6M 整組下架。⚠️ 名字帶「美股」是刻意的——鞭子用工作名回推部門,沒有這兩個字它會被歸成沒有負責席的系統級 |
| ✅ 未觸發 | 美股座位schedule.美股座位 | 40 6 * * 1-6 之後產物要變新(data/live/us_seats.json) | — | ok |
| ✅ 未觸發 | 美股快照封存schedule.美股快照封存 | 30 6 * * 1-6 之後產物要變新(data/raw/us_snapshot/short_interest.csv) | — | 🔴 來源不提供歷史,不存就永遠沒有 |
| ✅ 未觸發 | 美股輿情脈搏schedule.美股輿情脈搏 | 22 * * * * 之後產物要變新(data/live/us_sentiment_run.json) | — | 美股版 NLP,8 來源(yfinance 逐檔/Google News 大盤+逐檔/CNBC/MarketWatch/ Nasdaq/StockTwits/Reddit)。與台股輿情共用字彙與彙總算式(tx.us_sentiment 的 import 區)。 比台股多一層逐檔情緒——ticker 一律由來源給(yfinance 與 Google News 逐檔查詢 抓取當下就帶),…(截斷) |
| ✅ 未觸發 | 美股部 agentschedule.美股部 agent | 45 6 * * 1-6 之後產物要變新(data/live/agent_wave_us.json) | — | 06:40 build_us_seats 之後 |
| ✅ 未觸發 | 自研假說會議schedule.自研假說會議 | 40 19 * * 1-5 之後產物要變新(data/live/research_council_run.json) | — | 觀察→提案→質疑→回測裁決。排在 19:10 稽核室之後——觀察池要等四波座位都跑完才滿 |
| ✅ 未觸發 | 觀察清單個股基本面schedule.觀察清單個股基本面 | 25 14 * * 1-5 之後產物要變新(data/live/tw_fundamentals_run.json) | — | 季 EPS 與營收(yfinance 季報表)。台股這側原本零基本面管線。
🔴 存的是季報原值不是算好的成長率:成長率隨時可以重算,原值不行;
而且 yfinance 會回頭修正歷史季報,所以每天封存一份快照
(data/raw/tw_fundamentals/)——「當時看到的是什麼」只有它答得出來。
|
| ✅ 未觸發 | 觀察清單個股日 Kschedule.觀察清單個股日 K | 5 14 * * 1-5 之後產物要變新(data/live/tw_bars_run.json) | — | 技術面那一層的地基(均線排列/量價/位階)。母體是所有使用者觀察清單的 聯集,與個股分點同一個規矩——沒有人看的就不抓。 ⚠️ 排 14:05(台股 13:30 收盤後):跑在收盤前的話最後一根是盤中的半根, 量比與上影線會算在一根還沒走完的 K 上,而畫面上看不出來。 ⚠️ 與美股快照(06:30,不存就永遠沒有)錯開——同一個 yfinance 配額, 新功能把既有的關鍵工作擠掉是要…(截斷) |
| ✅ 未觸發 | 設計評議schedule.設計評議 | 0 7 * * 1 之後產物要變新(data/live/design_council.json) | — | 每週一次。網站量測會過期,改過版之後值得手動再跑 |
| ✅ 未觸發 | 論文研究部schedule.論文研究部 | 20 7 * * 1-6 之後產物要變新(data/live/paper_hunter_run.json) | — | arXiv 篩選+最多 2 篇回測。產物是 run 檔不是帳——挑 0 篇的日子帳不會動,run 檔每次都會寫 |
| ✅ 未觸發 | 輿情儀器抽查schedule.輿情儀器抽查 | 20 13 * * * 之後產物要變新(data/live/sentiment_audit_run.json) | — | 每天抽 5 則已打分標題給第二個模型盲重打,比一致率。11 月情緒判定要回答「是市場沒效應還是量尺在亂打」——沒有這條帳只能用信仰回答 |
| ✅ 未觸發 | 輿情脈搏schedule.輿情脈搏 | 12 * * * * 之後產物要變新(data/live/sentiment_run.json) | — | 每小時收 7 來源新聞標題+本地模型打情緒標籤(NLP)。標題會捲走,不收就永遠沒有;run 標記每輪都寫,沒新聞的小時也留痕 |
| ✅ 未觸發 | 選擇權 IV 長序列(日行情表)schedule.選擇權 IV 長序列(日行情表) | 35 15 * * 1-5 之後產物要變新(data/live/option_iv_daily_run.json) | — | 期交所每日行情表 → ATM IV/偏斜,回看 10 天自癒。與逐筆版是兩條不同基準的序列,刻意不混;歷史回補(2010 起)另以手動長跑完成 |
| ✅ 未觸發 | 選擇權情報(IV/偏斜)schedule.選擇權情報(IV/偏斜) | 25 15 * * 1-5 之後產物要變新(data/live/option_iv_run.json) | — | TXO 月選收盤前 45 分鐘 → 平價反解遠期價 → ATM IV 與 ±3% 偏斜。唯一前瞻定價的資訊源;從 raw 封存重算,冪等 |
| ✅ 未觸發 | 集保股權分散表schedule.集保股權分散表 | 20 8 * * 6 之後產物要變新(data/live/tdcc_holders_run.json) | — | 籌碼集中度唯一的來源(集保 TDCC opendata id=1-5)。使用者 2026-09-14
給的三層檢查表裡,這是專案裡完全沒有的那一格。
🔴 來源只給最新一期,不存就永遠沒有——整份 CSV 只有一個資料日期
(探針實測)。所以「是否逐漸集中」是累積出來的,漏一週永久少一週。
集保每週五更新,排週六早上留一天緩衝;同一期重跑冪等。
⚠️ artifact…(截斷) |
| ✅ 未觸發 | 題材修正版帳(上櫃錯位+除權息)schedule.題材修正版帳(上櫃錯位+除權息) | 40 15 * * 1-5 之後產物要變新(Thematic stocks/data/theme_discovery/discovery_outcomes_resettled.jsonl) | — | daily_bot 第 16b 步(resettle_discovery.py)。每天全量重算、整份重寫,
所以 mtime 每天都會動;原帳 discovery_outcomes.jsonl 一個字不動。
修正的是 10 天上櫃價格錯位(7,617 格)與除權息(證交所 TWT49U+櫃買 exDailyQ,
免費來源,10/22 之後照跑)。數字每天重算,看…(截斷) |
| ✅ 未觸發 | 題材停損路徑判定(平行帳)schedule.題材停損路徑判定(平行帳) | 40 15 * * 1-5 之後產物要變新(Thematic stocks/scripts/theme_engine/path_outcomes.jsonl) | — | daily_bot 第 6b 步(path_outcomes.py)。停損/達標改看持有期間的日高低,
跳空出場用開盤價。outcome_log.csv 一個字不動——本站的 theme_variants
平行帳靠上游不動當對照組。
|
| ✅ 未觸發 | 題材可交易性標記(處置/漲停價/市值)schedule.題材可交易性標記(處置/漲停價/市值) | 40 15 * * 1-5 之後產物要變新(Thematic stocks/data/tradability_run.json) | — | daily_bot 第 16a 步(tradability.py)。處置走證交所+櫃買的免費公告;
漲停價與市值走 FinMind(Sponsor,2026-10-22 到期)。
⚠️ 到期後這一步不會失敗、run 檔照寫(frozen_since 記凍結起點),
所以這一條會一直是綠的——凍結要看頁面上「漲停價不明」那一欄在長大,
不是看這裡。這是刻意的:到期不是故障,是…(截斷) |
| ✅ 未觸發 | 題材條件選股前向帳schedule.題材條件選股前向帳 | 45 20 * * 1-5 之後產物要變新(data/live/theme_screen_run.json) | — | 使用者 2026-10-01:「開始做前向記帳」。prereg-2026-10-01-theme-screen:/theme-screen 的清單每天收盤後記一份(連同當下的籌碼與營收狀態——那些檔隔天就變)、持有期滿的用 market.db 結算並對同日候選池。排在 20:15 全市場盤後之後(行情要先進來)。休市日 market.db 沒有新的一天 → 寫 run 檔、exit 0…(截斷) |
| ✅ 未觸發 | 題材狀態報告schedule.題材狀態報告 | 0 21 * * 1-5 之後產物要變新(Thematic stocks/daily_bot.log) | — | ok |
| ✅ 未觸發 | 題材獵人每日鏈路schedule.題材獵人每日鏈路 | 40 15 * * 1-5 之後產物要變新(Thematic stocks/data/theme_signals/latest.json) | — | 10 步鏈路,第 10 步是題材關聯圖 |
| ✅ 未觸發 | 題材獵人開盤前簡報schedule.題材獵人開盤前簡報 | 0 6 * * 1-5 之後產物要變新(Thematic stocks/data/theme_discovery/premarket_brief.json) | — | 昨夜美股收盤 × 台股前一日 × 今早新聞。與 15:40 那班的資料時點不同 ——美股 4:00pm ET 收盤是台北 04:00,15:40 的鏈路結構上看不到它。 06:00 跑是為了留兩小時緩衝給 yfinance 定案,且趕在台股 09:00 開盤前。 |
| ✅ 未觸發 | 題材變體樣本帳schedule.題材變體樣本帳 | 10 16 * * 1-5 之後產物要變新(data/live/theme_variants.csv) | — | prereg-2026-08-27-theme-horizon 的前瞻樣本。排在 15:40 題材鏈路之後——收的是它當天產生的預測 |
| ✅ 未觸發 | 題材部 agentschedule.題材部 agent | 50 15 * * 1-5 之後產物要變新(data/live/agent_wave_theme.json) | — | 15:40 題材獵人 daily_bot 之後 |
| ✅ 未觸發 | 題材關聯圖schedule.題材關聯圖 | 40 15 * * 1-5 之後產物要變新(Thematic stocks/data/theme_graph/graph.json) | — | daily_bot 第 10 步的產物。與上一條分開列——整條鏈路成功不代表最後一步成功 |
Hermes(26 條,0 條成立)判準寫在 scripts/hermes_watchdog.py(一般 crontab */15)
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| ✅ 未觸發 | hermes.dispatch | 近 3 小時「Restart-safe cron worker dispatch failed」≥ 2 次(systemd user scope 建不起來——那三天的死法) | — | — |
| ✅ 未觸發 | hermes.doctor | hermes cron doctor 有回報項目 | — | — |
| ✅ 未觸發 | hermes.gateway | gateway_state.json 說 running 且 pid 活著(不呼叫 systemctl) | — | — |
| ✅ 未觸發 | hermes.heartbeat | 排程器 ticker 心跳超過 10 分鐘沒跳 | — | — |
| ✅ 未觸發 | hermes.incidents | 有 incident 停在 detected 超過 1 小時 | — | — |
| ✅ 未觸發 | Hermes 排程 #7(0 3 * * 0)hermes.job.50155969a0e2 | 0 3 * * 0:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-11T03:00 |
| ✅ 未觸發 | Hermes 排程 #4(0 8 * * *)hermes.job.63dd4a322917 | 0 8 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T08:00 |
| ✅ 未觸發 | Hermes 排程 #5(every 30m)hermes.job.70589e6d5ad8 | every 30m:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T18:00 |
| ✅ 未觸發 | Hermes 排程 #15(15 22 * * *)hermes.job.73c6735195a8 | 15 22 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-13T22:15 |
| ✅ 未觸發 | Hermes 排程 #14(25 21 * * *)hermes.job.831c715646fe | 25 21 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-13T21:25 |
| ✅ 未觸發 | Hermes 排程 #13(0 14 * * *)hermes.job.93506735f28b | 0 14 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T14:00 |
| ✅ 未觸發 | Hermes 排程 #1(30 8 * * 1-5)hermes.job.942f012fdb98 | 30 8 * * 1-5:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T08:30 |
| ✅ 未觸發 | Hermes 排程 #10(0 3 * * 1)hermes.job.99832262806e | 0 3 * * 1:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-12T03:00 |
| ✅ 未觸發 | Hermes 排程 #8(30 8 * * *)hermes.job.b6afc30b6fa0 | 30 8 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T08:30 |
| ✅ 未觸發 | Hermes 排程 #9(0 23 * * 0)hermes.job.b6f23737ab06 | 0 23 * * 0:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-11T23:00 |
| ✅ 未觸發 | Hermes 排程 #6(every 30m)hermes.job.c51e0e834cb5 | every 30m:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T18:08 |
| ✅ 未觸發 | Hermes 排程 #12(0 20 * * 0)hermes.job.cfc808d4c9b2 | 0 20 * * 0:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-11T20:00 |
| ✅ 未觸發 | Hermes 排程 #3(50 15 * * 1-5)hermes.job.d26e18adf944 | 50 15 * * 1-5:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T15:50 |
| ✅ 未觸發 | Hermes 排程 #2(0 18 * * 1-5)hermes.job.d2d4fcc5be3f | 0 18 * * 1-5:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T18:00 |
| ✅ 未觸發 | Hermes 排程 #11(0 9 * * *)hermes.job.eb01268d4594 | 0 9 * * *:連續失敗 < 3 且上一次該跑的時間之後成功過(工作名稱不公開,見本機 hermes_watchdog.json) | — | 最後成功 2026-10-14T09:00 |
| ✅ 未觸發 | hermes.jobs | jobs.json 讀得到(排程清單本身) | — | — |
| ✅ 未觸發 | hermes.ledger | executions.db 開得起來(Hermes 的執行帳) | — | — |
| ✅ 未觸發 | hermes.mirror | 帳的鏡像寫得進去(Hermes 只留 1000 筆,週工作的「上次成功」7 天就會消失) | — | — |
| ✅ 未觸發 | hermes.ollama | 本機 ollama 活著(3 個本機工作與 fallback 都靠它) | — | — |
| ✅ 未觸發 | hermes.ollama_cpu | 載入的模型完全在 GPU 上——掉到 CPU 會讓每通從 2 秒變數分鐘,而畫面上只看得到逾時 | — | — |
| ✅ 未觸發 | Hermes 看門狗有在跑hermes.watchdog | 看門狗產物存在且 45 分鐘內更新過 | — | 6 分鐘前 |
業務驗收(29 條,1 條成立)判準寫在 src/tx/artifacts.py(scripts/supervisor.py 寫 data/live/artifact_health.json)
| 狀態 | 條件 | 判準 | 嚴重度 | 此刻 |
|---|---|---|---|---|
| ⚠️ 注意 | data/live/market.dbartifact.market_db | 日 K/法人/融資最多晚 1 個交易日 | minor | 來源晚到、隔天會重抓:margin 晚 1 天 |
| ✅ 未觸發 | data/live/extreme_outcomes.jsonlartifact.extreme_settlement | 非 stale 的訊號日、隔天行情已有,就要結算(開口日與閉嘴日都算) | — | 應結算 28 個訊號日,全部結算 |
| ✅ 未觸發 | config/tx-calendar-2026-10-07.jsonartifact.futures_calendar | 日曆封存指紋一致,舊預測可依原版接續;到期前 60 曆日提醒 | — | 日曆涵蓋至 2026-12-31,剩 78 曆日。到期前 60 日提醒;延伸須保留原版本結算能力。 |
| ✅ 未觸發 | data/live/futures_research.dbartifact.futures_compatibility | 所有未結算版本均有對應引擎與相同政策指紋;結算不可成為無來源孤兒 | — | 共 40 筆預測、12 筆結算;未結算版本與政策均有對應。 |
| ✅ 未觸發 | data/live/futures_research.dbartifact.futures_ledger_size | 跨次驗收比較所有版本 forecasts/outcomes 列數,不可縮水 | — | 所有版本預測/結算列數未縮水。 |
| ✅ 未觸發 | data/live/futures_research.dbartifact.futures_pending | 到期仍未結算須列明待查;未到期保持等待,不捏造成交 | — | ⏳ 尚未到期:28 筆尚未到期或仍在當日結算寬限內;沒有到期未結算紀錄。 |
| ✅ 未觸發 | data/live/futures_research.dbartifact.futures_publication | 啟用後每個交易日 22:00 前,當日四天期×多空八組事前預測完整入帳;不補寫過去 | — | 4 個交易日各 8 組事前預測完整入帳。 |
| ✅ 未觸發 | data/live/predictions.csvartifact.live_advance | 最新預測日追上價格序列最後交易日 | — | 最新預測日 2026-10-13 = 序列最後交易日 |
| ✅ 未觸發 | data/live/outcomes.csvartifact.live_settlement | 已有答案的事前預測全部結算;pred_id 不重複 | — | 已有答案的 103 筆全部結算 |
| ✅ 未觸發 | data/live/papers.jsonlartifact.papers | 零入選是正常完成;解析失敗不可記成零入選;挑了就要入帳 | — | 2026-10-14 篩了 40 篇、零入選——正常完成(不要求帳本每天成長) |
| ✅ 未觸發 | data/live/record.csvartifact.record | 逐日紀錄做到最後一個有答案的交易日(落後 ≥3 個交易日為 fail) | — | 已做到最後一個有答案的交易日 |
| ✅ 未觸發 | data/live/research_council_run.jsonartifact.research_council | 最新研究執行有有效結局;解析/模型故障不得當作零提案 | — | 2026-10-13 最近一次研究執行:lineage_closed |
| ✅ 未觸發 | data/live/theme_screen_bench.jsonlartifact.screen_ledger:bench | 第一筆 5 日結算到期後檔案要出現;未到期明說 pending | — | 第一份清單 2026-10-01 的 5 日結算應於 2026-10-08 之後出現,已出現 |
| ✅ 未觸發 | data/live/theme_screen_settled.jsonlartifact.screen_ledger:settled | 第一筆 5 日結算到期後檔案要出現;未到期明說 pending | — | 第一份清單 2026-10-01 的 5 日結算應於 2026-10-08 之後出現,已出現 |
| ✅ 未觸發 | data/live/news_sentiment.jsonlartifact.sentiment_tw | run 檔說這一輪寫了幾則,帳上就要有幾則;解析失敗率不可高於一半 | — | run 檔與帳本一致(這一輪 40 則,解析失敗 0) |
| ✅ 未觸發 | data/live/us_news_sentiment.jsonlartifact.sentiment_us | run 檔說這一輪寫了幾則,帳上就要有幾則;解析失敗率不可高於一半 | — | run 檔與帳本一致(這一輪 22 則,解析失敗 0) |
| ✅ 未觸發 | data/live/agent_memory.jsonlartifact.shrink:agent_memory.jsonl | 只增不改:列數不可減少 | — | 3,838 列(前次 3,838) |
| ✅ 未觸發 | data/live/extreme_outcomes.jsonlartifact.shrink:extreme_outcomes.jsonl | 只增不改:列數不可減少 | — | 28 列(前次 28) |
| ✅ 未觸發 | data/live/extreme_signal.jsonlartifact.shrink:extreme_signal.jsonl | 只增不改:列數不可減少 | — | 33 列(前次 33) |
| ✅ 未觸發 | data/live/hypotheses.jsonlartifact.shrink:hypotheses.jsonl | 只增不改:列數不可減少 | — | 29 列(前次 29) |
| ✅ 未觸發 | data/live/issues.jsonlartifact.shrink:issues.jsonl | 只增不改:列數不可減少 | — | 978 列(前次 978) |
| ✅ 未觸發 | data/live/news_sentiment.jsonlartifact.shrink:news_sentiment.jsonl | 只增不改:列數不可減少 | — | 22,660 列(前次 22,620) |
| ✅ 未觸發 | data/live/outcomes.csvartifact.shrink:outcomes.csv | 只增不改:列數不可減少 | — | 103 列(前次 103) |
| ✅ 未觸發 | data/live/papers.jsonlartifact.shrink:papers.jsonl | 只增不改:列數不可減少 | — | 18 列(前次 18) |
| ✅ 未觸發 | data/live/predictions.csvartifact.shrink:predictions.csv | 只增不改:列數不可減少 | — | 112 列(前次 112) |
| ✅ 未觸發 | data/live/record.csvartifact.shrink:record.csv | 整份重寫:不可一次少一半以上 | — | 24,543 列(前次 24,543) |
| ✅ 未觸發 | data/live/theme_screen_days.jsonlartifact.shrink:theme_screen_days.jsonl | 只增不改:列數不可減少 | — | 8 列(前次 8) |
| ✅ 未觸發 | data/live/theme_screen_picks.jsonlartifact.shrink:theme_screen_picks.jsonl | 只增不改:列數不可減少 | — | 765 列(前次 765) |
| ✅ 未觸發 | data/live/us_news_sentiment.jsonlartifact.shrink:us_news_sentiment.jsonl | 只增不改:列數不可減少 | — | 34,547 列(前次 34,547) |
版本
5f92ccf(第 163 次提交,2026-10-14) | 資料建置於 2026-10-14 10:30 UTC | 行情與研究結果供查看;會員可管理觀察清單並要求更新個股分析