-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Labels
enhancementNew feature or requestNew feature or request
Description
先說明:這是一個「建議擴充方向」的提案(非立即要改現有行為)。我注意到本專案目前能產出市場情緒立場與風險等級,但這些輸出尚未被結構化保存,也缺少 7/14 天後的後驗追蹤與復盤,因此很難:
- 衡量分析品質是否真的在變好
- 校準信心(避免過度自信)
- 系統化累積「常見漏風險」清單
此 repo 目前沒有 Discussions,所以先用 Issue 把想法整理上來,供 owner 參考;如果方向認同,我也願意再把它拆成小步驟貢獻 PR。
背景 / 動機(為什麼值得做)
本專案的核心價值不是「單次看起來像真的報告」,而是「報告有立場 + 可追蹤 + 可復盤」。
如果每次任務都會輸出:
- 情緒立場(看多/看空/中性)
- 風險等級(低/中/高)
- 以及若干關鍵論點
那麼它本質上就是一筆「可回測的預測」。加入 time-series / follow-up 層後,才能把結果變成長期可改進的系統,而不是一次性的文字生成。
建議 MVP:Prediction Ledger + 7D/14D Follow-up + Post-mortem
MVP 目標
- 台股示範(ticker 例如
2330.TW) - horizon:7 天與 14 天
- 產出仍是研究/風控報告(不產生交易指令、不自動下單)
(1) 任務結束落地「可追蹤預測」到本地 SQLite(或 DuckDB)
建議新增一個小型 ledger DB(例如 quant_python_ai.sqlite),把每次任務的「立場/評判」存成結構化資料。
最小 schema(可再精簡):
-- 每次 run(可用於 prompt/model 版本追溯)
CREATE TABLE runs (
run_id TEXT PRIMARY KEY,
created_at TEXT NOT NULL,
user_query TEXT NOT NULL,
model_id TEXT NOT NULL,
provider TEXT NULL,
prompt_version TEXT NULL
);
-- 研究來源(UNTRUSTED)
CREATE TABLE sources (
source_id INTEGER PRIMARY KEY AUTOINCREMENT,
run_id TEXT NOT NULL,
idx INTEGER NOT NULL, -- 對應 [來源#] 的 #
title TEXT,
url TEXT,
published_date TEXT,
snippet TEXT,
content_hash TEXT,
FOREIGN KEY(run_id) REFERENCES runs(run_id)
);
-- 報告的可回測預測
CREATE TABLE predictions (
prediction_id TEXT PRIMARY KEY,
run_id TEXT NOT NULL,
asset TEXT NOT NULL, -- 2330.TW
horizon_days INTEGER NOT NULL, -- 7 或 14
sentiment TEXT NOT NULL, -- bullish/bearish/neutral
confidence REAL NOT NULL, -- 0~1(若不想做可先固定 0.5)
risk_level TEXT NOT NULL, -- low/med/high
key_claims_json TEXT NOT NULL, -- 每條 claim 要帶 [來源#]
watchlist_triggers_json TEXT NULL,
due_at TEXT NOT NULL,
created_at TEXT NOT NULL,
FOREIGN KEY(run_id) REFERENCES runs(run_id)
);
-- 到期後的 outcome
CREATE TABLE outcomes (
outcome_id TEXT PRIMARY KEY,
prediction_id TEXT NOT NULL,
evaluated_at TEXT NOT NULL,
start_price REAL,
end_price REAL,
return_pct REAL,
max_drawdown_pct REAL,
direction_correct INTEGER,
notes_md TEXT,
FOREIGN KEY(prediction_id) REFERENCES predictions(prediction_id)
);(2) 到期自動 Follow-up(7D/14D)
新增一個非互動命令(方便排程),例如:
python -m quant_python_ai.followup --due
行為:
- 找出
due_at <= now且尚未評估的 predictions - 取得該資產在 7D/14D 的價格序列
- 計算:
return_pct、max_drawdown_pct(MVP 先有這兩個就夠)
價格資料來源建議做成介面:
- MVP 先用
yfinance(台股 ticker 常見2330.TW格式) - 未來可換成 twstock/FinMind/券商 API(不綁死)
(3) Post-mortem:把「漏掉的風險」變成下一次的 checklist
Follow-up 產出除了數值,也建議有一段簡短的 post-mortem(可選用 LLM,但要控制成本):
- 這次波動/回撤主因可能是什麼?(引用新來源、或標註「資料不足」)
- 當初報告是否有提到這種風險?
- 建議新增/強化哪一條風險檢查項目(checklist item)
這能把「事後知道」轉成「下次會記得問」。
為什麼不是直接做 RL(rationale,精簡版)
在研究型 agent 上,先建立 可回測紀錄 + 後驗評分,通常比一開始做重型 RL 更:
- 便宜
- 可控
- 可 audit
有了 outcomes 後,後續再做:
- confidence 校準(reliability curve)
- prompt/model routing(bandit)
- 或生成多候選答案再 rerank
才有「學習訊號」。
安全與定位(避免誤用)
- 外部新聞/網頁一律視為 UNTRUSTED(避免 prompt injection)
- 本功能不提供交易指令、不得自動下單;只做研究與風險報告品質提升
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request