Skip to main content

基于强化学习的交易算法Baselines

Project description

Test PyPI version Coverage Status

tbase

基于强化学习的交易算法Baselines(Pytorch&Tensorflow2实现). 旨在提供一个在中国股市上可复现的算法Baselines.

支持环境: Python 3.5–3.7

安装

设置 tushare token(Tushare token注册申请):

export TUSHARE_TOKEN=YOUR_TOKEN

pip install tbase --upgrade

Example

python3 -m tbase.run --alg ddpg

Features(In progress)

  • 可以完美复现训练过程, How?

  • 加速

    • 多进程CPU并行: 多进程运行独立的Enviroment进行探索
    • 多进程单GPU并行
    • 多进程多GPU并行
    • 分布式多机多卡并行: 参考 menger
  • 支持算法:

    • 单Agent

      • (Double Dueling)DQN
      • DDPG
      • TD3(Twin Delayed Deep Deterministic Policy Gradients)
      • A2C-ACKTR
        • A2C
        • ACKTR
      • PPO
      • PPO2
      • GAIL
      • OPD
    • 多Agent

      • MADDPG
  • 自定义Net

    • LSTM-MLP
    • LSTM_Merge_MLP
    • MLP
    • LSTM
    • CNN
    • CNN-MLP

训练

例如 ddpg

python3 -m tbase.run --alg ddpg --num_env 1 --gamma 0.53 --seed 9 --print_action

默认参数:

  • scenario: "average", 平均分仓操作
  • codes: "000001.SZ", 平安银行
  • indexs: "000001.SH,399001.SZ", 000001.SH:沪指, 399001.SZ: 深指
  • start: "20190101", 训练开始时间
  • end: "201901231", 训练结束时间
  • max_iter_num: "500", 训练轮数
  • num_env: "1", 并行进程数, 当num_env=1时,不使用多进程方式运行
  • seed: "None", 系统随机种子
  • print_action: "False", 随机打印action的值,方便查看action分布状况
  • reward_fn: "daily_return_with_chl_penalty", env reward function
  • run_id: "1", 运行序号, 方便查看相同参数多次运行结果差异
  • debug: "False", debug模式,打印具体的交易信息
  • eval: "False", 回测评估,为True时,不训练,只加载模型进行回测
  • 其他参数

Defalut policy net setting(actor)

actor

Defalut value net setting(critic)

critic

运行tensorboard

tensorboard --logdir=/tmp/tbase/tensorboard

可以在http://localhost:6006中查看训练的loss, reward ,portfolio, time等指标

loss

评估&&回测

  • 训练周期内的评估指标
  • 回测: 模型在训练周期外(评估周期)的评估指标
    # lookback=10, 若测试从20200101开始, 则eval_start往前推10个交易日
    python -m tbase.run --alg ddpg --eval --eval_start 20191218 --eval_end 20200223 --seed 9
    
  • 滑动窗口更新模型, 在评估周期内,每隔一个窗口T,重新训练一次模型,当T>评估周期时,等价于固定模型

评估指标

  • 绝对收益率(Absolute Return)

  • 额外收益率(Excess Return)

    • 相对于"买入持有"策略
    • 相对于基线策略比如"沪深300"
  • 最大回撤: 在选定周期内任一历史时点往后推,净值走到最低点时的收益率回撤幅度的最大值

  • 夏普比率: 投资组合每承受一单位总风险,会产生多少的超额报酬

  • 年化收益率

待优化

  • 考虑到部署到线上的方便性, 更换tensorflow实现
  • 参数配置管理: yml
  • 使用cpprb作业replay buffer
  • 测试: 提升 pytest 覆盖率(coveralls.io)
  • 模型分享,评估,部署(wandb)
    • 模型榜单排名
    • performance: 参考评估指标(去除绝对收益率)
  • 大规模训练: 参考 menger
    • 分布式, evnviroment explorer, 方便无限scale
    • 多个buffer
      • sample
      • model update & inference
    • 监控: explorer, buffer, learner, 吞吐量,以方便定位bottle neck
    • stock2vector

由于计算资源有限,为所有的算法跑完A股中所有的股票,需要花费大量的时间,希望有空闲计算资源的朋友,可以跑一下模型,将实验结果分享出来

线上交流方式

  • QQ群: 477860214

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tbase-0.2.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

tbase-0.2.0-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

File details

Details for the file tbase-0.2.0.tar.gz.

File metadata

  • Download URL: tbase-0.2.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for tbase-0.2.0.tar.gz
Algorithm Hash digest
SHA256 444830c26a7bff2537c2cfe97e99b465cde0c194b7928a67feec3eae1cbb49e3
MD5 9fd60306dd9e200b7a0d1f0e221ec048
BLAKE2b-256 60d3fb8e46d4647dec030e06b8cf3f8d77e410d20d2f93349d0e6da8704c938c

See more details on using hashes here.

File details

Details for the file tbase-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: tbase-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 32.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for tbase-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ee30cd51247fb074e67956ddc25a5affcb8e1d029f5e944a677edcb0b75c288
MD5 8434401f77eae523f526856fa61bf682
BLAKE2b-256 c243510f37ca1d9c730ea49550f3685da724a4ca1a21d5734272adb2f91e1af5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page