akquant-开源的量化投资教程


akquant 是一个开源的量化投资教程项目,下面是关于这个仓库的详细介绍:

1. 项目概述

AKQuant 主要讲述 PyBroker 量化投资框架的使用和相关案例介绍。用户可以通过访问 利用 PyBroker 进行量化投资 进行阅读学习。

2. 项目结构

项目的主要目录和文件结构如下:

akquant/
├── .gitignore
├── .pre-commit-config.yaml
├── README.md
├── main.py
├── mkdocs.yml
├── pyproject.toml
├── requirements.txt
├── docs/
│   ├── CNAME
│   ├── article.md
│   ├── contributing.md
│   ├── data-source.md
│   ├── fin-data.md
│   ├── img/
│   ├── index.md
│   ├── installation.md
│   ├── javascripts/
│   ├── quant-resource.md
│   ├── quickstart.md
├── .github/
│   ├── workflows/
  • .gitignore:用于指定在使用 git 进行版本控制时,哪些文件或目录应该被忽略,不被提交到版本库中。
  • .pre-commit-config.yamlpre-commit 工具的配置文件,用于在提交代码前自动运行一系列代码检查和格式化工具,如 ruff 等。
  • README.md:项目的说明文档,包含项目的基本信息、贡献方式、更新进度等内容。
  • main.py:Python 主程序文件,包含使用 PyBroker 进行量化投资策略回测的示例代码。
  • mkdocs.ymlMkDocs 的配置文件,用于生成项目文档网站。
  • pyproject.toml:Python 项目的元数据文件,通常用于配置项目的构建工具(如 poetryflit)。
  • requirements.txt:项目依赖的 Python 包列表,包含 lib-pybroker 等主要包以及开发和文档相关的工具包。
  • docs/:文档目录,包含项目的详细文档,如安装说明、快速开始指南、贡献流程等。
    • installation.md:PyBroker 的安装说明文档,包括依赖库列表和源码安装方法。
    • quickstart.md:快速开始指南,包含策略代码示例和查看回测结果的方法。
    • contributing.md:贡献源代码的流程说明文档,指导开发者如何提交 Pull Request。
  • .github/:GitHub 相关配置目录,通常包含 GitHub Actions 的工作流配置文件。

3. 主要功能和示例代码

3.1 PyBroker 安装

PyBroker 项目的源码托管在 GitHub 平台,可以通过以下命令下载源码并安装:

git clone https://github.com/edtechre/pybroker
cd pybroker
python setup.py install

3.2 策略代码示例

以下是一个简单的量化投资策略示例代码(位于 akquant/docs/quickstart.md):

# 导入相关模块和类
import pybroker as pb
from pybroker import Strategy, StrategyConfig, ExecContext
from pybroker.ext.data import AKShare

# 查看当前版本
print(pb.__version__)

# 策略配置
config = StrategyConfig(initial_cash=500_000)
strategy = Strategy(
    data_source=AKShare(),
    start_date='20220101',
    end_date='20230916',
    config=config
)

# 定义规则
def buy_low(ctx: ExecContext):
    # 如果当前已经持有仓位,则不再买入。
    if ctx.long_pos():
        return
    # 如果当前的收盘价小于前一天的最低价,则下单买入。
    if ctx.bars >= 2 and ctx.close[-1] < ctx.low[-2]:
        # 计算买入的股票数量,该数量为当前资金的 25%。
        ctx.buy_shares = ctx.calc_target_shares(0.25)
        # 设置买入的限价,该限价为当前收盘价减去 0.01。
        ctx.buy_limit_price = ctx.close[-1] - 0.01
        # 设置持有仓位的时间,该时间为 3 个交易日。
        ctx.hold_bars = 3

# 执行回测
strategy.add_execution(fn=buy_low, symbols=['000001', '600000'])
result = strategy.backtest()

# 查看结果
print(result.metrics_df)  # 查看绩效
print(result.orders)  # 查看订单
print(result.positions)  # 查看持仓
print(result.portfolio)  # 查看投资组合
print(result.trades)  # 查看交易

4. 贡献代码

欢迎开发者在本项目贡献代码,贡献代码的方式有两种: 1. 在 GitHub 上提交 Pull Request 2. 在 GitHub 上提交 Issues

详情参考:https://akquant.akfamily.xyz/latest/contributing/

5. 更新进度

  1. 目前 PyBroker 的最新版本为:v1.1.33
  2. 本文档支持使用 Python 最新版本编辑