Communitygithub.com

gaaiyun/joinquant-skill

Generiere präzise, ausführbare quantitative Strategie-Codes für die JoinQuant (聚宽) Plattform. Verwende diesen Skill, wenn der Benutzer nach einem Aktien-/ETF-/Futures-Backtest, Paper-Trading oder Live-Trading auf JoinQuant fragt.

Was ist joinquant-skill?

Dieser Skill für KI-Agenten (z. B. Claude Code, Cursor) ermöglicht es, quantitative Handelsstrategien für die chinesische Plattform JoinQuant (聚宽) zu generieren. Er bietet einen progressiv offenlegbaren Wissensschatz der gesamten JoinQuant-API (14 Kategorien, 294 KB offizielle Dokumentation) sowie fünf produktionsreife Strategievorlagen (Einzelaktien-Gleitender Durchschnitt, Multi-Faktor, ETF-Rotation, Momentum, Mean-Reversion). Der Skill enthält ein Lint-Werkzeug (`strategy_lint.py`), das halluzinierte API-Aufrufe, Future-Funktions-Verstöße und fehlende Einstellungen wie `set_option('use_real_price', True)` erkennt. Dadurch wird sichergestellt, dass der generierte Code direkt im JoinQuant Online-Editor ohne manuelle Anpassungen ausgeführt werden kann. Der Skill ist speziell auf die Bedürfnisse chinesischer Anleger und die Besonderheiten des A-Aktienmarktes zugeschnitten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add gaaiyun/joinquant-skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

JoinQuant Skill

Generiere quantitative Strategie-Codes, die ohne Änderungen auf der JoinQuant-Plattform laufen.

Wann dieser Skill verwendet wird

Ja:

  • Aktien-Backtest / Paper Trading / Live Trading auf JoinQuant (聚宽)
  • ETF-Rotation, Multi-Faktor-Aktienauswahl, Momentum, Mean-Reversion-Strategien
  • Futures (期货) Strategien auf JoinQuant
  • Margin-Handel (融资融券) Strategien
  • Code-Review / Lint für Strategien, um halluzinierte APIs und Future-Funktions-Verstöße zu erkennen
  • Übersetzung einer Strategieidee in JoinQuant-API-Aufrufe

Nein:

  • Lokale Datenanalyse ohne JoinQuant (nutze stattdessen jqdatasdk direkt oder pandas/numpy)
  • Strategie-Backtesting auf anderen Plattformen (vectorbt, backtrader, vn.py – nutze diese Skills)
  • Reines Training von Machine-Learning-Modellen (keine JoinQuant-spezifische API erforderlich)
  • Live-Trading über andere Broker-APIs als JoinQuant-Simulated-Trading (CTP, Interactive Brokers, etc. benötigen andere Skills)

Standardmodus

Die meisten Benutzeranfragen fallen in eines von drei Mustern. Erkenne das Muster zuerst, dann leite weiter:

MusterAuslöserAktion
Schnellcode„Schreib mir eine X-Strategie“ / „Implementiere Y mit JuQuant“Vorlage auswählen, benutzerspezifische Teile einfügen, sofort einfügbaren Code zurückgeben
API-Frage„Was bedeutet der fq-Parameter von get_price in JuQuant?“ / „Welche Optionen gibt es bei set_option?“Passende references/XX-*.md laden und basierend darauf antworten
Code-Review„Überprüf mal meinen JuQuant-Code“ / Einfügen von vorhandenem CodeGedanklich strategy_lint.py dagegen laufen lassen (oder tatsächlich aufrufen), halluzinierte APIs und fehlende Schutzmechanismen aufzeigen

Progressive Offenlegung: 14 API-Kategorien

Lade NICHT alle Referenzen auf einmal (insgesamt 294 KB, würde Kontext verbrennen). Musterabgleich der Benutzeranfrage und nur die relevante Kategorie-Datei laden:

