4、强化学习基础:马尔可夫决策过程(MDP)、状态、动作、奖励与策略、价值函数与贝尔曼方程

好,咱们今天来啃一块硬骨头——强化学习的数学基础。说实话,我当年刚接触这块时,也被一堆符号和公式搞得头晕。但后来在实盘交易中踩过几次坑才明白,这些理论不是用来装点门面的,而是真正能帮你赚钱的底层逻辑。

你想想看,一个交易员做决策时,是不是总在问自己:现在该不该加仓?要不要止损?下一分钟行情会怎么走?这些问题,其实都可以用强化学习的框架来建模。说白了,MDP就是给交易决策穿上数学的外衣。

核心一句话:马尔可夫决策过程是强化学习的数学骨架,它把交易问题拆解成状态、动作、奖励三个要素,然后通过策略和价值函数来求解最优交易行为。

4.1 马尔可夫决策过程(MDP)——交易世界的数学建模

先说说马尔可夫性。这个概念其实很简单:未来只取决于现在,与过去无关。我在做高频交易策略时,经常用这个假设——当前时刻的订单簿状态已经包含了所有历史信息,不需要再往前翻10笔成交记录。

一个完整的MDP由五元组定义:

(S, A, P, R, γ)

其中:

  • S:状态空间,所有可能的市场状态集合
  • A:动作空间,所有可执行的操作集合
  • P:状态转移概率,P(s'|s,a) 表示在状态s执行动作a后,转移到s'的概率
  • R:奖励函数,R(s,a,s') 表示在状态s执行动作a并转移到s'获得的即时奖励
  • γ:折扣因子,0≤γ≤1,控制未来奖励的重要性

嗯,这里要注意:交易中的状态转移概率P,其实很难精确知道。我刚开始做强化学习交易时,总想把这个概率算得特别准,结果发现市场是非平稳的,历史概率根本不管用。后来我改用无模型方法,直接通过采样来学习,反而效果更好。

4.2 状态、动作与奖励——交易三要素

咱们把这三个概念映射到交易场景中,你就明白了。

状态(State)

状态就是交易员眼中的市场快照。我个人习惯把状态分为三类:

  • 市场状态:当前价格、成交量、波动率、技术指标等
  • 持仓状态:当前仓位、持仓成本、浮动盈亏等
  • 账户状态:可用资金、风险敞口、杠杆倍数等

举个例子,一个简单的状态向量可能是:

s = [close_price, volume, rsi_14, position_size, unrealized_pnl, cash_balance]

避坑指南:我曾经把状态维度设得特别高,用了50多个特征,结果模型训练了三天都不收敛。后来才明白,状态设计要遵循"够用就好"原则,一般5-15个关键特征就足够了。

动作(Action)

动作就是交易员能做的操作。常见的有:

  • 离散动作:买入、卖出、持有(最常用)
  • 连续动作:买入多少手、卖出多少手(更精细但更难学)
  • 混合动作:先决定方向,再决定数量

我建议初学者先从离散动作开始。为什么?因为连续动作空间太大,探索效率极低。我记得第一次用连续动作做回测,跑了100万步还没找到赚钱的策略,后来换成离散动作,10万步就出效果了。

奖励(Reward)

奖励是强化学习的"指挥棒"。设计不好,模型就会学歪。常见的奖励设计:

奖励类型 公式 特点
简单收益 r = pnl 容易理解,但忽略风险
夏普比率 r = (pnl - rf) / σ 考虑风险调整,更稳健
对数收益 r = ln(1 + return) 避免大亏,适合复利
混合奖励 r = pnl - λ * risk 可调节风险偏好

警告:千万别只用累计收益做奖励!我见过一个策略,为了追求高收益,疯狂加杠杆,最后回撤超过80%。奖励函数一定要包含风险惩罚项,否则模型会学会"赌徒式"交易。

4.3 策略——交易员的决策规则

策略π就是状态到动作的映射。用数学语言说:π(a|s) = P(A=a|S=s)。

策略分两种:

  • 确定性策略:每个状态对应唯一动作。比如"当RSI低于30时买入"
  • 随机性策略:每个状态对应动作的概率分布。比如"当RSI低于30时,80%概率买入,20%概率持有"

交易中我更喜欢随机性策略。为什么?因为市场有噪声,确定性策略容易过拟合。我曾经用确定性策略做回测,夏普比率高达3.0,结果实盘直接崩了——模型太"自信"了,遇到没见过的市场状态就乱来。随机性策略天然带有探索性,鲁棒性更好。

4.4 价值函数——给状态和动作打分

价值函数是强化学习的核心。它回答一个问题:当前状态(或状态-动作对)到底有多好?

状态价值函数 V(s)

表示从状态s开始,按照策略π行动,能获得的期望累计折扣奖励:

Vπ(s) = Eπ[ Σ γ^k * r_{t+k+1} | S_t = s ]

动作价值函数 Q(s,a)

表示在状态s执行动作a后,再按照策略π行动,能获得的期望累计折扣奖励:

Qπ(s,a) = Eπ[ Σ γ^k * r_{t+k+1} | S_t = s, A_t = a ]

这两个函数的关系很简单:V(s) = max_a Q(s,a)。也就是说,状态的价值等于该状态下所有动作中最好的那个Q值。

实战经验:我在做多资产组合交易时,用Q函数来评估每个资产的操作。比如当前持有BTC和ETH,Q(s, "加仓BTC") = 0.8,Q(s, "加仓ETH") = 0.6,那显然应该优先加仓BTC。这种"打分机制"比人工判断要客观得多。

4.5 贝尔曼方程——价值函数的自洽性

贝尔曼方程是强化学习的"牛顿定律"。它揭示了价值函数之间的递归关系:

V(s) = max_a [ R(s,a) + γ * Σ P(s'|s,a) * V(s') ]

翻译成人话:当前状态的价值 = 当前动作的即时奖励 + 未来状态价值的折扣和

这个方程为什么重要?因为它给了我们一个迭代求解的方法。你想想看,如果直接计算V(s),需要知道所有未来状态的分布,这几乎不可能。但有了贝尔曼方程,我们可以从后往前推,或者用动态规划逐步逼近。

我记得第一次用贝尔曼方程做策略评估时,写了个简单的迭代程序:

# 伪代码:价值迭代
V = zeros(num_states)
while not converged:
    for s in all_states:
        V_new[s] = max_a [ R(s,a) + γ * Σ P(s'|s,a) * V[s'] ]
    if max(|V_new - V|) < epsilon:
        break
    V = V_new

这个代码虽然简单,但跑起来特别慢。后来我改用Q-learning,直接从经验中学习,不需要知道P(s'|s,a),效率高了很多。

小技巧:贝尔曼方程中的折扣因子γ很关键。γ=0时,模型只看眼前利益,适合高频交易;γ=0.99时,模型考虑长远收益,适合趋势跟踪。我一般设γ=0.9,兼顾短期和长期。

4.6 本章知识体系总览

下面这张图总结了MDP的核心逻辑,我画了好几个版本才定稿,希望能帮你建立整体认知:

MDP核心框架与交易映射 状态 S 价格、持仓、资金 动作 A 买入/卖出/持有 奖励 R 收益、夏普比率 策略 π S → A 的映射 价值函数 V/Q 状态/动作评分 贝尔曼方程 V=R+γV' 策略选择 环境反馈 状态转移 P(s'|s,a) 策略评估 递归求解 核心循环:状态 → 动作 → 奖励 → 新状态 策略决定动作,价值函数评估好坏,贝尔曼方程提供求解方法 最终目标:找到最优策略 π*,最大化累计折扣奖励

这张图把MDP的五个核心要素串起来了。你从状态出发,经过策略选择动作,环境反馈奖励并转移到新状态,同时价值函数和贝尔曼方程在背后支撑着整个决策优化过程。

说实话,我当年学到这里时,最大的感悟是:交易本质上就是一个MDP。每个时刻你都在观察市场状态,做出买卖决策,获得盈亏反馈,然后进入下一个时刻。强化学习只是把这个过程数学化、自动化了。

下一节我们会把这些理论落地到代码中,用Python实现一个简单的MDP交易环境。到时候你会发现,这些看似抽象的数学概念,其实离实盘交易并不远。


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