← 返回
未分类 中文

AKQuant A-Share Backtesting

A-share quantitative trading backtesting using AKQuant (Rust engine) and AKShare data. Use when user asks to "backtest a stock strategy", "test trading algor...
A股量化交易回测工具,基于AKQuant(Rust引擎)和AKShare数据构建。当用户要求"回测股票策略"、"测试交易算法"时使用。
lamtest556-blip lamtest556-blip 来源
未分类 clawhub v1.0.1 1 版本 100000 Key: 无需
★ 0
Stars
📥 646
下载
💾 30
安装
1
版本
#a-share#backtest#latest#quant#stocks

概述

AKQuant A-Share Backtesting

High-performance quantitative backtesting for Chinese stocks using Rust-powered AKQuant framework.

When to Use This Skill

Use this skill when you need to:

  • Backtest trading strategies - "Backtest double MA strategy on 平安银行"
  • Analyze stock performance - "How would a momentum strategy perform on 茅台?"
  • Optimize trading parameters - "Find best MA periods for 宁德时代"
  • Validate trading ideas - "Test if RSI works on Chinese tech stocks"
  • Compare strategies - "Which performs better: MA crossover or RSI?"

Quick Examples

Example 1: Quick Backtest

User says: "Backtest double MA strategy on 贵州茅台"

Actions:

python3 scripts/run_backtest.py 600519 10 30

Result: Returns total return, trade count, equity curve

Example 2: Strategy Comparison

User says: "Compare 5-day vs 20-day MA on 平安银行"

Actions:

# Fast MA = 5, Slow MA = 20
python3 scripts/run_backtest.py 000001 5 20

# Compare with default 10/30
python3 scripts/run_backtest.py 000001 10 30

Result: Compare returns to find optimal parameters

Example 3: Research Workflow

User says: "Analyze which tech stocks performed best with momentum strategy in 2024"

Actions:

  1. Test on multiple stocks: python3 scripts/run_backtest.py 300750 10 30 (宁德时代)
  2. Test: python3 scripts/run_backtest.py 002594 10 30 (比亚迪)
  3. Compare results and identify patterns

Step-by-Step Instructions

Step 1: Choose Stock Symbol

Common A-Share Symbols:

SymbolCompanySector
-------------------------
600519贵州茅台消费
000001平安银行金融
300750宁德时代新能源
002594比亚迪汽车
000858五粮液消费

Find symbol: Use AKShare or search "股票代码 + 公司名称"

Step 2: Select Strategy Parameters

Double MA Strategy (金叉买入,死叉卖出):

python3 scripts/run_backtest.py <symbol> <fast_period> <slow_period>

Recommended combinations:

  • Conservative: 20 / 60 (fewer trades, longer trends)
  • Balanced: 10 / 30 (moderate frequency)
  • Aggressive: 5 / 20 (more trades, shorter trends)

Step 3: Analyze Results

Key metrics to review:

  • 总收益率 - Overall strategy performance
  • 交易次数 - Frequency (lower = less commission)
  • 最大回撤 - Risk measure (if implemented)
  • 胜率 - % of profitable trades

Interpretation:

Return > 0%    → Strategy beats buy-and-hold
Return < 0%    → Strategy underperforms
Trade count > 20 → Consider commission impact

Available Strategies

Built-in Strategy: Double MA

Logic: Fast MA crosses above slow MA → Buy; Crosses below → Sell

Code example:

from double_ma_strategy import run_double_ma_backtest

result = run_double_ma_backtest(
    symbol="000001",
    fast_period=10,
    slow_period=30,
    initial_capital=100000,
    start_date="20240101",
    end_date="20241231"
)

print(f"Return: {result['return_pct']:.2f}%")
print(f"Trades: {len(result['trades'])}")

Custom Strategy Development

RSI Strategy Template:

import akquant as aq

class RsiStrategy:
    def __init__(self, period=14, oversold=30, overbought=70):
        self.rsi = aq.RSI(period)
        self.oversold = oversold
        self.overbought = overbought
        
    def on_bar(self, bar):
        self.rsi.update(bar['close'])
        
        if self.rsi.value < self.oversold:
            return 'BUY'  # 超卖买入
        elif self.rsi.value > self.overbought:
            return 'SELL'  # 超买卖出
        return 'HOLD'

Technical Indicators Reference

