QKA(快量化 / Quant Kit for A-shares) — 简洁易用的 A 股量化回测框架。
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'])pip install qka需要 Python 3.10+。
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_sharesfrom 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——所有类的方法签名、参数、返回值和约束都在里面。
- 分钟级数据支持
- 自适应参数优化
- 实盘交易(QMT 接口)
⚠️ 量化交易存在风险,请充分了解后再使用本框架。 充分了解后再使用本框架。