1. 课程导论与金融AI概览:强化学习在量化交易中的角色、课程目标与学习路径、环境搭建

1.1 为什么是强化学习?——量化交易的新范式

大家好,欢迎来到这门课。我是你们的老朋友,一个在量化交易和AI领域摸爬滚打了七八年的工程师。

先聊个实在的。传统的量化交易,说白了就是「找规律」。你写个策略,比如均线金叉买入,死叉卖出。或者用机器学习,预测明天的涨跌。这些方法本质上是「模式识别」——从历史数据里找统计规律。

但交易这件事,它有个致命的特点:你的行为会影响市场。你买,价格就涨;你卖,价格就跌。传统模型假设市场是静态的,可现实是动态博弈。你想想看,一个预测模型,它不考虑你的操作对未来的影响,这合理吗?

强化学习不一样。它不预测价格,它学习决策序列。它知道:今天买,明天卖,这个动作序列最终能赚多少钱。它甚至能学会「假装买入」来试探市场深度——嗯,我在实盘里见过这种骚操作。

核心观点:强化学习解决的是「序列决策」问题。交易不是单次赌博,而是一连串的买卖动作。RL 天然适合这个场景。

我个人习惯把量化策略分成三代:

  • 第一代:规则驱动(均线、布林带、MACD)—— 靠人脑找规律
  • 第二代:监督学习(LSTM、XGBoost预测涨跌)—— 靠机器找规律
  • 第三代:强化学习(DQN、PPO、SAC)—— 靠机器学「怎么交易」

你可能会问:第二代不也挺好吗?我在项目中遇到过,用LSTM预测准确率做到55%,但实盘一跑就亏钱。为什么?因为预测准不代表会交易。你预测涨,但仓位该多大?止损设在哪?这些是决策问题,不是预测问题。

1.2 课程目标:你能带走什么?

这门课不是讲理论。市面上讲DQN、PPO的书很多,但能让你从零搭出一套可回测、可实盘的交易系统的,不多。

学完这门课,我希望你能做到三件事:

  1. 理解RL交易的核心逻辑——状态、动作、奖励、环境,这些概念怎么映射到真实交易中
  2. 亲手搭建回测框架——不是用现成的库,而是自己写一个。为什么?因为现成的库(比如Backtrader)对RL支持很差,你没法把神经网络塞进去
  3. 跑通至少3个策略——从简单的单股交易,到多股组合,再到带风控的实盘级策略

我的建议:别急着跑代码。先理解「为什么RL适合交易」这个底层逻辑。代码可以抄,但认知框架得自己搭。

1.3 学习路径:我们怎么走?

整个课程分四个阶段,我画了张图帮你理解:

阶段1:基础 RL理论 + 环境搭建 阶段2:回测 自定义回测引擎 阶段3:策略 DQN/PPO/SAC实现 实盘 部署 课程知识体系结构 每章核心组件 📊 状态空间 🎮 动作空间 💰 奖励函数 🧠 策略网络 价格/持仓/指标 买卖/持仓/止损 PnL/夏普/回撤 DQN/PPO/SAC

这张图我画了好几次才满意。你看,四个阶段是串行的,但每个阶段内部,我们都会反复回到「状态-动作-奖励」这个三角。这是RL交易系统的灵魂。

1.4 环境搭建:别让工具卡住你

好,理论聊完了,咱们动手。我见过太多人,课程买了,兴致勃勃打开电脑,结果装环境装了两天,心态崩了。咱们别这样。

你需要的东西其实不多:

工具 版本建议 用途
Anaconda 2023.09+ Python环境管理,避免依赖冲突
Python 3.9 - 3.11 别用3.12,有些库还没适配
PyTorch 2.0+ 强化学习主力框架
Gymnasium 0.29+ RL标准环境接口
Pandas / NumPy 最新版 数据处理,逃不掉的
Matplotlib 3.7+ 画图看结果

避坑指南:我曾经在项目里用Python 3.12,结果Stable-Baselines3死活装不上。折腾了两天,最后发现是版本不兼容。所以,听我的,用3.10,稳如老狗。

