Communitygithub.com

gaaiyun/joinquant-skill

為聚寬平台生成準確、可執行的量化策略程式碼。當使用者要求在聚寬上撰寫股票/ETF/期貨回測、模擬交易或實盤策略時使用此技能。

joinquant-skill 是什麼?

這個技能是專為量化交易開發者設計的專業工具,能將使用者的自然語言(中文)策略想法,直接轉換成可在聚寬線上編輯器無修改貼上運行的 Python 策略程式碼。它內部整合了完整的聚寬 API 知識庫(14 大類別、294KB 官方文件),並提供 5 個生產級模板(單股票均線、多因子、ETF 輪動、動量、均值回歸),可大幅減少重複編寫樣板程式碼的工作。最強大的地方在於它的內建 Lint 檢查工具,能自動檢測常見錯誤,如幻覺 API(不存在的函數呼叫)、未來函數使用、未設定價格模式或滑點/手續費等,確保生成的程式碼品質。此外,它支援漸進式資訊揭露,僅根據使用者的提問載入相關類別的文件,避免浪費 AI 對話視窗的上下文空間。支援聚寬平台的股票、ETF、期貨、融資融券策略,也提供程式碼審查功能。對於實盤交易等高風險場景,還能參考引擎機制文件,討論模型風險與交易成本。此技能已完全本地化為繁體中文,適合台灣及華語地區的量化開發者使用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add gaaiyun/joinquant-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

JoinQuant Skill

產生可在聚寬平台無修改直接執行的量化策略程式碼。

何時使用此技能

適合:

  • 在聚寬進行股票回測 / 模擬交易 / 實盤交易
  • ETF 輪動、多因子選股、動能、均值回歸策略
  • 聚寬期貨策略
  • 融資融券策略
  • 策略程式碼審查 / Lint 以捕捉幻覺 API 與未來函數違規
  • 將策略構想轉換為聚寬 API 呼叫

不適合:

  • 不涉及聚寬的本地數據分析(請直接使用 jqdatasdk,或 pandas/numpy)
  • 在其他平台(vectorbt、backtrader、vn.py)進行策略回測(請改用那些平台的技能)
  • 純機器學習模型訓練(不需使用聚寬特定 API)
  • 透過非聚寬模擬交易的其他券商 API(CTP、Interactive Brokers 等需使用不同技能)進行實盤交易

預設模式

大多數使用者請求可歸為以下三種模式之一。請先辨識模式,再路由處理:

模式觸發條件動作
快速生成程式碼"幫我寫一個 X 策略" / "用聚寬實現 Y"選取模板,填寫使用者特定部分,回傳可直接貼上的程式碼
API 問題"聚寬裡 get_price 的 fq 參數是什麼意思" / "set_option 有哪些選項"載入對應的 references/XX-*.md 並根據內容回答
程式碼審查"幫我 Review 一下我這段聚寬程式碼" / 貼上現有程式碼對其進行心智 strategy_lint.py 檢查(或實際呼叫),指出幻覺 API 與遺漏的保護措施

漸進式資訊揭露:14 個 API 類別

請勿一次載入所有參考文件(總共 294KB,會消耗過多上下文)。根據使用者請求進行模式匹配,只載入相關類別的檔案:

類別參考檔案由關鍵字觸發
策略設定references/01-strategy-setup.mdinitialize, set_benchmark, set_option, set_order_cost, set_slippage, run_daily, run_weekly, run_monthly
數據獲取references/02-data-getters.mdget_price, attribute_history, history, get_current_data, get_fundamentals, get_money_flow, get_concept, get_industry
jqlib 因子庫references/03-jqlib.mdalpha101, alpha191, technical_analysis, jqfactor
數據處理references/04-data-processing.mdget_factor_values, calc_factor_history, neutralize, winsorize, standardlize
組合優化references/05-portfolio-optimization.mdoptimizer, max_sharpe, min_variance, target_return, mean_variance
交易函數references/06-trading.mdorder, order_value, order_target, order_target_value, cancel_order, get_open_orders
物件references/07-objects.mdOrder, Position, Portfolio, OrderCost, OrderStyle, MarketOrderStyle, LimitOrderStyle
其他函數references/08-misc-functions.mdrecord, log, write_file, send_message
多投資組合references/09-multi-portfolio.mdset_subportfolios, SubPortfolioConfig, transfer_cash
Tick 級references/10-tick-strategy.mdtick, get_ticks, every_tick
融資融券references/11-margin-trading.mdmargincash_open, margincash_close, marginsec_open, marginsec_close, set_margin_rate
期貨references/12-futures.mdget_dominant_future, futures, set_future_commission
歸因分析references/13-attribution-analysis.mdbrinson, factor analysis, attribution
引擎機制references/14-strategy-engine.md撮合, 復權, 滑點, 稅費, 風險指標, alpha, beta, sharpe, max drawdown

如果使用者提到一個不在任何關鍵字清單中的函數名稱,請使用 scripts/api_search.py <keyword> 在所有參考文件中搜尋。

模板

5 個生產級模板位於 templates/ 目錄:

