akquant
生成 akquant 框架的可执行量化策略代码,涵盖数据接口、事件驱动、风控与优化。当用户需要开发量化策略、配置回测环境、设置风控规则、进行参数优化、实现横截面轮动策略,或提及…
聚宽(JoinQuant)官网策略开发指南,涵盖回测、模拟交易、数据 API、交易函数、因子与技术指标。当用户编写聚宽策略、回测、模拟盘、查询聚宽 API、get_price/order/run_daily、Alpha 因子、技术指标,或提及 joinquant、聚宽、jqdata 策略时使用。本地数据获取请用 jqdatasdk 技能。
$ npx -y skills add lzwme/finance-quant-skills --skill joinquant-strategy --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/joinquant-strategyContext preview
The summary Claude sees to decide when to auto-load this skill.
聚宽(JoinQuant)官网策略开发指南,涵盖回测、模拟交易、数据 API、交易函数、因子与技术指标。当用户编写聚宽策略、回测、模拟盘、查询聚宽 API、get_price/order/run_daily、Alpha 因子、技术指标,或提及 joinquant、聚宽、jqdata 策略时使用。本地数据获取请用 jqdatasdk 技能。
name: joinquant-strategy
description: 聚宽(JoinQuant)官网策略开发指南,涵盖回测、模拟交易、数据 API、交易函数、因子与技术指标。当用户编写聚宽策略、回测、模拟盘、查询聚宽 API、get_price/order/run_daily、Alpha 因子、技术指标,或提及 joinquant、聚宽、jqdata 策略时使用。本地数据获取请用 jqdatasdk 技能。
metadata: {"openclaw":{"emoji":"📚","requires":{"bins":["python3"]}}}基于本目录离线文档,为聚宽官网(回测 / 模拟 / 研究)编写 Python 策略。回答 API 问题时**必须先查阅本地文档**,不得凭记忆编造函数签名或参数。
> **与 jqdatasdk 的区别**:`jqdata` 在官网策略环境使用;`jqdatasdk` 是本地 Python 库,API 略有不同,且不能在官网回测/模拟/研究中使用。
1. **确定问题类型**,按 [reference.md](reference.md) 定位文件 2. **用 Grep/Read 搜索**目标函数名或中文关键词(如 `get_price`、`order_target`、`市盈率`) 3. **交叉验证**:API 行为查 `api.md`,字段/表结构查 `data/*.md`,踩坑查 `faq.md` 4. **给出答案时**引用文档中的调用方法、参数、返回值与示例代码
需要写策略框架? → api.md「开始写策略」「策略程序架构」 需要查数据 API? → api.md「数据获取函数」+ data/ 对应品种文档 需要下单/持仓? → api.md「交易函数」「对象」 需要财务/估值数据? → data/Stock.md(run_query + valuation/fundamentals 表) 需要行业/概念选股? → data/plateData.md + api.md get_industry_stocks 等 需要技术指标? → data/technicalanalysis.md(from jqlib.technical_analysis import *) 需要 Alpha 因子? → data/Alpha101.md、data/Alpha191.md 需要自定义因子? → fator.md(jqfactor.Factor、calc_factors) 需要因子看板数据? → data/factor_values.md
最小可运行结构:
# 导入聚宽函数库
import jqdata
def initialize(context):
g.security = '000001.XSHE'
set_benchmark('000300.XSHG')
set_option('use_real_price', True) # 开启动态复权(真实价格),建议开启
run_daily(trade, time='open') # 或 time='every_bar' / '9:30'
def trade(context):
security = g.security
close_data = attribute_history(security, 5, '1d', ['close'])
MA5 = close_data['close'].mean()
current_price = close_data['close'][-1]
cash = context.portfolio.available_cash
if current_price > 1.01 * MA5:
order_value(security, cash)
elif current_price < MA5 and context.portfolio.positions[security].closeable_amount > 0:
order_target(security, 0)| 函数 | 说明 | |------|------| | `initialize(context)` | 全局初始化,仅运行一次;用 `g` 存全局变量 | | `run_daily/weekly/monthly(func, ...)` | 定时任务;`func` 必须是**全局函数**,不能是类方法 | | `handle_data(context, data)` | 按回测频率驱动;**不建议与 run_daily 混用** | | `before_trading_start` | 开盘前(9:00) | | `after_trading_end` | 收盘后(15:30) |
带 ♠ 标识的 API 仅支持**回测/模拟**,不能在研究模块调用。`jqdata` 模块在研究与回测环境均可使用。
| 市场 | 后缀 | 示例 | |------|------|------| | 上海证券交易所 | `.XSHG` | `600519.XSHG` | | 深圳证券交易所 | `.XSHE` | `000001.XSHE` | | 中金所 | `.CCFX` | `IC9999.CCFX` | | 大商所 | `.XDCE` | `A9999.XDCE` | | 上期所 | `.XSGE` | `AU9999.XSGE` | | 郑商所 | `.XZCE` | `CY8888.XZCE` | | 场外基金 | `.OF` | `519671.OF` |
期货策略需将 `run_daily` 的 `reference_security` 设为对应主力合约(如 `IF9999.CCFX`),以匹配夜盘开盘时间。
get_price(security, start_date, end_date, frequency='daily', fields=None, fq='pre') attribute_history(security, count, unit, fields) # 回测环境,不含当天 history(count, unit, field, security_list, df=True) get_bars(security, count, unit, fields, include_now=True)
get_all_securities(types=['stock'], date=None) # date 防未来函数
get_index_stocks('000300.XSHG', date=None)
get_industry_stocks('C15', date=None)
get_concept_stocks('GN036', date=None)
set_universe([...]) # 设置后 history 可不传 security_listfrom jqdata import * q = query(valuation).filter(valuation.code == '000001.XSHE') df = get_fundamentals(q, date='2015-10-15') # 或 run_query(单次最多 4000 行,不可连表) df = finance.run_query(query(finance.STK_XXX).filter(...).limit(4000))
order(security, amount) # 按股数,正买负卖 order_value(security, value) # 按金额 order_target(security, amount) # 调到目标股数 order_target_value(security, value) # 调到目标市值 order_target_percent(security, percent) # 调到目标仓位比例
A 股买入数量须为 100 整数倍(科创板 200 起);卖光持仓时不受限。每日最多 10000 笔订单。
from jqlib.technical_analysis import * # check_date 策略中建议用 context.current_dt,避免盘中取当日收盘指标产生未来数据 result = MACD(security_list, check_date=context.current_dt, SHORT=12, LONG=26, MID=9)
from jqfactor import Factor, calc_factors
class MyFactor(Factor):
name = 'my_factor'
max_window = 5
dependencies = ['close']
def calc(self, data):
return data['close'].mean()
factors = calc_factors(securities, [MyFactor()], start_date, end_date)详见 `fator.md` 与 `data/Alpha101.md`、`data/Alpha191.md`。
| 产品 | 使用场景 | |------|----------| | `jqdata`(官网) | 回测、模拟、研究 | | `jqdatasdk`(本地) | 本地量化研究,**不能**在官网策略中 import |
| 场景 | 首先阅读 | 深入查阅 | |------|----------|----------| | 新手写第一个策略 | `api.md`「开始写策略」 | `api.md`「策略程序架构」 | | 股票选股 + 财务 | `data/Stock.md` | `api.md` get_fundamentals | | 指数成分股策略 | `data/index.md` | `api.md` get_index_stocks | | 行业/概念轮动 | `data/plateData.md` | `api.md` get_industry_stocks | | 期货策略 | `data/Future.md` | `api.md`「期货策略专用函数」 | | 期权策略 | `data/Option.md` | `api.md` 期权相关 | | 基金/ETF | `data/fund.md` | `data/OTCfund.md` | | 可转债 | `data/bond.md` | — | | 宏观数据 | `data/macroData.md` | — | | 技术分析指标 | `data/technicalanalysis.md` | — | | 因子选股 | `fator.md` + `data/factor_values.md` | `data/Alpha101.md` | | 融资融券 | `data/Stock.md` 融资融券章节 | `api.md` 融资融券专用函数 | | 报错/数据疑问 | `faq.md` | `api.md`「注意事项」 |
完整示例见 `api.md` 末尾「策略示例」:均线策略、多股票持仓、追涨策略、万圣节效应等。
本地数据字典由脚本从官网同步:
bun scripts/get-joinquant-docs.ts # 强制覆盖已有 md:FORCE_UPDATE=1 bun scripts/get-joinquant-docs.ts
一个面向金融量化交易领域的 Claude Skills 技能维护仓库,基于 Agent Skills 标准构建。
Repo: lzwme/finance-quant-skills
生成 akquant 框架的可执行量化策略代码,涵盖数据接口、事件驱动、风控与优化。当用户需要开发量化策略、配置回测环境、设置风控规则、进行参数优化、实现横截面轮动策略,或提及…
Backtrader 开源量化回测框架,支持多数据源、多策略、多周期回测与实盘交易,纯Python实现。当用户需要开发量化策略、进行回测分析、编写交易逻辑、回测参数优化,或提及…
机构级投研报告生成技能。覆盖中国A股、港股、美股上市公司。输出模式:1)投资速览:3-5页,含公司概览、核心财务指标、估值倍数、投资逻辑与风险因素;2)深度研报:≥25页,含行业分析、产业…