第一章:课程导论与预备知识
1.1 强化学习在量化择时中的价值
量化择时,说白了就是预测市场什么时候该买、什么时候该卖。传统方法用统计模型、技术指标,但市场这东西,说白了是个动态博弈的过程。你想想看,当所有人都用同一个均线策略时,这个策略就失效了。
我刚开始做量化那会儿,也迷信过各种指标。MACD金叉死叉、布林带突破,回测时漂亮得很,一上实盘就吃瘪。为什么?因为市场环境在变,波动率在变,投资者的情绪也在变。静态的策略,说白了就是刻舟求剑。
强化学习不一样。它不依赖固定的规则,而是让智能体在环境中不断试错,自己学会什么时候该激进、什么时候该保守。我在项目中遇到过这样一个场景:用DQN做股指期货的择时,模型在震荡市里学会了低买高卖,在趋势市里学会了追涨杀跌——它自己悟出来的,我没写任何规则。
核心价值一句话总结:强化学习让择时策略从「死规则」变成「活策略」,能自适应市场变化。
1.2 课程目标与学习路径
这门课的目标很明确:让你能亲手写出一套基于强化学习的择时系统。不是那种调个库就跑的demo,而是能上实盘、能赚钱的工程级代码。
具体来说,学完这门课,你应该能做到:
- 理解强化学习在金融时序中的核心难点(非平稳性、信噪比低、过拟合)
- 掌握至少3种强化学习算法(DQN、PPO、SAC)在择时场景下的实现
- 能自己设计状态空间、动作空间和奖励函数
- 会做回测、会做风险控制、会做策略评估
学习路径我建议这样走:先打好基础(就是本章),然后从最简单的DQN入手,再过渡到策略梯度方法,最后挑战连续动作空间的SAC。每一步我都会给出完整的代码和踩坑记录。
我的建议:别急着跑复杂模型。先把单只股票的择时用DQN跑通,再扩展到多标的、多周期。我曾经一上来就想做全市场选股+择时,结果调了两个月bug,得不偿失。
1.3 Python与PyTorch环境配置
工欲善其事,必先利其器。环境配置这块,我踩过的坑比走过的路还多。这里直接给出一套经过验证的配置方案。
1.3.1 Python环境
我个人习惯用Anaconda管理环境,干净、隔离、好回滚。建议创建一个专用环境:
conda create -n rl_trading python=3.9
conda activate rl_trading
然后安装核心依赖:
pip install numpy pandas matplotlib
pip install gymnasium # 强化学习标准环境接口
pip install stable-baselines3 # 强化学习算法库(我们后面会手写,但先装来对比)
pip install ta # 技术指标库
pip install backtrader # 回测框架
1.3.2 PyTorch安装
PyTorch的安装要特别注意CUDA版本。我的建议是:先看显卡驱动支持的CUDA版本,再装对应的PyTorch。
# 查看CUDA版本
nvidia-smi
# 以CUDA 11.8为例
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 如果没显卡,装CPU版
pip install torch torchvision torchaudio
避坑指南:我曾经因为CUDA版本不匹配,训练了三天模型才发现根本没用到GPU。建议装完后跑一行代码验证:
import torch
print(torch.cuda.is_available()) # 输出True才算成功
1.3.3 验证安装
写个简单的脚本测试一下整个环境是否通顺:
import numpy as np
import torch
import gymnasium as gym
# 测试PyTorch
x = torch.randn(3, 4)
print(f"PyTorch张量: {x.shape}")
# 测试Gym环境
env = gym.make("CartPole-v1")
obs, info = env.reset()
print(f"Gym环境状态维度: {obs.shape}")
# 测试技术指标库
import ta
print("所有库加载成功!")
1.4 知识体系总览
下面这张图是我自己画的,把整个课程的知识结构串起来了。你保存好,后面每学一章都可以回来对照着看。
1.5 本章小结
这一章我们聊了三件事:强化学习为什么适合做择时、这门课能带你走到哪、以及怎么把环境搭好。嗯,看起来都是准备工作,但说实话,环境配置这块我当年至少浪费了一周时间。你现在照着做,半小时搞定。
下一章开始,我们就要动手写代码了。我会从最简单的DQN开始,一步步带你实现一个完整的择时智能体。到时候你会发现,原来强化学习也没那么神秘。
记住:量化交易的核心不是模型多复杂,而是你能不能稳定地赚钱。强化学习只是工具,别为了用RL而用RL。