KategorieReferenzdateiAusgelöst durch Schlüsselwörter
Strategieeinstellungenreferences/01-strategy-setup.mdinitialize, set_benchmark, set_option, set_order_cost, set_slippage, run_daily, run_weekly, run_monthly
Datenerfassungreferences/02-data-getters.mdget_price, attribute_history, history, get_current_data, get_fundamentals, get_money_flow, get_concept, get_industry
jqlib Faktorbibliothekreferences/03-jqlib.mdalpha101, alpha191, technical_analysis, jqfactor
Datenverarbeitungreferences/04-data-processing.mdget_factor_values, calc_factor_history, neutralize, winsorize, standardlize
Portfolio-Optimierungreferences/05-portfolio-optimization.mdoptimizer, max_sharpe, min_variance, target_return, mean_variance
Handelsfunktionenreferences/06-trading.mdorder, order_value, order_target, order_target_value, cancel_order, get_open_orders
Objektereferences/07-objects.mdOrder, Position, Portfolio, OrderCost, OrderStyle, MarketOrderStyle, LimitOrderStyle
Sonstige Funktionenreferences/08-misc-functions.mdrecord, log, write_file, send_message
Multi-Portfolioreferences/09-multi-portfolio.mdset_subportfolios, SubPortfolioConfig, transfer_cash
Tick-Levelreferences/10-tick-strategy.mdtick, get_ticks, every_tick
Margin-Handelreferences/11-margin-trading.mdmargincash_open, margincash_close, marginsec_open, marginsec_close, set_margin_rate
Futuresreferences/12-futures.mdget_dominant_future, futures, set_future_commission
Attributionsanalysereferences/13-attribution-analysis.mdbrinson, factor analysis, attribution
Engine-Mechanismusreferences/14-strategy-engine.md撮合, 复权, 滑点, 税费, 风险指标, alpha, beta, sharpe, max drawdown

Falls der Benutzer einen Funktionsnamen erwähnt, der in keiner Schlüsselwortliste steht, verwende scripts/api_search.py <Schlüsselwort>, um ihn in allen Referenzen zu finden.

Vorlagen

5 produktionsreife Vorlagen in templates/:

VorlageWann verwenden
01-basic-single-stock.pyErstanwender, Einzelaktie, einfacher GD-Crossover. Das „Hello World“ von JoinQuant.
02-multi-factor.pyMulti-Faktor-Aktienauswahl (KGV / Marktkapitalisierung / Momentum), monatlicher Rebalance. Die häufigste „echte“ Strategiestruktur.
03-etf-rotation.pyETF-Rotation nach Momentum-Ranking. Beliebt bei Privatanlegern.
04-momentum-stock.pyQuerschnittsmomentum auf Aktienuniversum, wöchentlicher Rebalance.
05-mean-reversion.pyBollinger / RSI Mean-Reversion. Volatilitätsbewusst.

Beim Generieren von Code: Beginne mit einer Vorlage, modifiziere, schreibe nicht von Grund auf. Gründe:

  1. Vorlagen enthalten bereits den notwendigen Code-Boilerplate (set_benchmark, set_option, set_order_cost, set_slippage)
  2. Vorlagen haben korrektes Timing (run_daily / run_weekly mit korrektem Zeitargument)
  3. Vorlagen vermeiden Future-Funktions-Fallstricke (zählbasierte statt datumsbasierte Auswahl)

Lint-Werkzeug

Bevor generierter Code an den Benutzer zurückgegeben wird, führe gedanklich (oder tatsächlich) strategy_lint.py aus:

python scripts/strategy_lint.py <user_strategy.py>

Kritische Prüfungen:

  • ❌ Halluzinierte API-Aufrufe (z. B. jqdata.get_stock_data() existiert nicht)
  • ❌ Future-Funktion: Verwendung von nicht-zählbasiertem get_price oder attribute_history mit fest codierten zukünftigen Daten
  • ❌ Fehlendes set_option('use_real_price', True) (zwingend erforderlich für genaues Backtesting)
  • ❌ Fehlendes set_order_cost(...) und set_slippage(...)
  • ❌ Order-Ausführung in before_trading_start / after_trading_end (verboten, wird abgelehnt)
  • ❌ Verwendung veralteter APIs (update_universe etc.)
  • ⚠️ Empfehle g.-Globale Variablen für den Zustand über Bars hinweg anstelle von Modul-Globals
  • ⚠️ Empfehle cluster-bewusste Positionsgrößen für hochkorrelierte Vermögenswerte

Dinge, die beim Generieren erhalten bleiben müssen