IndicatorUsageSignal
--------------------------
aq.SMA(n)Trend followingPrice > SMA → uptrend
aq.EMA(n)Faster trendMore responsive than SMA
aq.RSI(n)Momentum<30 oversold, >70 overbought
aq.MACD()Trend + momentumCrossover signals
aq.BollingerBands(n, k)VolatilityPrice touches bands
aq.ATR(n)Risk sizingPosition sizing based on volatility

Example:

import akquant as aq

# Multi-indicator strategy
sma = aq.SMA(20)
rsi = aq.RSI(14)

for price in prices:
    sma.update(price)
    rsi.update(price)
    
    # Buy: Price > SMA AND RSI < 40 (uptrend but not overbought)
    if price > sma.value and rsi.value < 40:
        signal = 'BUY'

Data Access via AKShare

Stock Historical Data

import akshare as ak

# Daily price data (qfq = 前复权)
df = ak.stock_zh_a_hist(
    symbol="000001",
    period="daily",
    start_date="20240101",
    end_date="20241231",
    adjust="qfq"
)

# Columns: 日期, 开盘, 收盘, 最高, 最低, 成交量

Real-time Quote

# Current prices
df = ak.stock_zh_a_spot_em()

Troubleshooting

Error: "ModuleNotFoundError: No module named 'akquant'"

Cause: Dependencies not installed

Solution:

source /root/.openclaw/venv/bin/activate
pip install akquant akshare pandas numpy

Error: "Stock symbol not found"

Cause: Wrong symbol format

Solution:

  • A-shares use 6-digit codes: 000001 (SZ), 600519 (SH), 300750 (创业板)
  • Don't include exchange prefix (use 000001 not SZ000001)

Error: "No data returned"

Causes:

  1. Invalid date range - Check start_date < end_date
  2. Stock suspended - Some stocks have trading halts
  3. Delisted stock - Verify stock is still trading
  4. Network issue - AKShare requires internet connection

Strategy returns -100% (total loss)

Causes:

  1. Wrong parameter order - fast_period should be < slow_period

```bash

# Wrong: fast > slow

python3 scripts/run_backtest.py 000001 30 10

# Correct: fast < slow

python3 scripts/run_backtest.py 000001 10 30

```

  1. Too many trades - High commission costs
  2. Wrong signal logic - Check buy/sell conditions

Slow performance

Solutions:

  • Reduce date range (test 3 months instead of 1 year)
  • Use fast_period >= 5 to reduce calculation
  • AKQuant is Rust-based and fast; slowness usually comes from data fetching

Results inconsistent between runs

Cause: AKShare data updates (recent days)

Solution:

  • Use fixed date ranges for reproducibility
  • Cache data locally if needed

Best Practices

Strategy Development Workflow

  1. Start simple - Test MA crossover before complex strategies
  2. Visualize - Plot equity curve if possible
  3. Walk-forward test - Train on 2023, test on 2024
  4. Transaction costs - Include 0.1% commission + 0.1% slippage
  5. Risk management - Add stop-loss logic

Parameter Optimization

# Test multiple combinations
for fast in 5 10 15; do
  for slow in 20 30 60; do
    echo "Testing $fast/$slow:"
    python3 scripts/run_backtest.py 000001 $fast $slow
  done
done

Avoid Overfitting

  • Don't optimize too many parameters
  • Test on out-of-sample data
  • Simple strategies often outperform complex ones

Limitations & Warnings

  • Data delay: AKShare has 15-minute delay - for backtesting only, not live trading
  • Historical bias: Past performance ≠ future results
  • Execution: Real-world fills may differ from backtest assumptions
  • Survivorship: Delisted stocks not in current data
  • Dividends: Adjusted prices used, but dividend timing affects returns

References

版本历史

共 1 个版本

  • v1.0.1 当前
    2026-03-31 09:59 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

professional

All-Market Financial Data Hub

financial-ai-analyst
基于东方财富数据库,支持自然语言查询金融数据,覆盖A股、港股、美股、基金、债券等资产,提供实时行情、公司信息、估值、财务报表等,适用于投资研究、交易复盘、市场监控、行业分析、信用研究、财报审计、资产配置等场景,满足机构与个人需求。返回结果为
★ 134 📥 42,885
professional

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 199 📥 64,075
professional

Stock Market Pro

kys42
Yahoo Finance (yfinance) 驱动的股票分析技能:行情报价、基本面、ASCII 趋势图、高分辨率图表(RSI/MACD/BB/VWAP/ATR),以及可选的网络...
★ 165 📥 40,410