Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

QKA — 快量化

Quant Kit for A-shares

PyPI Python License

简洁易用的 A 股量化回测框架。


安装

包安装

pip install qka

需要 Python 3.10+。

AI 技能安装

为 Claude Code、Cursor 等 AI 编程工具安装 QKA 技能:

npx skills add zsrl/qka

安装后,AI 助手即可自动加载 QKA 框架的 API 文档,生成符合规范的量化策略代码。

快速上手

数据

from qka import Data

data = Data(
    symbols=['sz.000001', 'sh.600000'],
    indicators={
        'sma_5':  ('ta.trend.sma_indicator', 'close', 5),
        'rsi_14': ('ta.momentum.rsi', 'close', 14),
    },
)
df = data.get()  # 返回宽表 DataFrame,列名 {symbol}|{factor}

策略

from qka import Strategy

class MyStrategy(Strategy):
    def __init__(self):
        super().__init__()
        self.lookback = 20  # 自定义参数

    def on_bar(self, date):
        close = self.get('close')            # 当前横截面
        hist = self.history('close', 20)     # 历史窗口
        # 交易逻辑:self.broker.buy / self.broker.sell
        # 仓位计算:self.sizing.percent / self.sizing.fixed_shares

回测

from qka import Backtest

strategy = MyStrategy()
bt = Backtest(data, strategy)
bt.run(cash=200000, start_date='2024-01-01', benchmark='sh.000300')
print(bt.metrics['total_return_pct'])   # 总收益率
print(bt.metrics['sharpe_ratio'])        # 夏普比率

核心能力

  • 多数据源 — baostock(默认)、akshare、QMT
  • 预计算指标 — ta 库全部 60+ 指标,('ta.trend.sma_indicator', 'close', 5) 格式直接透传
  • 事件驱动回测 — 按日推进,self.get() 横截面 + self.history() 窗口序列
  • 仓位管理 — sizing.percent() / sizing.fixed_amount() / sizing.fixed_shares() / sizing.atr_risk()
  • 交易模拟 — 佣金万 2.5、印花税万 5(仅卖出)、滑点 0.1%,最低佣金 5 元
  • 绩效指标 — 总收益率、年化、夏普比率、最大回撤、Calmar、胜率、盈亏比等 13 项
  • 基准对比 — 支持沪深 300(或指定指数)对比

文档

框架 API 完整文档见 skills/qka/SKILL.md——所有类的方法签名、参数、返回值和约束都在里面。

完整示例

from qka import Data, Strategy, Backtest

data = Data(
    symbols=['sz.000001'],
    indicators={
        'sma_5':  ('ta.trend.sma_indicator', 'close', 5),
        'sma_20': ('ta.trend.sma_indicator', 'close', 20),
    },
)

class MaCross(Strategy):
    def __init__(self):
        super().__init__()
        self.pct = 0.2

    def on_bar(self, date):
        close = self.get('close')
        fast = self.get('sma_5')
        slow = self.get('sma_20')
        for sym in close.index:
            price = float(close[sym])
            if price <= 0:
                continue
            if fast[sym] > slow[sym]:
                size = self.sizing.percent(self.pct, price)
                if size > 0:
                    self.broker.buy(sym, price, size)
            else:
                pos = self.broker.positions.get(sym, {}).get('size', 0)
                if pos > 0:
                    self.broker.sell(sym, price, pos)

strategy = MaCross()
bt = Backtest(data, strategy)
bt.run(cash=200000, start_date='2024-01-01')
print(bt.metrics['total_return_pct'])

许可证

MIT

致谢

  • baostock — 免费 A 股数据
  • ta — 技术指标库

⚠️ 量化交易存在风险,请充分了解后再使用本框架。

Metadata

Release files for qka 2.2.1.dev2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qka 2.2.1.dev2
File Size Uploaded
qka-2.2.1.dev2.tar.gz 52.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qka 2.2.1.dev2
File Interpreter ABI Platform
qka-2.2.1.dev2-py3-none-any.whl Python 3 none any Details

Total release size: 111.2 kB

Release files / qka-2.2.1.dev2.tar.gz

Download URL qka-2.2.1.dev2.tar.gz
Size 52.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ce16828b9852b2cd97d3b276d4170cd6fd48509a78a35422e6ed2b9400c0b2f4
BLAKE2b-256 checksum
How to use checksums
18ca43257b939d2db29f1bccda0ff5ac737493c87afecf37603220f6dba52be1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / qka-2.2.1.dev2-py3-none-any.whl

Download URL qka-2.2.1.dev2-py3-none-any.whl
Size 58.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a3d6099bd2b6919cbbb8718b7b2dda2399c648e0350e89443b9e0ac8bcc1fa49
BLAKE2b-256 checksum
How to use checksums
fc824451ea701e2e1f654fdfa2f48ac0efbf0a8056cf4275b4be1acbaebfcbc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

2.4.4

2 release files

2.4.3

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

This release

2.2.1.dev2 This release

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page