Wenn du eine Strategie berätst, verliere niemals:

  • Immer use_real_price=True setzen. Traditionelle vorbereinigte Preise haben einen Future-Funktions-Bias. Dies ist nicht verhandelbar.
  • set_order_cost und set_slippage sind Pflicht. Ohne diese ist der Backtest unrealistisch und führt den Benutzer in die Irre.
  • Das run_daily-Zeitargument ist wichtig. 'open' läuft um 09:30 Uhr, 'every_bar' läuft für jeden Balken (minütlich oder täglich). Die falsche Wahl führt zu falschem Ausführungs-Timing.
  • g. ist der einzige sichere globale Zustand. Modul-Globals können in einigen JoinQuant-Umgebungen über Läufe hinweg verlaufen.
  • order_value > order für Kapitalmanagement. Die manuelle Berechnung der Aktienanzahl ist anfällig für Aktiensplits.
  • order_target_value für Rebalancing, berechne niemals manuell „aktueller Wert - Zielwert“.
  • Installiere nichts mit pip install innerhalb von JoinQuant. Die Plattform ist sandboxed; nur ihre vorinstallierten Bibliotheken funktionieren.

Arbeitsablauf

Eine typische End-to-End-Strategiesitzung:

1. Benutzer beschreibt Idee in natürlicher Sprache
2. KI: passende Vorlage auswählen (z. B. 03-etf-rotation.py)
3. KI: 2-3 klärende Fragen stellen:
   - Aktienuniversum (Indexbestandteile / benutzerdefinierte Liste)
   - Rebalancing-Häufigkeit (täglich / wöchentlich / monatlich)
   - Risikokontrolle (Stop-Loss / Positionsobergrenze / Branchenneutralität)
4. KI: Strategiecode generieren, Vorlage modifizieren
5. KI: Gedanklich (oder tatsächlich) linten – Probleme beheben
6. Benutzer: In JoinQuant Online-Editor einfügen, auf „编译运行“ klicken
7. Bei Fehlern: relevante references/XX-*.md erneut laden, beheben
8. Benutzer: Backtest-Kurve überprüfen, iterieren

Für hochriskante (Live-Trading) Strategien zusätzlich:

  • Referenziere references/14-strategy-engine.md für Slippage, Kommission, Risikometriken
  • Referenziere references/11-margin-trading.md falls Hebelwirkung involviert
  • Diskutiere Modellrisiko explizit (Overfitting, Regimewechsel, Transaktionskostenrealismus)

Dateien

DateiRolle
README.mdProjekt-Einführung
WORKFLOW.mdEnd-to-End-Strategieentwicklung (✅ vollständig)
INSTALL_CN.mdChinesische Installationsanleitung (✅ vollständig)
api文档/api.txtOriginale 294 KB API-Dokumentation (rohes Backup)
references/01-14-*.md14 progressive Offenlegungs-Kategorie-Dateien (✅ alle vollständig)
templates/01-05-*.py5 Produktionsvorlagen (✅ vollständig)
scripts/strategy_lint.pyLint-Werkzeug – Hybrid aus Blacklist/Whitelist (✅ betriebsbereit)
scripts/strategy_scaffold.pyGerüst aus Beschreibung generieren (✅ betriebsbereit)
scripts/api_search.pyAPI nach Schlüsselwort durchsuchen (✅ betriebsbereit)
examples/case-mean-reversion/End-to-End-Fall: RSI Mean-Reversion (✅)
examples/case-etf-rotation/End-to-End-Fall: ETF monatliche Rotation (✅)
examples/bad-strategy-for-lint-test.pyNegativ-Testbeispiel für Lint-Regression (✅)
factors/(v2) Barra-artige Faktorbibliothek, 7 Kategorien
factor_lab/(v2) Einzelfaktor-IC / Gruppierung / Zerfallsanalyse
research_importer/(v2) Makler-Forschung PDF → JoinQuant-Code
jqskill_mcp/(v2) MCP-Server, der alle Skill-Fähigkeiten bereitstellt
tests/pytest (50+ Tests bestanden nach v2)

Dieser Skill ist Version 0.5.0 (Stand 2026-04-19). Alle 14 Referenzen + 5 Vorlagen + 3 Skripte + 13 Tests + WORKFLOW + 2 Beispiele vollständig.

Verwandte Skills