模板使用時機
01-basic-single-stock.py初次使用者,單一股票,簡單的均線交叉策略。聚寬的「Hello World」。
02-multi-factor.py多因子選股(PE / 市值 / 動能),每月再平衡。最常見的「實際」策略結構。
03-etf-rotation.py根據動能排行進行 ETF 輪動。散戶投資者間很受歡迎。
04-momentum-stock.py股票池的橫斷面動能策略,每週再平衡。
05-mean-reversion.py布林通道 / RSI 均值回歸策略。考慮波動率。

生成程式碼時,從模板開始,進行修改,不要從頭撰寫。原因如下:

  1. 模板已包含樣板程式碼(set_benchmark、set_option、set_order_cost、set_slippage)
  2. 模板具有正確的時機設定(run_daily / run_weekly 搭配正確的 time 參數)
  3. 模板避免了未來函數陷阱(使用基於計數而非基於日期的切片)

Lint 工具

在回傳生成的程式碼給使用者之前,請以心智(或實際)方式執行 strategy_lint.py:

python scripts/strategy_lint.py <user_strategy.py>

關鍵檢查項目:

  • ❌ 幻覺 API 呼叫(例如 jqdata.get_stock_data() 不存在)
  • ❌ 未來函數:使用非計數的 get_price 或 attribute_history 並硬編碼未來日期
  • ❌ 缺少 set_option('use_real_price', True)(準確回測所必需)
  • ❌ 缺少 set_order_cost(...) 和 set_slippage(...)
  • ❌ 在 before_trading_start / after_trading_end 內下單(不允許,會被拒絕)
  • ❌ 使用已棄用的 API(例如 update_universe)
  • ⚠️ 建議使用 g. 全域變數來跨 bar 保存狀態,而非模組層級的全域變數
  • ⚠️ 建議對高相關性資產使用叢集感知的倉位管理

生成時必須保留的重點

給出策略建議時,絕對不能遺漏:

  • 務必設定 use_real_price=True。傳統的前復權價格會有未來函數偏差。這點沒得商量。
  • set_order_cost 和 set_slippage 是強制性的。沒有它們,回測就不符合現實,會誤導使用者。
  • run_daily 的 time 參數很重要。'open' 在 09:30 執行,'every_bar' 在每個 Bar(分鐘或日線)執行。選擇錯誤會導致執行時機不正確。
  • g. 是唯一安全的全域狀態。模組層級的全域變數在某些聚寬環境中會跨執行序泄漏。
  • 資金管理方面 order_value 優於 order。手動計算股數在股票分割時容易出錯。
  • 再平衡時使用 order_target_value,不要自己計算「當前市值 - 目標市值」。
  • 不要在聚寬內部執行 pip install。平台是沙盒環境,只能使用其預裝的函式庫。

工作流程

一個典型的端到端策略會話:

1. 使用者以自然語言描述策略構想
2. AI:選取匹配的模板(例如 03-etf-rotation.py)
3. AI:提出 2-3 個澄清問題:
   - 標的池範圍(指數成分 / 自訂列表)
   - 調倉頻率(日 / 週 / 月)
   - 風險控制(停損 / 倉位上限 / 行業中性化)
4. AI:修改模板生成策略程式碼
5. AI:執行心智 Lint 檢查(或實際執行)— 修復問題
6. 使用者:將程式碼貼入聚寬線上編輯器,點擊「編譯運行」
7. 如有錯誤:重新載入相關的 references/XX-*.md,進行修復
8. 使用者:檢視回測曲線,反覆迭代

對於高風險(實盤交易)策略,另外需要:

  • 參考 references/14-strategy-engine.md 了解滑點、手續費、風險指標
  • 如果涉及槓桿,參考 references/11-margin-trading.md
  • 明確討論模型風險(過度擬合、市場機制轉變、交易成本的真實性)

檔案列表

檔案角色
README.md專案簡介
WORKFLOW.md策略開發的端到端流程(✅ 完成)
INSTALL_CN.md中文安裝指南(✅ 完成)
api文档/api.txt原始 294KB API 文件(原始備份)
references/01-14-*.md14 個漸進式資訊揭露類別檔案(✅ 全部完成)
templates/01-05-*.py5 個生產級模板(✅ 完成)
scripts/strategy_lint.pyLint 工具 — 黑/白名單混合(✅ 可運作)
scripts/strategy_scaffold.py根據描述生成策略骨架(✅ 可運作)
scripts/api_search.py根據關鍵字搜尋 API(✅ 可運作)
examples/case-mean-reversion/端到端案例:RSI 均值回歸(✅)
examples/case-etf-rotation/端到端案例:ETF 月度輪動(✅)
examples/bad-strategy-for-lint-test.py用於 Lint 迴歸測試的負面案例(✅)
factors/(v2) Barra 風格因子庫,7 個類別
factor_lab/(v2) 單因子 IC / 分組 / 衰減分析
research_importer/(v2) 券商研究報告 PDF 轉換為聚寬程式碼
jqskill_mcp/(v2) MCP 伺服器,暴露所有技能能力
tests/pytest 測試(v2 後超過 50 個測試通過)

此技能目前版本為 0.5.0(2026-04-19)。所有 14 個參考文件 + 5 個模板 + 3 個腳本 + 13 個測試 + WORKFLOW + 2 個範例已完成。

相關技能