← 返回開源列表

coreytrading

多 Agent 美股交易系統:領域代理執行於可互換的模型執行環境上,所有狀態變更都由程式掌控

查看專案詳解 →
Python pandas Claude Code Codex CLI exchange-calendars pytest
Coreychen4444/coreytrading License: MIT Language: Python

關於

這是我個人美股交易流程背後的軟體。Claude 與 Codex 作為領域代理,負責技術分析、風險與估值;Python 主控程式掌管資料匯入、計算、額度限制、驗證以及所有狀態變更,並透過受控寫入器套用經過審查的卡片更新。下單一律由人工執行。公開儲存庫包含程式碼、測試、任務提示詞與合成範例資料;私人持股、規則與執行期狀態不在其中。它是軟體與研究基礎設施,不構成投資建議。

核心技術亮點

1

角色與模型解耦:agents/routing.json 將每個角色(技術、風險、估值)對應到 Claude Code 或 Codex CLI 設定檔,每次呼叫都明確指定模型與推理強度

2

工作程序只取得凍結並雜湊過的證據快照,回傳結構化 JSON;它們無法存取工作區、呼叫券商介面、傳送訊息或下單

3

卡片更新先通過政策、時效與版本檢查,再由受控寫入器執行,寫入前保存前像備份與預備回執;結果不確定的寫入以雜湊比對核實,絕不盲目重試

4

共用呼叫預算(2 個並行、滾動一小時內 12 次),排程任務依紐約證交所(XNYS)交易日曆放行:盤前簡報、收盤後狀態轉換、關卡階梯、每週檢討

5

每次收盤後由程式產生總經視角:不呼叫模型,也沒有交易權限

6

pytest 測試涵蓋角色/供應商互換、契約邊界、證據綁定、受控寫入、復原與公開去識別化

此 README 由 README_CN.md(簡體中文)以 OpenCC 自動轉換為繁體中文。

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 如何協作

  1. 捕獲證據。 宿主讀取既有狀態與快取,記錄 owner、時間和內容 hash,凍結共享快照及各角色檢視。捕獲不等於重新整理,缺失和失效資訊會保留。
  2. 領域研究。 交易流程中技術角色分析自己的領域輸入(宏觀先驗由宏觀透鏡程式碼提供);獨立估值流程按宿主計算、估值研究的順序執行。輸出區分事實觀察、假設、風險和未知項,引用繫結捕獲時的原始證據。
  3. 組合複核。 風控讀取自己的原始輸入與本輪技術報告。風控檢視覆蓋全部受管持倉,包括期權自身退出規則與可用 Greeks;金額來自既有機械計算。
  4. 定向追問。 跨領域請求按接收角色合併,最多追加一輪,未解決的問題留在記錄中。同一結論經另一模型轉述,不增加獨立證據。

當前配置允許單次 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。本倉記錄一套交易流程,研究與計劃不構成投資建議或收益保證。