coreytrading
以領域 Agent、可替換模型執行器和可執行交易規則為基礎的美股交易運營系統。Codex 與 Claude 協作研究,宿主控制器校驗結果並提交通過複核的卡片更新,訂單由人工執行。
English · Agent 執行手冊 · 程式碼架構 · 定時任務 · 業務資料 · AI 搭建指南
所有模型共用的專案合同是 AGENTS.md(Codex 與 Claude Code ≥ 2.1.277 原生讀取);CLAUDE.md 只是一行 @AGENTS.md 匯入墊片,給舊版 Claude Code 執行時。
交易範圍為美股與現有美股期權流程。跨資產宏觀資料只用於環境觀測與研究輸入,不因此成為額外的交易市場。
架構
系統按領域劃分職責。每個角色的方法、證據要求和輸出許可權,與它使用的模型分別定義。將某個角色從 Codex 換成 Claude,只需調整路由;角色契約和交易規則繼續生效。
flowchart TD
Trigger["定時任務 / 互動請求"] --> Jobs["宿主控制器:jobs 與 pipeline"]
Sources["券商與市場快取 / 可選情報 / 估值賬本"] --> Inputs["凍結證據與領域檢視"]
Rules["結構、倉位與退出規則的程式碼真源"] --> Inputs
Inputs --> Jobs
Routes["角色與模型路由:Codex / Claude"] --> Jobs
Jobs --> Workflow["技術 → 風控 → 有限追問"]
Lens["宏觀透鏡(程式碼判讀,零模型)"] --> Inputs
Workflow --> Reports["研究報告、分歧與未知項"]
ValTask["獨立估值任務"] --> ValFlow["重新整理與凍結 → 估值計算與研究"]
ValFlow --> ValReport["獨立估值報告"]
Jobs --> Card["單卡技術提案"]
Card --> Review["另一執行器獨立複核"]
Review --> Submit["政策、時效、版本與寫入檢查"]
Rules --> Submit
Submit --> Writer["受控卡片 writer"]
Writer --> State["更新後的卡片與提交回執"]
State --> Plan["機械入場與退出計劃"]
Reports --> Human["人工審閱與執行"]
Plan --> Human
模型負責解釋證據和跨領域協作,Python 負責取數、金額計算、執行額度、結果校驗和狀態寫入。Worker 只接收凍結輸入並返回結構化 JSON,沒有工作區訪問、券商呼叫、訊息傳送或下單許可權。
預設 Agent 分工
| Agent | 執行器(執行時點) | 獨立複核執行器 | 職責 |
|---|---|---|---|
| 技術分析 | Claude(每日唯一模型角色;同收盤同卡片版本複用 run) | Codex | 判讀價格結構、gate 與 zone,提出單卡更新提案 |
| 風控/倉位管理 | 每日 = 程式碼渲染(quant/report/risk_receipt.py);周復盤 = Claude |
Codex | 檢查全組合敞口、購買力、退出約束和機械 sizing 收據 |
| 估值 | Claude(獨立日更) | Codex | 解讀財務報表、精簡 EPS 包、研究級目標和隱含預期 |
宏觀不是模型角色:宏觀透鏡由程式碼每個收盤判讀 —— 六盞風險燈(預告波動與回撤深度,不預告方向)、近 40 日最強驅動與市場讀法、市場在交易什麼、未來方向與情景 β,零模型呼叫、零授權效力;判別式 quant/core/macro_lens.py,釋出器 quant/journal/macro_lens_log.py。其精簡先驗隨每次凍結輸入進入技術與估值檢視。
agents/routing.json 是配置真源。領域角色、執行器、模型提供方和模型 ID 是四個概念:估值是角色,Codex CLI 是執行器,OpenAI 是模型提供方,某個具體 GPT 版本才是模型。路由 v2 通過 model_profiles 集中定義具體模型,各角色引用主用 profile 與獨立複核 profile。
| 模型 profile | 首選模型 | 次選模型 | 明確指定的 effort |
|---|---|---|---|
| Anthropic / Claude Code | claude-fable-5-1 |
claude-opus-5 |
xhigh,即 extra high |
| OpenAI / Codex CLI | gpt-6-astra |
gpt-5.6-sol |
high |
主用、備用和複核呼叫都明確傳入 model 與 effort,不繼承桌面對話中選中的模型。回執分別儲存請求引數和 CLI 後設資料實際報告的模型 ID;未報告或報告多個模型時,如實記錄,不用請求值代替確認結果。請求複核時才呼叫 reviewer;卡片提交是否需要獨立批准由 autopaint.review 決定。
模型有依據地棄權時,系統保留棄權結果。當前生產配置關閉模型備用與獨立複核:失敗保留為失敗,不轉交其他模型。控制器保留可配置的故障接管與複核能力,供顯式重新啟用。明確的 session 額度錯誤會跳過本次執行中該執行器的其餘模型。複核選擇與實際研究執行器相反的一方;該方不可用時研究保留為 needs_review,不能提交。複核不批准不觸發換模型重問。後續模型迭代按模型維護規則核驗版本、完成驗證後更新。
Agent 如何協作
- 捕獲證據。 宿主讀取既有狀態與快取,記錄 owner、時間和內容 hash,凍結共享快照及各角色檢視。捕獲不等於重新整理,缺失和失效資訊會保留。
- 領域研究。 交易流程中技術角色分析自己的領域輸入(宏觀先驗由宏觀透鏡程式碼提供);獨立估值流程按宿主計算、估值研究的順序執行。輸出區分事實觀察、假設、風險和未知項,引用繫結捕獲時的原始證據。
- 組合複核。 風控讀取自己的原始輸入與本輪技術報告。風控檢視覆蓋全部受管持倉,包括期權自身退出規則與可用 Greeks;金額來自既有機械計算。
- 定向追問。 跨領域請求按接收角色合併,最多追加一輪,未解決的問題留在記錄中。同一結論經另一模型轉述,不增加獨立證據。
當前配置允許單次 workflow 最多 2 個並行呼叫、8 次模型呼叫,不自動追問。宿主另設所有任務共享的上限:原生呼叫併發最多 2 個,滾動一小時內最多 12 次。備用同樣消耗預算,併發排隊有超時。這些額度約束本系統的工作量,不代表任一模型賬戶的剩餘額度或費用。
execution_transport = desktop 時宿主不啟動模型 CLI:資料包寫入 var/agent-runs/desktop/,各執行器的 Desktop 會話按 tasks/desktop-research.md 領取、作答並提交;編排、凍結證據、受控提交與 applied 回執仍歸宿主。每日迴圈只跑技術角色,風控收據由程式碼渲染,技術 + 風控工作流只在周復盤。
複核後的自動寫卡
當前配置開啟 autopaint.enabled 與 autopaint.apply,autopaint.review=false:技術提案通過宿主證據、revision 與機械政策檢查後寫入,不做第二模型複核。新研究記錄繫結該複核政策,舊記錄預設仍要求複核;回執標明模型複核「不需要」,而不是「已批准」。符合條件的缺卡、失效卡可進入自動更新流程。組合報告本身不寫卡;每個目標通過獨立單卡任務生成技術提案,是否做獨立模型複核由宿主政策決定。
宿主檢查原始證據、結果與政策繫結、有效期、引數白名單和目標卡當前版本,儲存原卡備份及提交準備回執,再呼叫既有的卡片 writer。券商欄位、lots、在途訂單和繫結約束繼續受到保護。
| 結果 | 含義 |
|---|---|
succeeded |
模型研究結果通過契約校驗,不證明已經寫卡 |
needs_review |
證據、複核或提交檢查存在待處理問題 |
partial |
任務已結束,仍有失敗或待辦事項留在記錄中 |
applied |
目標卡片更新具有已確認的提交回執 |
將 autopaint.apply 改為 false,自動寫卡流程回到研究與預覽。自動提交前會再次檢查開關,包括已經啟動但尚未提交的任務;關閉開關不撤銷已經完成的寫入。通過 submit --apply 明確選擇單筆提案,是另一個人工提交入口,具體行為見執行手冊。
如果寫入結果不確定,系統用準備回執中的 before/after hash 核對當前卡片。恢復只更新收據,不盲目重試寫卡。執行產物、卡片備份與健康事件共同保留調查所需的證據。
日常執行
任何能讓編碼 Agent 執行 prompt 的排程器(桌面任務執行器、配合 CLI Agent 的 cron)都可以觸發六個交易任務與宏觀透鏡釋出,Python 控制器獨立於排程器選擇各領域使用的執行器。
| 任務 | 領域工作 |
|---|---|
heartbeat |
券商與狀態同步、機械風控和退出告警、健康檢查、非阻塞缺卡派發 |
overnight-briefing |
重新整理每日輸入,執行技術角色(同收盤同卡片版本複用)並附程式碼渲染風控收據,貼宏觀透鏡幾行,處理重畫佇列並生成入場計劃 |
postclose-transition |
先評估退出,再執行完整收盤後的機械轉移,渲染轉移達標收據,執行技術研究並附程式碼渲染風控收據,處理重畫 |
gate-ladder-report |
等待同交易日 postclose 完結後,輸出機械 gate 階梯表 |
macro-lens |
實際收盤後 30 分鐘,不等盤後處理:重新整理跨資產日線,釋出程式碼判讀的宏觀透鏡(讀數、賬本、全文)並單獨推送;當日日線沒取到則不釋出 |
chart-read |
程式碼渲染兩種可交易形態(抄底 / 趨勢確認)已形成或即將形成的清單;零模型呼叫 |
weekly-portfolio-review |
用既有績效、技術證據與宏觀透鏡週迴顧完成組合風控復盤,NAV 周變剔除外部現金流 |
獨立的 valuation-daily 任務(tasks/claude/valuation-daily.md;Codex 執行器版 tasks/codex/valuation-daily.md)自行重新整理資料並執行估值鏈(含未驗證的研究級 12 個月目標),報告歸檔在 var/valuation-daily/。盤前與周復盤不執行估值角色。
盤前與盤後流程的關鍵順序是:
重新整理券商與市場輸入
→ 按原卡評估退出
→ 執行機械 regime 轉移
→ 領域研究與複核後的卡片更新
→ 重新整理提醒線和入場授權組
→ 生成入場計劃
同步重畫階段每輪至少處理五張卡,佇列更長時按 ⌈N/2⌉ 取整以保證兩輪排空,餘下目標留在待辦中。缺卡檢測也可以後臺派發,使用同一個單卡控制器與全域性額度。
market_sessions.py 通過 XNYS 日曆處理休市、半日市和夏令時。每份 prompt 先跑 quant/ops/agent_jobs.py due --kind <kind>;postclose、ladder、chart 分別在實際收盤後 10、20、35 分鐘開放執行視窗,統一在收盤後 60 分鐘截止。時間放行與上游任務完成是兩項獨立檢查。固定版本的日曆當前覆蓋 2000–2028 年;資料不可用或超出支援範圍時停止判斷,不退回按星期幾猜。
tasks/ 儲存版本管理的提示詞。live 副本、應用內註冊和實際完成回執是三種不同證據;具體時刻與同步流程統一維護在 tasks/README.md。
交易規則與資料所有權
核心策略仍是技術面優先的趨勢跟蹤。Gate 標記結構狀態轉移,zone 描述狀態內的參與區間,cap 是授權上限。這三個概念各有含義,由程式碼執行約束。
| 判定或資料 | 單一真源 |
|---|---|
| 價格結構、regime 與繫結止損 | structure.py 與 regime_transition.py |
| Gate 預算、敞口與可執行倉位容量 | sizing.py 與 book.py |
| 入場計劃與機械退出 | entry_guard.py 與 exit_guard.py |
| 券商數量、成交與在途訂單 | quant/sync/;Agent 不寫券商真值 |
| 技術卡片提案 | 技術角色、獨立複核及受控 writer |
| 宏觀與估值證據 | 資訊層上下文,不能覆蓋價格結構授權或退出規則 |
| NAV 變動與外部現金流 | nav_report.py 讀取 cash_flow_sync.py 維護的現金流賬本;出入金不是盈虧 |
| 策略研究與規則變更 | 策略 schema(私有規則是被忽略的副本)、研究腳手架 及適用的驗證研究 |
風控 Agent 解讀機械收據,不另造 sizing 公式。候選容量共享組合約束,不能相加成一批訂單的預算。購買力、工具身份或證據未知時,繼續報告未知。新聞與宏觀採集屬於可選、獨立維護的情報工作流;其釋出資料位於 trade/intelligence/(本倉只含 README 與合成示例),交易角色只讀消費已有歸檔,缺失時優雅降級。
倉庫結構
| 位置 | 內容 |
|---|---|
| AGENTS.md | 對所有模型生效的專案合同(Codex 與 Claude Code ≥ 2.1.277 原生讀取);CLAUDE.md 只是一行 @AGENTS.md 匯入墊片,給舊版 Claude Code 執行時 |
| AI_BOOTSTRAP.md / AI_BOOTSTRAP_CN.md | 編碼 Agent 的 fresh clone 搭建指南 |
| agents/ | 領域方法、角色契約、路由和執行手冊 |
| quant/ | 宿主控制器、資料同步、機械決策、估值和報告 |
| tests/ | 合成數據機械驗證、契約、隔離和倉庫檢查 |
| tasks/ | 定時任務提示詞真源與部署說明 |
| trade/ | AI 初始化合同:下表六個資料目錄的 README 與合成 *.example.* schema;私有卡片、持倉、事件、快取、情報資料與規則是被忽略的副本 |
var/ |
被忽略的私有執行狀態:組合鎖、情報 claim 與投遞去重、Agent 執行/額度/租約、獨立估值執行 |
tmp/ |
被忽略的臨時輸出與 heartbeat 冷卻狀態 |
.claude/ |
專項規則、skills 與宿主整合 |
trade/ 的六個目錄直接位於根下,路徑由 quant/core/paths.py 統一定義:
| 目錄 | 內容 |
|---|---|
trade/portfolio/ |
當前持倉與候選、成交/NAV/現金流賬本、評分、人工日誌和派生觀察 |
trade/market/ |
行情、財報與原始市場輸入;可重拉快取和歷史快照分別保留 |
trade/intelligence/ |
可選的新聞來源與報告歸檔、宏觀透鏡讀數 / 賬本 / 全文 |
trade/valuation/ |
人工估值輸入、精簡 EPS 包與釋出記錄 |
trade/strategy/ |
交易規則與方法合同 |
trade/knowledge/ |
知識資料與凍結只讀的研報庫 |
組合派生判斷在 portfolio/observations/,共享寫入鎖在 var/portfolio/.state.lock。歷史持倉 Git 讀取與舊情報引用由程式碼相容,已釋出證據保留原文。宏觀/事件量化區分原始證據、可知時點特徵、結果標籤與實驗;當前沒有預建空的研究子系統。
Python 依賴繼續分層:ops 編排下層,共享契約與數學集中於 core,研究程式碼不進入即時依賴鏈。完整規則見 quant/README.md。私有狀態和模型產物不作為可複用示例或公開發布材料。
開始使用
Python 版本與依賴 pin 以 pyproject.toml 為準:
python3 -m venv .venv && . .venv/bin/activate
python -m pip install -e '.[dev]'
python -m pytest -q
參考部署環境使用 macOS、已登入的 Claude Code 與 Codex CLI、用於券商與資料同步的 Moomoo OpenD,以及隔離的 Python 環境;當前 Codex runner 的隔離實現依賴 macOS。環境細節見 tools-environment.md,憑據只放在 .env 與本地憑據儲存。完整搭建流程,包括從 trade/ 下的示例構建私有工作區,見 AI_BOOTSTRAP_CN.md。
在倉庫根目錄執行以下命令,可檢視配置、輸入後設資料、排程資格與健康狀態,不呼叫模型:
python3 quant/ops/agent_runtime.py roles
python3 quant/ops/agent_inputs.py --scope portfolio --json
python3 quant/ops/agent_jobs.py due --kind postclose
python3 quant/ops/agent_health.py
python3 quant/ops/agent_doctor.py --json
在互動會話中檢視快取簡報,使用只讀 pipeline:
python3 quant/ops/pipeline.py --mode briefing --read-only --json
該命令只渲染快取,跳過同步、轉移、通知、journal、Agent 呼叫和 entry 階段,不會重新整理資料。
要基於已有輸入發起技術與風控組合研究:
python3 quant/ops/agent_jobs.py run --kind weekly --json
這條命令會呼叫模型並儲存私有研究產物,不提交卡片更新。單卡研究、提交預覽、明確寫入和不確定結果恢復,參閱 Agent 執行手冊。
驗證與擴充套件
python -m pytest -q
python -m pytest --collect-only -q
測試覆蓋角色與 provider 互換、許可權契約、證據繫結、過期、併發、獨立複核、受控寫入和恢復;倉庫檢查還約束依賴方向、模組覆蓋、文件路徑有效性、trade/ 腳手架與公開脫敏。
預設測試跳過顯式標記的真實資料與宿主狀態審計,跳過不算通過;pytest 本身也不提供網路隔離。模型一致或測試通過,不證明研究質量和投資收益。
擴充套件方式:
- 調整模型分工: 修改 routing.json,用
agent_runtime.py roles校驗。 - 調整領域方法: 修改角色定義及證據契約,保持機械規則的程式碼真源。
- 接入新 provider: 實現執行器和路由校驗,驗證同一套契約與隔離邊界。
- 增加角色或許可權: 修改顯式角色 schema、workflow 和測試;新增 Markdown 檔案本身不會註冊角色。
- 修改交易機制: 遵循 AGENTS.md 與相應研究驗證要求。
免責宣告
本倉庫是軟體與研究基礎設施,不是投資建議或投顧服務。交易可能造成重大甚至全部損失;歷史或回測結果不保證未來表現,公開腳手架有意不包含任何收益宣告或對任何標的的交易建議。把本框架接入真實資金的人,自行負責獨立驗證、當地法律與稅務要求、券商條款以及每一個執行決定。
許可
MIT。本倉記錄一套交易流程,研究與計劃不構成投資建議或收益保證。