想象一下,你是一家餐厅的主厨,面前摆着一份神秘的“市场菜单”——食材价格时涨时跌,顾客口味飘忽不定。你没有标准菜谱,只能一次次试菜:这道菜客人吃光了(赚钱),那道菜被原封不动退回(亏钱)。几个月后,你竟练出了一套自己的“交易直觉”:什么时候该多囤食材(加仓),什么时候该清空冰箱(清仓)。这个“试错—反馈—调整”的过程,就是强化学习(Reinforcement Learning, RL)在量化交易中的核心思想。 与传统机器学习“看着历史答案学习”不同,强化学习像一位“实习交易员”,在真实(或模拟)的市场环境中边做边学。它不需要告诉模型“昨天涨了所以今天该买”,而是给模型一个目标——最大化长期收益——让它自己在无数次决策中摸索出最优策略。这正是量化交易最诱人的地方:让算法替你在瞬息万变的金融市场中“试菜”。 本文会用“主厨学做菜”这个比喻贯穿始终,带你从零认识强化学习的核心组件、交易建模方法、策略训练与回测验证的全流程,并展示如何用Python实现一个简单的“AI交易员”原型。
对AI从业者而言,掌握强化学习的交易建模与策略优化方法,等于拿到进入智能投顾与量化交易领域的“入场券”——这是金融AI深度应用中最具商业价值的技能方向之一。
可视化演示
动态演示强化学习在量化交易中的应用的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
强化学习在量化交易中的应用:强化学习 强化学习交易建模的MDP框架 交易策略优化的核心RL算法 核心机制可视化 强化学习在量化交易中的应用整体架构与关键组件
试错学习基础
假设你第一天当主厨,面前是琳琅满目的食材。你不知道“宫保鸡丁该放多少辣椒”,只能试做一版端给顾客。顾客皱眉(负奖励),你减少辣椒;顾客点赞(正奖励),你记下配方。这就是强化学习最朴素的形式——试错学习。在量化交易里,这位“主厨”就是交易智能体,而“顾客”就是市场。
强化学习(RL)的框架由四个核心组件构成:智能体(Agent)是做出交易决策的算法;环境(Environment)是市场——包括价格、成交量、订单簿等;动作(Action)是买卖持有等操作;奖励(Reward)是每步交易后的盈利或亏损。智能体的目标不是某一笔赚钱,而是最大化长期累计奖励——相当于主厨追求的不只是一道菜好评,而是整个餐厅的回头客率。
Q-learning 是理解 RL 的最佳起点。它维护一张“状态-动作”价值表 Q(s,a),表示在状态 s 下做动作 a 能获得的期望累计奖励。核心更新公式如下:
回到餐厅比喻:Q-learning 就是主厨那本不断增厚的笔记本,记录着每一种状态(食材新鲜度、客流高峰)下各道菜(交易动作)的“预估得分”。随着经验积累,这本笔记越来越可靠,最终成为主厨的“决策秘籍”。
- 当前估计值Q(s,a) 是当前状态 s 下执行动作 a 的预期收益估计,相当于“你目前认为麻辣鸡丁能得几分”。
- 实际奖励r 是执行动作后环境返回的即时奖励,相当于顾客当场给出的评分。
- 未来最优价值\(\gamma \max_{a'} Q(s',a')\) 表示下一步状态 s' 下能获得的、打折扣后的最大期望收益。这像主厨预判:“这道菜口碑好,明天还能多带几位客人。”
- 时序差分误差括号内的整体是“实际收获”与“原有估计”的差距。差距越大,越需要修正认知。
- 迭代更新用学习率 α 控制修正幅度。α 小则保守(慢慢吸收新经验),α 大则激进(一次试菜就大幅改配方)。
交易环境建模
有了学习算法还不够——主厨需要厨房。在 RL 交易中,环境就是那个“虚拟厨房”,它决定了智能体能学到什么。一个逼真的交易环境至少包含三部分:历史数据回放器、撮合引擎和手续费模型。
历史数据回放器将过去的价格序列(开盘、收盘、最高、最低、成交量)逐帧“播放”给智能体。每一帧代表一个时间步 t 的市场快照:
其中 p 是价格,r 是动量指标,h 是当前持仓状态。这就像厨房里的“食材清单”——主厨需要知道今天有什么货、新鲜程度如何、冷藏室里还存着什么。
撮合引擎与手续费模拟真实下单的摩擦成本。你不能说“我想以 10 元买入”就立刻成交——得看有没有对手盘。更关键的是手续费与滑点,它们直接从奖励中扣除:
这是“厨房成本”:哪怕菜做得好,如果采购价太高、损耗太大,净利润依然可怜。
多场景并行回放是环境建模的高阶技巧。智能体不只在一个历史片段上训练,而是同时在牛市、熊市、震荡市等多个场景中“试菜”。这样训练出的策略才不会只擅长一种行情——就像一个优秀主厨,无论办婚宴还是街边快闪店,都能应对自如。
- 价格变化收益\((p_t - p_{t-1}) \times 持仓\) 是持仓资产随市场价格波动产生的浮盈浮亏,类似于食材库存因市场行情涨价而增值。
- 交易成本扣除每次下单都像“叫货”——不仅要付菜钱(价格),还要付运费(手续费)和在到货前的价格波动风险(滑点)。
- 净奖励真正进入学习算法的信号是扣除成本后的净利润。这正是主厨关注“净收入”而非“营业额”的原因。
状态特征观察
主厨判断“今天该做重口味还是清淡菜”,需要看温度、湿度、客流来源。交易智能体也一样,必须从原始市场数据中提炼出状态特征。这些特征组成了状态向量 s_t,是智能体决策的全部依据。
最常用的特征有三类:价格动量(过去 N 日的收益率)、波动率(价格变动幅度)、持仓状态(当前是多头、空头还是空仓)。这些特征组合成一个向量:
动量特征让智能体感知“市场在加速上涨还是减速下跌”,波动率帮助判断“当前是不是该谨慎收手”,持仓状态则防止重复买入。
特征工程的质量决定了学习上限——如果主厨只看菜价不看天气,那台风天停运导致食材短缺时就会措手不及。同样,状态特征缺失关键信息(如市场流动性)时,RL 策略学得再好也无济于事。
- 动量指标\(\text{momentum}_5 = (p_t - p_{t-5}) / p_{t-5}\) 是 5 日收益率,表示短期价格趋势。类似主厨观察“近几天这道菜点单量是上升还是下滑”。
- 波动率指标\(\sigma_{10}\) 是过去 10 日收益率的标准差,衡量价格起伏的剧烈程度。高波动如同顾客口味突然两极分化,点单极不稳定。
- 持仓状态\(h_t\) 用数值编码(如 -1 空头、0 空仓、1 多头),让智能体知道“自己手上是否有货”。这是避免策略“买完忘了卖”的关键记忆。
动作空间设计
主厨的“动作”是出什么菜;交易智能体的动作则是调整投资组合。最基本的动作空间是三选一:
但现实交易中“买多少”同样关键。于是动作空间扩展为带仓位比例的版本:
连续动作离散化是实践中的常用折中方案。理论上策略可以输出 0 到 1 之间任意连续仓位,但连续动作空间的探索难度极高。聪明的做法是把连续区间切成几档——就像主厨不会精确到“放 3.27 克盐”,而是“少许、适量、偏咸”几档,已经足够撑起一道菜的味道。离散化降低了学习难度,但损失了细微调仓的灵活性。
- 离散动作集定义所有允许的操作,每个动作映射为一个整数。这像菜单上固定几种套餐——“保守套餐”(清仓)到“激进套餐”(满仓)。
- 仓位系数a=1 表示全仓买入,a=-1 表示全部卖出,中间值对应部分仓位。正负号表达多空方向。
- 约束条件实际下单还需满足不超过最大持仓限制,如单次最大下单量不超过总资产的 20%。
奖励信号设置
奖励函数是整个 RL 系统中“裁判的评分标准”。如果主厨只按“顾客是否吃完”评分,那他会拼命做重口下饭菜而牺牲健康营养。同样,交易中只按“单笔盈亏”做奖励,策略会变成高频赌博:有浮盈就落袋,有浮亏就扛单。
好的奖励设计要兼顾收益与风险。经典的形式是:
其中 Profit_t 是单步收益,σ² 是收益波动率(风险度量),λ 是风险厌恶系数。
进阶的做法是用夏普比率作为奖励信号的平滑版本:
它衡量“每承担一单位风险能换来多少超额收益”。夏普比率高,说明这个策略的收益质量高。但直接优化夏普比率在数学上不稳定,实践中常先用简单奖励预热,再用夏普做二次调优。
- 单步收益项Profit_t 是这一步的账面积累,直接引导策略追求正收益。
- 风险惩罚项\(\sigma_t^2\) 是近期收益的方差,衡量“过山车”程度。惩罚它,等于要求主厨不仅菜要好吃,出菜质量还要稳定。
- 风险厌恶系数λ 是权重。λ 大则策略偏向保守(少交易、低波动),λ 小则激进。
策略网络构建
Q 表方法在状态空间巨大时(比如连续价格特征)会遇到维度灾难。这时需要策略网络——用神经网络做决策大脑。它相当于主厨经过千百次试菜后形成的“肌肉记忆”,不再翻笔记本,而是凭直觉出招。
策略网络 π_θ(a|s) 以状态向量 s 为输入,输出每个动作的概率分布:
策略网络之所以比 Q 表强大,是因为它具备泛化能力:遇到从未见过的状态组合,也能根据相似经验给出合理决策。就像主厨去了陌生城市,看到当地食材也能举一反三设计出新菜。这正是“深度强化学习”中的“深度”价值所在。
- 输入层状态向量 s 进入网络,作为主厨看到的“食材清单”。
- 隐藏层变换ReLU(W₁s + b₁) 对输入做非线性变换,提取高维特征。这相当于主厨扫一眼清单后,在脑中形成“温差大、客流多、库存足”的综合判断。
- 输出概率softmax 将网络输出变成一组和为 1 的概率值。比如 [0.7, 0.2, 0.1] 意味着 70% 概率买入、20% 持有、10% 卖出。
训练调优策略
有了网络结构和奖励函数,接下来是训练——让主厨从“乱来”变成“靠谱”的过程。RL 训练的核心挑战是探索与利用的平衡:一直按老配方做(利用)会错过新爆款;一直试新菜(探索)又会惹怒老顾客。
策略梯度方法(如 REINFORCE)直接优化策略网络,目标是最大化期望总奖励 J(θ)。参数更新方向为:
其中 G_t 是从时间 t 开始的累计折扣奖励。
训练中的超参数同样关键。ε-greedy 探索让智能体以 ε 概率随机探索(初始 ε=0.9,逐步衰减到 0.01);自适应学习率(如 Adam)让参数更新步长随梯度变化自动调整;经验回放则把历史经验存入缓冲区,随机采样小批量训练,打破时间相关性。
- 轨迹采样τ = (s₁,a₁,r₁,……,s_T,a_T,r_T) 是一条完整交易轨迹。相当于主厨记录整个晚市:每道菜、每位顾客反应、每笔账单。
- 动作概率对数梯度\(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 表示“往哪个方向调整网络参数,能让这次动作的概率增大”。
- 总回报加权乘以 G_t 的含义是:如果这一系列动作最后赚了钱(G_t > 0),就提高这些动作的概率;亏了钱就降低。
回测风控体系
训练的终点不是“在训练集上赚最多”,而是“在未来市场上活得久”。回测就是主厨在正式开业前的“内部试菜日”——把菜品拿给朋友试吃(历史数据模拟),收集反馈,调整配方,确保正式开业不砸招牌。
回测的核心指标三个:累计收益率、夏普比率、最大回撤。最大回撤的计算公式:
它衡量从资产净值高点跌到低点的最大幅度,是风控的红线。
样本内外测试是防止过拟合的防线:把历史数据按时间分段,前 70% 做训练(训练集),随后 15% 做验证(验证集)用于调参,最后 15% 做测试(测试集)用于最终评估。如果策略在训练集上收益很高、在测试集上却大幅缩水,说明策略“背下了题而不是学会了方法”——就像主厨为试菜的朋友定制口味,却不懂大众食客的喜好。
最后的防线是实盘熔断机制:当回撤超过阈值(如 10%),系统自动暂停交易并触发人工审核。这是把主厨的“盲目自信”关进笼子里——机器可以犯错,但不能一直犯错。
---
- 净值序列V_t 是每个时刻账户的总资产值。这像餐厅的每日流水账。
- 峰值比较对每个时刻 i,找到其后的最低净值 V_j,计算回撤比例。这是主厨复盘“开年最火爆时,紧接着连续半个月客流下降,那次跌了多惨”。
- 全局取最大找出所有回撤中的最大者,作为策略的“历史最大挫折”。回撤超过 20% 通常需要立即调参。
AI 应用场景
智能投顾:个人化资产配置助手
阶段:策略设计 + 奖励建模
解决的问题:传统智能投顾依赖固定规则(如 60% 股票 + 40% 债券)或人工再平衡,无法适应市场风格切换。用强化学习替代规则引擎后,AI 投顾能根据用户风险偏好和市场状态,自动调整股债比例,并在回撤超限时自动降仓。
具体案例:某基金公司开发了一个 RL 投顾原型,状态输入包含用户年龄、风险评分、当前仓位和市场动量;动作是股债现金三类的调仓比例;奖励函数为月度收益减去回撤惩罚。在 2018-2022 年的回测中,该策略在熊市中将最大回撤从 18% 压至 9%,同时年化收益与等权基准持平。
高频交易执行优化:让大单“隐藏”在市场洪流中
阶段:环境建模 + 动作空间设计
解决的问题:机构要买入 10 万股股票,一次性下单会瞬间推高价格(冲击成本)。RL 智能体把“拆单执行”当作序列决策问题:每次只下几百股,通过观察盘口深度与价格波动决定下单节奏,在减小冲击的同时不把时间拖太久。
具体案例:一家做市商使用 PPO 算法训练交易执行策略,状态用盘口五档量价数据编码,动作是“买 100 股 / 买 500 股 / 暂停 / 撤单”,奖励是“实际成交均价 - 基准均价”。上线后相比传统 VWAP 算法,冲击成本降低了约 15%。
Python 演示
import numpy as npimport random class QLearningTrader: """基于Q学习的最小交易智能体""" def __init__(self, n_states=50, n_actions=3, alpha=0.1, gamma=0.95): self.q_table = np.zeros((n_states, n_actions)) self.alpha = alpha self.gamma = gamma self.n_actions = n_actions def discretize(self, price, window=6): """将连续价格映射为离散状态索引""" price_series = getattr(self, 'prices', []) price_series.append(price) price_series = price_series[-window:] self.prices = price_series if len(price_series) < 2: return 0 ret = (price_series[-1] - price_series[0]) / price_series[0] # 映射到 [0, n_states-1] return min(int((ret + 0.2) / 0.4 * (self.q_table.shape[0] - 1)), self.q_table.shape[0] - 1) def choose_action(self, state, epsilon=0.1): """epsilon-greedy策略:以epsilon概率随机探索""" if random.random() < epsilon: return random.randint(0, self.n_actions - 1) return int(np.argmax(self.q_table[state])) def update_q(self, state, action, reward, next_state): """Q值迭代更新""" best_next = np.max(self.q_table[next_state]) td_error = reward + self.gamma * best_next - self.q_table[state, action] self.q_table[state, action] += self.alpha * td_error def run_backtest(prices, trader, epsilon=0.05): """在历史价格序列上回测""" cash = 10000.0 holdings = 0 for i in range(len(prices) - 1): s = trader.discretize(prices[i]) a = trader.choose_action(s, epsilon) if a == 0: # 买入 buy_amt = cash * 0.3 if buy_amt > 0 and prices[i] > 0: holdings += buy_amt / prices[i] cash -= buy_amt elif a == 2: # 卖出 if holdings > 0: cash += holdings * prices[i] holdings = 0 # 持有不做操作 equity = cash + holdings * prices[i + 1] s_next = trader.discretize(prices[i + 1]) r = equity - cash - holdings * prices[i + 1] # 简化奖励:用持仓浮盈表示 r = (prices[i + 1] - prices[i]) * holdings trader.update_q(s, a, r, s_next) return cash + holdings * prices[-1] if __name__ == "__main__": np.random.seed(42) prices = 100 + np.cumsum(np.random.randn(200) * 0.7) agent = QLearningTrader() for epoch in range(20): final_equity = run_backtest(prices, agent) if epoch % 5 == 0: print(f"epoch {epoch}: 期末净值 = {final_equity:.2f}") print(f"训练完成,最终净值 = {final_equity:.2f}")
self.q_table = np.zeros((n_states, n_actions))初始化一张全零的“状态-动作”价值表,相当于主厨的空白笔记本。ret = (price_series[-1] - price_series[0]) / price_series[0]计算窗口内价格动量,作为离散状态的依据。if random.random() < epsilonε-greedy 探索:以 10% 概率随机选动作,保证智能体不困在已知路径。best_next = np.max(self.q_table[next_state])获取下一状态的最优估值,用于计算时序差分误差。td_error = reward + self.gamma * best_next - self.q_table[state, action]这是 Q-learning 的核心:实际收获(奖励+未来折现)与当前估计的差距。if a == 0: buy_amt = cash * 0.3买入动作使用 30% 仓位,控制单次风险敞口。equity = cash + holdings * prices[i + 1]每步按最新价格计算总资产净值,用于评估策略表现。
常见误区
误区只要奖励公式写成“赚了就给正分”,RL 策略就会自动学会赚钱。我看网上好多教程都是这么写的,直接用收益率当 reward 不就行了吗?
正解只优化利润会导致策略偏好“高波动赌博”——偶尔大赚但频繁小亏,回撤极大。正确做法是引入风险惩罚项,如减去收益波动率的加权值。就像主厨若只看销售额,就会拼命做辣菜而忽视顾客肠胃承受力,短期营业额上去了,长期客源却流失了。
为何常见:初学者的直觉是“目标就是赚钱”,但量化交易的真正目标是“在可控风险下赚钱”,风险维度常被忽视。
误区用历史价格数据直接训练就足够了,手续费和滑点那一点点成本对结果影响不大,没必要建模。
正解高频交易中手续费和滑点可能吃掉大部分利润。一个在理想环境上训练出高收益的策略,加上万分之二的手续费后可能直接由盈转亏。真实环境建模必须包含撮合延迟、成交量和手续费。这就像主厨试菜时不含食材损耗成本,开业后才发现天天在赔钱。
为何常见:开源强化学习环境的默认配置往往不包含交易摩擦,初学者直接用默认环境导致忽视了这一关键因素。
误区回测曲线年化 200%,这个策略太厉害了,直接上实盘吧!
正解回测高收益往往是过拟合的产物——策略记住了历史数据中的噪声。必须做样本外测试(时间切分或滚动验证),并检查最大回撤和夏普比率。如果样本外收益断崖式下跌,说明策略只是“背题”而非“会做题”。就像主厨只在自家厨房给熟人做菜得到好评,换一个陌生餐厅、陌生顾客就手足无措。
为何常见:人天生对“高收益曲线”缺乏抵抗力,容易忽略数据切片和过拟合的陷阱。
面试题
Q1. 强化学习与监督学习的本质区别是什么?
- A.强化学习需要更多数据,监督学习需要更少数据
- B.强化学习通过试错与环境互动学习,监督学习从标注数据中学习映射关系← 正确答案
- C.强化学习没有目标函数,监督学习必须定义目标
- D.强化学习只能处理离散数据,监督学习只能处理连续数据
答案:B。强化学习的核心是智能体通过与环境交互、接收奖励信号来改进策略;监督学习是从带标签样本中学习输入到输出的映射。选项 A 数据量不是本质区别,C 强化学习同样有目标函数(最大化累计奖励),D 两者都可处理离散或连续数据。这就像主厨学做菜通过顾客反馈迭代,而照菜谱学的则是监督式学习。
Q2. 在 Q-learning 中,\(\gamma\)(折扣因子)的作用是?
- A.控制每次更新的学习步长
- B.平衡当前奖励和未来奖励的权重← 正确答案
- C.决定探索与利用的比例
- D.归一化奖励的取值范围
答案:B。折扣因子 γ ∈ [0,1] 决定了智能体对远期奖励的重视程度。γ 接近 1 时目光长远,接近 0 时只顾眼前。学习步长由 α 控制,探索比例由 ε 控制,γ 与归一化无关。就像主厨决策:γ 大时愿意为品牌口碑放弃短期客流,γ 小时只求明天开张。
Q3. 交易环境中,滑点和手续费对强化学习训练最直接的影响是?
- A.让状态空间维度更高
- B.减少了奖励信号,影响策略对真实收益的估计← 正确答案
- C.加快了 Q 表的收敛速度
- D.使得动作空间扩大
答案:B。滑点和手续费从奖励中直接扣除,导致智能体学习的“收益”低于理论收益。如果不建模,策略会高估交易的真实盈利能力。状态维度、收敛速度和动作空间都不受交易成本影响。这就像试菜时不计算食材运费和损耗,开业后才发现利润远低于预期。
Q4. 在交易 RL 中,常用的状态特征有哪些?
- A.过去 N 日的价格动量← 正确答案
- B.历史波动率← 正确答案
- C.当前持仓状态← 正确答案
- D.未来一周的新闻标题
答案:ABC。动量指标、波动率、持仓状态是标准的 RL 交易状态特征。选项 D 涉及未来信息,属于“未来函数”,在实际交易中不可获取,会导致回测结果虚高。就像主厨判断备菜量可以看天气预报,但绝不能“先知道明天的实际客流再备菜”。
Q5. 策略梯度方法中,乘以累计回报 \(G_t\) 的目的是?
- A.提高回报为正的动作概率,降低回报为负的动作概率← 正确答案
- B.让所有动作概率均匀分布
- C.降低梯度估计的方差
- D.替代学习率的作用
答案:A。\(G_t > 0\) 时梯度方向是增大对应动作概率;\(G_t < 0\) 时降低概率。这实现了“奖励好则重复,奖励差则避免”的强化直觉。选项 C 是基线函数(baseline)的作用,D 与学习率无关。就像主厨:顾客点赞的菜多做(概率上升),被退回的菜少做(概率下降)。
Q6. 最大回撤的计算公式中,最准确的含义是?
- A.某段时间内亏损的绝对值之和
- B.从净值峰值到后续最低点的最大跌幅比例← 正确答案
- C.策略最长的持续亏损周期
- D.所有负收益天数的平均值
答案:B。最大回撤衡量的是从净值高点到之后低点的最大跌幅比例,是策略风险的“最坏情境”指标。选项 A 是累计亏损,C 是亏损周期,D 是日均负收益,都不是回撤定义。就像主厨复盘最惨经历:开业最火时月流水 100 万,随后三个月跌至 60 万,回撤 40%。
Q7. 防止回测过拟合的常用方法包括哪些?
- A.按时间切分训练集和测试集← 正确答案
- B.用多个不同市场周期的数据进行交叉验证← 正确答案
- C.不断增加策略参数数量
- D.在样本外数据上验证策略表现← 正确答案
答案:ABD。时间切分、多周期交叉验证、样本外测试都是防过拟合的有效手段。参数越多决策自由度越大,越容易拟合噪声,因此 C 反而加剧过拟合。就像主厨不要为朋友定制口味而改变祖传配方——测试应该在“真正的顾客”(未知数据)上检验。
Q8. 强化学习中的“探索与利用平衡”指的是什么?
- A.在已知好策略和尝试新策略之间做权衡← 正确答案
- B.在多头和空头仓位之间做分配
- C.在股票和债券之间做资产配置
- D.在训练和验证之间切换数据
答案:A。探索(探索未知动作可能带来更高收益)与利用(沿用已验证的好动作)的权衡是 RL 的核心挑战。B 和 C 属于资产配置问题,D 是数据划分问题。比如主厨既要保留招牌菜(利用),也要定期研发新菜(探索),才能持续吸引顾客。
Q9. 在深度强化学习交易模型中,经验回放(Experience Replay)的主要作用是?
- A.增加训练集的大小以加速拟合
- B.打破样本间的时间相关性,稳定训练← 正确答案
- C.减少状态空间的特征维度
- D.替代奖励函数的计算
答案:B。经验回放把历史转移样本存入缓冲区,随机采样进行小批量更新。随机采样切断相邻样本的时间相关性,避免网络被短期趋势绑架而震荡不收敛。它不改变数据总量、特征维度或奖励计算。就像主厨不能只按“最近几天顾客口味”改菜单,而要回顾数月内的经验才能做出稳定判断。
Q10. 一个完整 RL 量化交易策略开发流程包含哪些步骤?
- A.历史数据收集与清洗← 正确答案
- B.状态特征设计与奖励函数定义← 正确答案
- C.环境搭建与策略网络训练← 正确答案
- D.回测验证与实盘风控← 正确答案
答案:ABCD。完整流程覆盖数据、建模、训练、验证四大环节。数据是食材,特征与奖励是配方,环境与训练是厨房与烹饪,回测与风控是开业前试菜与正式运营的品控。四者缺一不可。这正是本文从“试错基础”到“回测风控”贯穿的主线。