安装步骤很简单,我写了个脚本,你照着跑就行:

# 1. 创建虚拟环境(别装在base里,会乱)
conda create -n rl_trading python=3.10

# 2. 激活环境
conda activate rl_trading

# 3. 安装核心库
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install gymnasium pandas numpy matplotlib jupyter

# 4. 可选:强化学习库(我们后面会手写,但先装上方便对比)
pip install stable-baselines3

# 5. 验证安装
python -c "import torch; import gymnasium; print('All good!')"

跑完最后一行,如果看到「All good!」,恭喜你,环境搭好了。如果报错,别慌。大概率是CUDA版本问题。你可以在终端输入 nvidia-smi 看看你的显卡驱动版本,然后去PyTorch官网选对应的安装命令。

我的小技巧:装完环境后,立刻创建一个Jupyter notebook,把上面所有库都import一遍。确认没问题了,再关终端。这叫「一次验证,终身省心」。

1.5 第一个RL交易环境:Hello World

环境搭好了,咱们写个最简单的RL交易环境。别怕,就几十行代码,让你感受一下「状态-动作-奖励」是怎么映射到交易上的。

import gymnasium as gym
from gymnasium import spaces
import numpy as np

class SimpleTradingEnv(gym.Env):
    """最简单的交易环境:只有1只股票,每次只能买1股"""
    
    def __init__(self, price_data):
        super().__init__()
        self.prices = price_data
        self.current_step = 0
        
        # 动作空间:0=持有,1=买入,2=卖出
        self.action_space = spaces.Discrete(3)
        
        # 状态空间:[当前价格, 持仓量, 现金]
        self.observation_space = spaces.Box(
            low=-np.inf, high=np.inf, shape=(3,), dtype=np.float32
        )
        
        # 初始状态
        self.cash = 10000  # 初始资金
        self.holdings = 0  # 持仓数量
        
    def reset(self, seed=None):
        self.current_step = 0
        self.cash = 10000
        self.holdings = 0
        return self._get_obs(), {}
    
    def step(self, action):
        price = self.prices[self.current_step]
        
        # 执行动作
        if action == 1:  # 买入
            if self.cash >= price:
                self.holdings += 1
                self.cash -= price
        elif action == 2:  # 卖出
            if self.holdings > 0:
                self.holdings -= 1
                self.cash += price
        
        # 移动到下一步
        self.current_step += 1
        done = self.current_step >= len(self.prices) - 1
        
        # 计算奖励:总资产变化
        new_total = self.cash + self.holdings * price
        reward = new_total - self._last_total
        self._last_total = new_total
        
        return self._get_obs(), reward, done, False, {}
    
    def _get_obs(self):
        price = self.prices[self.current_step]
        return np.array([price, self.holdings, self.cash], dtype=np.float32)

你看,就这么简单。状态是「价格、持仓、现金」,动作是「买、卖、持有」,奖励是「资产变化」。这就是RL交易的核心骨架。后面所有复杂的策略,都是在这个骨架上长肉。

嗯,这里要注意:这个环境没有考虑交易成本、滑点、市场冲击。真实交易中这些因素能吃掉你一半利润。我们会在后面的章节逐步加上。

1.6 本章小结

好,第一章就到这。我们聊了:

  • 为什么RL适合交易——序列决策问题
  • 课程的四阶段路径——基础、回测、策略、实盘
  • 环境搭建——别用Python 3.12,听我的
  • 第一个RL交易环境——几十行代码,核心逻辑全在里面

最后说句掏心窝的话:做RL交易,别想着一步登天。我刚开始的时候,跑了一个月DQN,结果还不如简单的均线策略。但坚持下来,把奖励函数调好,把状态空间设计对,效果就慢慢出来了。这行没有银弹,但有方法论。

下一章,我们会深入强化学习的核心理论——马尔可夫决策过程(MDP)和贝尔曼方程。这些东西听起来吓人,但说白了就是「怎么把交易问题数学化」。我会用最直白的方式讲给你听。


公众号:蓝海资料掘金营,微信deep3321