1 解决了什么问题?

现有的投资组合管理方法有一个缺点,它们通常假设每次对资产的重新分配都可以立即完成,从而忽略了价格滑点(price slippage)作为交易成本的一部分。

价格滑点:操盘手期望为交易付款的价格与执行交易的实际价格之间的差值。

之所以会出现滑点是因为操盘手下单交易与经纪商收到交易的时间之间会有稍许延时。在此延时内,价格可能会有所改变。在快速变化、波动的市场中,滑点可能会较高。

本文旨在解决此问题,提出一种用于投资组合管理的分层强化股票交易系统(HRPM)。(idea 来源)作者观察到在现实世界的交易中,投资组合经理和交易者是有等级的。投资组合经理 定期为投资组合中的每只股票分配一个百分比权重以获得长期利润,而 交易者 则关心以有利的价格进行最佳执行以最小化交易成本。本文为投资组合管理 (HRPM) 开发了分层强化交易系统,该由两个决策过程的层次结构组成。高层策略以较低的频率改变投资组合的权重,而低层政策决定在哪个价格和多少数量下在短时间内下达买卖订单,以实现高层政策的目标。

2 提出了什么方法?

2.1 问题定义

1 交易过程:本文将整个交易过程划分为两类周期,持有期(holding period)交易期(trading period)。在持有期间,agent 持有预先选定的资产,不进行任何买卖。随着市场的波动,资产的价格在持有期间会发生变化。在持有期结束时,agent 将在下一个持有期确定新的投资组合权重。在交易期间,agent 购买或出售部分资产股份以实现新的投资组合权重。持有期和交易期的长度取决于特定设置,并且会随时间而变化。

2 投资组合(portfolio):投资组合可表示为下式
wt=[w0,t,w1,t,w2,t,…,wM,t]T∈RM+1and ∑i=0Mwi,t=1\boldsymbol{w}_{t}=\left[w_{0, t}, w_{1, t}, w_{2, t}, \ldots, w_{M, t}\right]^{T} \in \mathbb{R}^{M+1} \text { and } \sum_{i=0}^{M} w_{i, t}=1 wt​=[w0,t​,w1,t​,w2,t​,…,wM,t​]T∈RM+1 and i=0∑M​wi,t​=1
其中,M+1M+1M+1 表示投资组合中资产的数量,包括了一个无风险(risk-free)资产,即现金和 MMM 个风险资产。wi,tw_{i,t}wi,t​ 表示第 iii 个资产在第 ttt 个持有期开始时的投资比例。其中,w0,tw_{0,t}w0,t​ 表示手中持有的现金数量。同样,本文使用 wt′\boldsymbol{w}_{t}^{\prime}wt′​ 来表示在持有期 ttt 结束时的投资比例。

3 资产价格(asset price):在 ttt 个持有期内,资产的开市价格和收市价格分别表示为:
pt=[p0,t,p1,t,p2,t,…,pM,t]Tpt′=[p0,t′,p1,t′,p2,t′,…,pM,t′]T\boldsymbol{p}_{t}=\left[p_{0, t}, p_{1, t}, p_{2, t}, \ldots, p_{M, t}\right]^{T} \\ \boldsymbol{p}_{t}^{\prime}=\left[p_{0, t}^{\prime}, p_{1, t}^{\prime}, p_{2, t}^{\prime}, \ldots, p_{M, t}^{\prime}\right]^{T} pt​=[p0,t​,p1,t​,p2,t​,…,pM,t​]Tpt′​=[p0,t′​,p1,t′​,p2,t′​,…,pM,t′​]T
需要注意的是,现金的价格是一个大于0的常数,p0,t=p0,t′=p0,t+1for t≥0p_{0, t}=p_{0, t}^{\prime}=p_{0, t+1} \text { for } t \geq 0p0,t​=p0,t′​=p0,t+1​ for t≥0。

4 投资组合价值(Portfolio Value):通过对一个持有期的开始价值和结束价值的定义,本文可计算出投资组合的价值变化。
vt′=vt∑i=0Mwi,tpi,t′pi,tand wi,t′=wi,tpi,t′pi,t∑i=0Mwi,tpi,t′pi,tfor i∈[0,M]v_{t}^{\prime}=v_{t} \sum_{i=0}^{M} \frac{w_{i, t} p_{i, t}^{\prime}}{p_{i, t}} \text { and } w_{i, t}^{\prime}=\frac{\frac{w_{i, t} p_{i, t}^{\prime}}{p_{i, t}}}{\sum_{i=0}^{M} \frac{w_{i, t} p_{i, t}^{\prime}}{p_{i, t}}} \text { for } i \in[0, M] vt′​=vt​i=0∑M​pi,t​wi,t​pi,t′​​ and wi,t′​=∑i=0M​pi,t​wi,t​pi,t′​​pi,t​wi,t​pi,t′​​​ for i∈[0,M]
5 市价单(Market order):指试图以当前市场价格买入或卖出股票,表达以 最佳可用价格 买入(或卖出)的意愿。

6 限价单(Limit Order):在特定时间范围内以特定价格买入或卖出一定数量股票的订单。可以建模为一个元组 (ptarget ,±qtarget )\left(p_{\text {target }}, \pm q_{\text {target }}\right)(ptarget ​,±qtarget ​),其中 ptargetp_{target}ptarget​ 代表提交的目标价格,qtargetq_{target}qtarget​代表提交的目标数量,±±± 代表交易方向(买入/卖出)。

7 限价订单簿(Limit Order Book):限价订单簿(LOB)是一个列表,包含有关当前限价订单的所有信息。

作者观察到,追求更好售价的策略总是与更长的(期望的)执行时间相关联。然而,长时间的执行可能会非常昂贵,因为在交易期结束时,特别是当市场价格向下移动时,可能不得不以高价进行交易。

8 交易成本(Trading Cost):交易成本包括佣金(commission Fee)和滑点(slippage),ctrade =ccom +cslippage c_{\text {trade }}=c_{\text {com }}+c_{\text {slippage }}ctrade ​=ccom ​+cslippage ​。佣金是经纪人为执行交易而收取的费用,计算方式为:
ccom =λ∑i=1M(qi,target ×pi,avg )c_{\text {com }}=\lambda \sum_{i=1}^{M}\left(q_{i, \text { target }} \times p_{i, \text { avg }}\right) ccom ​=λi=1∑M​(qi, target ​×pi, avg ​)
其中,λ\lambdaλ 是买卖双方的固定佣金率。滑点是交易的预期价格与实际达到的价格之间的差异。作者将滑点定义为策略实现的平均执行价格 pavgp_{avg}pavg​ 相对于交易期 ttt 结束时的价格:
cslippage =(pavg −pt+1)×(±qtarget )c_{\text {slippage }}=\left(p_{\text {avg }}-p_{t+1}\right) \times\left(\pm q_{\text {target }}\right) cslippage ​=(pavg ​−pt+1​)×(±qtarget ​)
考虑交易成本,持有期和交易期 ttt 的投资组合价值变化满足:
vt+1=vtw0,t−(1+λ)∑i=1M[±qi,target ×pi,avg ]⏟Cash +∑i=1M[(vtwi,tpi,t±qi,target )×pi,t+1]⏟Assets Value =∑i=0Mvtwi,tpi,t+1pi,t−ctrade ,t\begin{aligned} v_{t+1} &=\underbrace{v_{t} w_{0, t}-(1+\lambda) \sum_{i=1}^{M}\left[\pm q_{i, \text { target }} \times p_{i, \text { avg }}\right]}_{\text {Cash }} +\underbrace{\sum_{i=1}^{M}\left[\left(\frac{v_{t} w_{i, t}}{p_{i, t}} \pm q_{i, \text { target }}\right) \times p_{i, t+1}\right]}_{\text {Assets Value }} \\ &=\sum_{i=0}^{M} \frac{v_{t} w_{i, t} p_{i, t+1}}{p_{i, t}}-c_{\text {trade }, t} \end{aligned} vt+1​​=Cash vt​w0,t​−(1+λ)i=1∑M​[±qi, target ​×pi, avg ​]​​+Assets Value i=1∑M​[(pi,t​vt​wi,t​​±qi, target ​)×pi,t+1​]​​=i=0∑M​pi,t​vt​wi,t​pi,t+1​​−ctrade ,t​​
我们的目标是 通过考虑交易成本,在较长的一段时间内最大化最终的投资组合价值

2.2 Hierarchical MDP Framework

当在状态 sts_tst​ 执行动作并在未来遵循策略 πππ 时,Q−valueQ-valueQ−value 函数给出预期的累积奖励:Qπ(st,at)=E(st+1,⋯∼π)[∑i=tTγir(si,ai)]Q^{\pi}\left(s_{t}, a_{t}\right)=\mathbb{E}_{\left(s_{t+1}, \cdots \sim \pi\right)}\left[\sum_{i=t}^{T} \gamma^{i} r\left(s_{i}, a_{i}\right)\right]Qπ(st​,at​)=E(st+1​,⋯∼π)​[∑i=tT​γir(si​,ai​)]。

agent 的目标是要学习一个最优策略 πθ∗=argmax⁡πθEπθ[∑i=0Tγirt+i∣st=s]\pi_{\theta^{*}}=\operatorname{argmax}_{\pi_{\theta}} \mathbb{E}_{\pi_{\theta}}\left[\sum_{i=0}^{T} \gamma^{i} r_{t+i} \mid s_{t}=s\right]πθ∗​=argmaxπθ​​Eπθ​​[∑i=0T​γirt+i​∣st​=s]。

现实世界的投资组合管理面临的一个关键挑战是平衡不同决策过程的多方面且有时相互冲突的目标。投资组合经理主要关心的是长期利润。他们通常将执行视为满足客户的利润要求和风险偏好的苦差事。虽然交易者关心以最优惠的价格进行最佳执行以最小化交易成本,但可能并不总是意识到经理的利润来源和交易的紧迫性。此外,平面 RL 无法处理具有较长时间范围的复杂任务。投资组合经理需要很多小时(有时是几天),而代理需要每隔几秒或更短的时间做出决定。采样频率受到这个时间范围问题的限制,因此有关市场动态的所有可用信息都没有得到充分利用。因此,电子交易算法应该在多个粒度级别上运行

作者将投资组合管理与交易成本建模为两个层次 MDP,分别用于 投资组合管理交易执行
MDPh=(Sh,Ah,Ph,rh,γ,Th)MDPl=(Sl,Al,Pl,rl,γ,Tl)\begin{aligned} \mathrm{MDP}^{h} &=\left(\mathcal{S}^{h}, \mathcal{A}^{h}, \mathcal{P}^{h}, r^{h}, \gamma, T^{h}\right) \\ \mathrm{MDP}^{l} &=\left(\mathcal{S}^{l}, \mathcal{A}^{l}, \mathcal{P}^{l}, r^{l}, \gamma, T^{l}\right) \end{aligned} MDPhMDPl​=(Sh,Ah,Ph,rh,γ,Th)=(Sl,Al,Pl,rl,γ,Tl)​
高层策略和低层策略在不同的时间尺度上执行。具体来说,高层 MDP 的时间跨度是投资组合的总持有时间,高层 MDP 的时间步长是持有期,可能包括几个交易日。另一方面,低级别 MDP 的时间范围是一个小的交易窗口,例如一个交易日。低级 MDP 的时间步长可能是几分钟,以便低级策略采取行动。我们使用 ttt 作为高层时间步,使用 t′t^{\prime}t′ 作为低层时间步。

2.3 The High-level MDP for Portfolio Management

高层 MDP 是针对项目组合管理问题建模的。也就是说,交易代理在每个持有期开始时为将资金重新分配到许多金融资产中给出了新的投资组合权重

1 状态(State):状态描述为 sth={Xt,wt}∈Shs_{t}^{h}=\left\{\boldsymbol{X}_{t}, \boldsymbol{w}_{\boldsymbol{t}}\right\} \in \mathcal{S}^{h}sth​={Xt​,wt​}∈Sh,其中 Xt\boldsymbol{X}_{t}Xt​ 为历史股票基本特征,wt\boldsymbol{w}_{\boldsymbol{t}}wt​ 为当前投资组合的权重。对于 MMM 个非现金的资产,Xi,t\boldsymbol{X}_{i, t}Xi,t​ 为资产 iii 在窗口 kkk 上构建的特征:Xi,t={xi,t−k+1,xi,t−k+2,⋯,xi,t}\boldsymbol{X}_{i,t}=\left\{\boldsymbol{x}_{i, t-k+1}, \boldsymbol{x}_{i, t-k+2}, \cdots, \boldsymbol{x}_{i, t}\right\}Xi,t​={xi,t−k+1​,xi,t−k+2​,⋯,xi,t​},其中 Xi,t\boldsymbol{X}_{i,t}Xi,t​ 表示资产 iii 在交易日 ttt 的基本信息,包括开盘价、收盘价、最高价、最低价和成交量。注意,可以通过添加更多因子来丰富状态以获得更好的性能。为了简化和公平比较,作者仅使用基本的日常信息来描述这项工作中的高层状态。

2 动作(Action):在持有期 ttt 结束时,agent 将根据状态 sths^h_tsth​ 给出高层动作 atha^h_tath​ 以重新分配资产中的资金作为子任务。子任务由投资组合权重 wt′w_{t}^{\prime}wt′​ 和 wt+1w_{t+1}wt+1​ 之间的差异决定。由于 wt′w_{t}^{\prime}wt′​ 在持有期 ttt 已经根据式(3)确定,持有期 ttt 的 agent 的行为可以单独用投资组合向量 wt+1w_{t+1}wt+1​ 来表示。因此,我们在连续动作空间中将动作定义为 ath=wt+1a_{t}^{h}=w_{t+1}ath​=wt+1​。

3 收益(Reward):对于每个状态-动作对 (sth,ath)\left(s_{t}^{h}, a_{t}^{h}\right)(sth​,ath​),在持有期 ttt 的收益可根据式(6)计算:rt=vt+1−vtr_{t}=v_{t+1}-v_{t}rt​=vt+1​−vt​。

2.4 The Low-level MDP for Trade Execution

高级策略为低级策略分配子任务。子任务由长度为 TwindowT_{window}Twindow​ 和目标交易量 qtargetq_{target}qtarget​ 的允许时间窗口表示。TwindowT_{window}Twindow​ 是基于手动配置的,在市场是连续的假设下,交易周期 ttt 的 qtarget,tq_{target,t}qtarget,t​ 可以通过 qtarget ,t=vt′∣wt+1−wt′∣⊙1pt′q_{\text {target }, t}=v_{t}^{\prime}\left|w_{t+1}-w_{t}^{\prime}\right| \odot \frac{1}{p_{t}^{\prime}}qtarget ,t​=vt′​∣wt+1​−wt′​∣⊙pt′​1​ 进行计算。子任务可以被认为是 交易执行,交易 agent 在不同时间以相应的期望价格下达许多小型限价单。因此,我们将子任务建模为低层 MDP。

1 状态(State):考虑到私有状态和市场状态,我们在每个低级时间步 t′t^{\prime}t′ 维护一个状态 st′ls^l_{t^{\prime}}st′l​。交易执行的 私有状态 是剩余交易时间 Twindow−TelapsedT_{\text {window}}-T_{\text {elapsed}}Twindow​−Telapsed​ 以及剩余数量 qtarget,t−qfinishq_{target,t} - q_{finish}qtarget,t​−qfinish​,其中,TelapsedT_{\text {elapsed}}Telapsed​ 为已使用的时间,qfinishq_{finish}qfinish​ 为已完成的交易量。市场状态 由历史限价订单和多种技术因素组成。作者在一个时间窗口 k′k^{\prime}k′ 中收集历史限价单 LOBt′={lobt′−k,lobt′−k+1,⋯,lobt′−1}\boldsymbol{L} \boldsymbol{O B}_{t^{\prime}}=\left\{\boldsymbol{l o b}_{t^{\prime}-k}, \boldsymbol{l o b}_{t^{\prime}-k+1}, \cdots, \boldsymbol{l o b}_{t^{\prime}-1}\right\}LOBt′​={lobt′−k​,lobt′−k+1​,⋯,lobt′−1​},其中 lobt′l o b_{t^{\prime}}lobt′​ 是时间步 t′t^{\prime}t′ 的限价订单簿,包括价格和数量。

2 动作(Action):每个低层动作对应一个限价单决策,目标价格为 ptargetp_{target}ptarget​,目标数量为 ±qtarget±q_{target}±qtarget​。需要注意的是,零数量表示跳过当前交易时间步没有下单,如果一个动作 at′a_{t^{\prime}}at′​ 由于价格不合适而在低级时间步 t′t^{\prime}t′ 中执行失败,则该动作将在下一个低级时间步 (t′+1)(t^{\prime}+1)(t′+1) 没有实际交易。交易期结束时剩余的任何数量 都必须使用市价单进行清理,在订单簿的买入方遍历较低的价格,直到所有剩余的交易量都被售出。

3 收益(Reward):一旦收到限价订单决定,环境将匹配该订单并反馈执行价格 ppaidp_{paid}ppaid​。作者定义底层收益为
rt′l=−[λ(±qtarget ×ppaid )+(ppaid −pt+1)×(±qtarget )]r_{t^{\prime}}^{l}=-\left[\lambda\left(\pm q_{\text {target }} \times p_{\text {paid }}\right)+\left(p_{\text {paid }}-p_{t+1}\right) \times\left(\pm q_{\text {target }}\right)\right] rt′l​=−[λ(±qtarget ​×ppaid ​)+(ppaid ​−pt+1​)×(±qtarget ​)]
因此,低层在 episode 中的 累积交易成本 将报告给高层策略以计算高层奖励,ctrade ,t=−∑t′Tlrt′lc_{\text {trade }, t}=-\sum_{t^{\prime}}^{T^{l}} r_{t^{\prime}}^{l}ctrade ,t​=−∑t′Tl​rt′l​。

2.5 使用 RL 进行优化

2.5.1 两个策略的层次结构

本文的环境有两个动态:价格动态限价订单簿动态。 作者将标准 RL 设置扩展到分层的两层结构,具有高层策略 πh\pi^hπh 和低层策略 πlπ^lπl。与现有的 HRL 算法不同,本文的高层策略和低层策略在不同的时间尺度上运行。如图2所示,每个高级时间步 ttt 由三个步骤组成:

  1. 高层策略观察高层状态 sths^h_tsth​ 并产生高层动作 atha^h_tath​ ,该动作对应于下一步的新投资组合;
  2. 高层动作 atha^h_tath​ 将根据当前组合与新组合之间的差距为低层策略生成子任务;
  3. 低层策略基于低层状态 st′ls^l_{t^{\prime}}st′l​ 产生低层动作 at′la^l_{t^{\prime}}at′l​,该操作将应用于动态限制订单以更新当前投资组合。

2.5.2 具有熵奖励的高层 RL

作者将高层问题视为一个 连续控制问题,因为高层策略应该根据方程(1)生成一个连续向量。

不使用DDPG的原因:

以前的论文利用 DDPG 来生成投资组合权重。但 DDPG 在解决本文问题方面面临挑战。首先,DDPG 高度依赖训练有素的评论家。然而,critic 也需要大量数据,这在金融领域是有限的。此外,在将动作应用到环境中时,DDPG 中的探索依赖于高斯噪声。由于选择了特定的投资组合权重序列并排除了其他可能的投资组合权重序列,这种探索可能会失败。此外,我们发现投资组合权重会收敛到少数资产。也就是说,agent 只持有很少的资产。

作者在这里使用了 REINFORCE 算法。解决这些问题的一种方法是引入熵红利(entropy bonus)。为了鼓励高层策略不要“把所有的鸡蛋放在一个篮子里”,我们希望找到一个能够 最大化最大熵目标 的高层政策:
πh∗=argmax⁡πh∑t=0ThEs0h∼β0,st+1h∼ph,ath∼πh[γhr~h(sth,ath)]=argmax⁡πh∑t=0ThEs0h,st+1h,ath[γh(rh(sth,ath)+ηH(ath))]\begin{aligned} \pi^{h^{*}} &=\underset{\pi^{h}}{\operatorname{argmax}} \sum_{t=0}^{T^{h}} E_{s_{0}^{h} \sim \beta_{0}, s_{t+1}^{h} \sim p^{h}, a_{t}^{h} \sim \pi^{h}}\left[\gamma^{h} \tilde{r}^{h}\left(s_{t}^{h}, a_{t}^{h}\right)\right] \\ &=\underset{\pi^{h}}{\operatorname{argmax}} \sum_{t=0}^{T^{h}} E_{s_{0}^{h}, s_{t+1}^{h}, a_{t}^{h}}\left[\gamma^{h}\left(r^{h}\left(s_{t}^{h}, a_{t}^{h}\right)+\eta \mathcal{H}\left(a_{t}^{h}\right)\right)\right] \end{aligned} πh∗​=πhargmax​t=0∑Th​Es0h​∼β0​,st+1h​∼ph,ath​∼πh​[γhr~h(sth​,ath​)]=πhargmax​t=0∑Th​Es0h​,st+1h​,ath​​[γh(rh(sth​,ath​)+ηH(ath​))]​
其中,β0\beta_{0}β0​ 是初始高层状态分布,st+1h∼phs_{t+1}^{h} \sim p^{h}st+1h​∼ph 是 st+1h∼ph(⋅∣sth,ath)s_{t+1}^{h} \sim p^{h}\left(\cdot \mid s_{t}^{h}, a_{t}^{h}\right)st+1h​∼ph(⋅∣sth​,ath​) 的缩写,ath∼πha_{t}^{h} \sim \pi^{h}ath​∼πh 是 ath∼πh(⋅∣sth)a_{t}^{h} \sim \pi^{h}\left(\cdot \mid s_{t}^{h}\right)ath​∼πh(⋅∣sth​) 的缩写,η\etaη 确定熵项与奖励的相对重要性,H(ath)\mathcal{H}\left(a_{t}^{h}\right)H(ath​) 是投资组合权重的熵,计算公式为 H(ath)=H(wt+1h)=−∑iwi,t+1hlog⁡wi,t+1h\mathcal{H}\left(a_{t}^{h}\right)=\mathcal{H}\left(\boldsymbol{w}_{\boldsymbol{t + 1}}^{h}\right)=-\sum_{i} w_{i, t+1}^{h} \log w_{i, t+1}^{h}H(ath​)=H(wt+1h​)=−∑i​wi,t+1h​logwi,t+1h​,r~h\tilde{r}^{h}r~h 是高层奖励和熵奖励之和的缩写。

对于所有的 sh∈Sh,ah∈Ahs^{h} \in \mathcal{S}^{h}, a^{h} \in \mathcal{A}^{h}sh∈Sh,ah∈Ah,本文使用 softmax 策略作为高层策略 πh(sh,ah;θ)=eθT⋅ϕ(sh,ah)∑beθT⋅ϕ(sh,b)\pi^{h}\left(s^{h}, a^{h} ; \theta\right)=\frac{e^{\theta^{T} \cdot \phi\left(s^{h}, a^{h}\right)}}{\sum_{b} e^{\theta^{T} \cdot \phi\left(s^{h}, b\right)}}πh(sh,ah;θ)=∑b​eθT⋅ϕ(sh,b)eθT⋅ϕ(sh,ah)​。令 J(πθh)=Eπh[∑t=0Tγttt]J\left(\pi_{\theta}^{h}\right)=\mathbb{E}_{\pi^{h}}\left[\sum_{t=0}^{T} \gamma^{t} t_{t}\right]J(πθh​)=Eπh​[∑t=0T​γttt​] 表示策略的有限视野的期望折扣回报。根据策略梯度定理,本文计算梯度 ∇θJ(πθh)=Eτ∼πθ[∑t=0T∇θlog⁡πθh(at∣st)Gt]\nabla_{\theta} J\left(\pi_{\theta}^{h}\right)=\underset{\tau \sim \pi_{\theta}}{\mathrm{E}}\left[\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}^{h}\left(a_{t} \mid s_{t}\right) G_{t}\right]∇θ​J(πθh​)=τ∼πθ​E​[∑t=0T​∇θ​logπθh​(at​∣st​)Gt​],其中 Gt=∑j=0T−tγjr~hG_{t}=\sum_{j=0}^{T-t} \gamma^{j} \tilde{r}^{h}Gt​=∑j=0T−t​γjr~h。

因此,我们通过 θ←θ+αγt∇θlog⁡πθh(at∣st)Gt\theta \leftarrow \theta+\alpha \gamma^{t} \nabla_{\theta} \log \pi_{\theta}^{h}\left(a_{t} \mid s_{t}\right) G_{t}θ←θ+αγt∇θ​logπθh​(at​∣st​)Gt​ 更新高级策略参数。

2.5.3 带有动作分支的低层 RL

低层任务被认为是具有两个动作维度的离散控制问题:价格数量。作者使用分支 Dueling Q-Network。形式上,本文有两个动作维度,∣pl∣=np\left|p^{l}\right|=n_{p}∣∣​pl∣∣​=np​ 为离散的相对价格水平的维度,∣ql∣=nq\left|q^{l}\right|=n_{q}∣∣​ql∣∣​=nq​ 离散的数量比例的维度。在状态 sl∈Sls^l ∈ S^lsl∈Sl 的动作价值 QdlQ^l_dQdl​ 和动作 adl∈Adla^l_d ∈ A^l_dadl​∈Adl​ 用公共状态值 Vl(s)V^l(s)Vl(s) 和相应的(状态相关的)动作优势 Adv⁡dl(s,adl)\operatorname{Adv}_{d}^{l}\left(s, a_{d}^{l}\right)Advdl​(s,adl​) 表示:

for d∈{p,q}:d \in\{p, q\}:d∈{p,q}:
Qdl(sl,adl)=V(sl)+(Adv⁡d(sl,adl)−1n∑adl′∈AdAdv⁡d(sl,adl′))Q_{d}^{l}\left(s^{l}, a_{d}^{l}\right)=V\left(s^{l}\right)+\left(\operatorname{Adv}_{d}\left(s^{l}, a_{d}^{l}\right)-\frac{1}{n} \sum_{a_{d}^{l \prime} \in \mathcal{A}_{d}} \operatorname{Adv}_{d}\left(s^{l}, a_{d}^{l^{\prime}}\right)\right) Qdl​(sl,adl​)=V(sl)+⎝⎛​Advd​(sl,adl​)−n1​adl′​∈Ad​∑​Advd​(sl,adl′​)⎠⎞​
本文基于 one-step 的 TD 算法训练 Q-value function:
yd=r+γQd−(sl′,arg⁡max⁡ad′∈AdQd(sl′,adl′)),d∈{p,q}L=E(s,a,r,s′)∼D[1N∑d∈{P,I}(yd−Qd(sl,adl))2]\begin{gathered} y_{d}=r+\gamma Q_{d}^{-}\left(s^{l^{\prime}}, \underset{a_{d}^{\prime} \in \mathcal{A}_{d}}{\arg \max } Q_{d}\left(s^{l^{\prime}}, a_{d}^{l^{\prime}}\right)\right), d \in\{p, q\} \\ L=\mathbb{E}_{\left(s, a, r, s^{\prime}\right) \sim \mathcal{D}}\left[\frac{1}{N} \sum_{d \in\{P, I\}}\left(y_{d}-Q_{d}\left(s^{l}, a_{d}^{l}\right)\right)^{2}\right] \end{gathered} yd​=r+γQd−​(sl′,ad′​∈Ad​argmax​Qd​(sl′,adl′​)),d∈{p,q}L=E(s,a,r,s′)∼D​⎣⎡​N1​d∈{P,I}∑​(yd​−Qd​(sl,adl​))2⎦⎤​​
其中 D\mathcal{D}D 为优先经验重放缓冲区,aaa 为联合动作元组 ,(pl,ql),(p^l,q^l),(pl,ql)。

2.6 Training Scheme

价格信息、多因子、限价单等财务数据复杂、高维。为了更有效地使用可用数据,作者利用了 预训练方案迭代训练

2.6.1 Pre-training

在这项工作中,作者在 限价订单簿环境中 预训练了 低层策略。具体来说,作者首先预先选择了几种资产作为预训练的数据源。通过单独训练每个资产的相应买入/卖出策略,为这些资产导出多个低级策略参数。在分层强化学习的一般设置中,高层策略和低层策略仅在单个环境中一起训练。然而,这种训练方案存在数据不足的问题,因为 agent 与环境的交互由于联合训练而受到严格限制,特别是对于低级策略训练。通过引入预训练方案,可以对低级策略进行更多、更多样化的交互训练,从而具有更好的泛化性和鲁棒性

2.6.2 Iterative training

作者在低层预训练中 重复增加私有状态,将目标数量从 (0,0)(0,0)(0,0) 遍历到最大目标数量 qmaxq_{max}qmax​ 和剩余时间从 000 到最大交易时间窗口 Tmax′T^{\prime}_{max}Tmax′​。这样,低层策略使用增强的私有状态进行训练,因此可以泛化高层策略分配的不同子任务。

3 有哪些关键实验结果?

3.1 Dataset setting and Preprosessing

实验在美国股市和中国股市的股票数据上进行。在不同的股票市场上评估算法,以证明其稳健性和实用性。作者选择交易量大的股票,这样作者的交易行为就不会影响市场价格

作者分别从 道琼斯工业平均指数(DJIA)上证50指数 中选择 23 只股票用于美国股市和中国股市。此外,我们引入 1 种现金资产作为两个市场的无风险选择。

对于高层的配置,作者将 持有期设置为 5 天,将 交易期设置为 1 天。高层状态的时间窗口设置为 10 天。作者对股票数据进行规范化,以在数据预处理中为不同股票推导出一个通用的 agent。具体而言,作者将开盘价、收盘价、最高价和最低价除以期初第一天的收盘价,以避免未来信息的泄露。同样,作者使用第一天的成交量来标准化成交量。对于周末和节假日发生的缺失数据,作者用前一天的收盘价填充空价格数据并设置零成交量以保持时间序列的一致性。对于固定佣金率,我们将两个市场的佣金率都设置为 0.2%

对于低层的配置,作者将 时间间隔设置为 30 秒。低级状态的时间窗口设置为 一天的开放时间。同样,作者还通过除以期初的第一个价格以及交易量来标准化限价订单簿中的价格。对于周末和节假日发生的缺失数据,我们用之前的价格填充空的价格数据并设置零数量,以保持时间序列的一致性。

3.2 Baseline and Metrics

Baselines:

  1. Uniform Constant Rebalanced Portfolios (UCRP):每天在一组资产中保持相同的财富分配;
  2. On-Line Moving Average Reversion (OLMAR):利用移动平均回归来克服单期均值回归假设的限制;
  3. Weighted Moving Average Mean Reversion (WMAMR):通过使用相等的加权移动平均线利用历史价格信息,然后通过在线学习技术学习投资组合;
  4. Follow the Winner (Winner):始终关注表现出色的资产并将所有投资组合权重转移给它;
  5. Follow the Loser (Loser):将投资组合权重从表现优异的资产转移到表现不佳的资产;
  6. Deep Portfolio Management(DPM):基于相同独立评估器拓扑的集成。DPM 使用资产价格作为状态,并使用深度神经网络 (DNN) 近似策略函数训练代理,以评估每种资产在近期未来的潜在增长,并采用最先进的 PM 强化学习算法。

此外,引入上证50指数和道琼斯工业平均指数(DJIA)作为业绩比较的基准,以证明这些投资组合策略是否能够跑赢市场。

Metrics:

使用以下绩效指标进行评估:年回报率 (ARR)、年化夏普比率 (ASR)、最大回撤 (MDD) 和下行偏差比率 (DDR)。

3.3 Backtest Results

3.4 Ablation Study

我们主要回答两个问题:

  1. 为什么佣金不足以占实际交易成本?
  2. 熵奖励有效吗?

Commission Fee is Not Enough. 作者展示了在中国市场测试的每个交易周期的交易成本。x 轴是测试中每个交易周期的指数,y 轴是成本。注意,负的交易成本意味着在交易期间获得利润。当提交的订单以比目标价格更好的价格完成时,就会发生负交易成本。我们可以看到,在大多数交易中,佣金只占总交易成本的一小部分,尤其是在大宗交易中。

Entropy Bonus. 随着熵奖励中的 ηηη 越高,agent 会倾向于给出 更多样化的投资组合。当 ηηη 很小时,agent 更倾向于只持有少量股票。因此,作者可以通过控制 ηηη 在 风险控制和利润之间取得平衡。η=0.05η = 0.05η=0.05 的 HRPM 达到最大 ARR。 请注意,η=0.1η = 0.1η=0.1 的 HRPM 比其他 HRPM 具有最低的 MDD。通过增加熵的影响,我们可以获得相对于风险更多的利润。

【文献阅读】Commission Fee is not Enough: A Hierarchical Reinforced Framework for Portfolio Management相关推荐

  1. 【文献阅读】MSPM: A multi-agent reinforcement learning-based system for financial portfolio management

    MSPM: A modularized and scalable multi-agent reinforcement learning-based system for financial portf ...

  2. 四位科研牛人介绍的文献阅读经验

     每天保持读至少2-3 篇的文献的习惯.读文献有不同的读法,但最重要的自己总结概括这篇文献到底说了什么,否则就是白读,读的时候好像什么都明白,一合上就什么都不知道,这是读文献的大忌,既浪费时间,最 ...

  3. 最大熵模型(Maximum Entropy Model)文献阅读指南

    最大熵模型(Maximum Entropy Model)是一种机器学习方法,在自然语言处理的许多领域(如词性标注.中文分词.句子边界识别.浅层句法分析及文本分类等)都有比较好的应用效果.张乐博士的最大 ...

  4. 条件随机场(Conditional random fields,CRFs)文献阅读指南

    与最大熵模型相似,条件随机场(Conditional random fields,CRFs)是一种机器学习模型,在自然语言处理的许多领域(如词性标注.中文分词.命名实体识别等)都有比较好的应用效果.条 ...

  5. 文献阅读疑问(202010)

    学习笔记,仅供参考 文章目录 文献阅读疑问 Unsupervised Deep Embedding for Clustering Analysis 文献阅读疑问 Unsupervised Deep E ...

  6. 那些文献阅读能力爆表的科研学子,都在偷偷做这件事……

    对于广大科研学子来说,阅读文献这件事可谓是贯穿整个学术生涯,因为文献是了解现在所学专业的领域切入点,且做科研遇到难题时还可以在文献中寻找答案. 以及科研实验完毕后,若是准备发表论文,那么还得再看看文献 ...

  7. 知云文献翻译_工具推荐 | 知云学术翻译,让外文文献阅读不再难

    点击上方蓝字"Edtshare"一起玩耍 想必大家都经历过阅读外文文献的痛苦吧:专有名词不会.嵌套从句不懂.好不容易单词和句子都看懂了,连起来在说啥又一头雾水.笔者曾经深受其苦,所 ...

  8. 文献阅读005【精读】

    Markov Weight Fields for Face Sketch Synthesis 相关知识点:马尔可夫随机场(MRF) 1. Introduction 画像合成方法:MRF(Markov ...

  9. 知云文献翻译打不开_比有道更好用的英文文献阅读翻译神器免费啦

    知云文献翻译软件免费啦!您扫下面二维码就就可以得到,不需转发朋友圈.不配一款神器,科研哪来效率!有了这款神器,科研都变得更简单! 用它直接打开英文pdf文献,随便选中一段话,右侧立即给出翻译,不再需要 ...

最新文章

  1. 常见Oracle HINT的用法
  2. python数据科学导论 中南_Python数据科学导论
  3. Python paho-mqtt消息队列
  4. mysql groupby 拼接_mysql分组并多行拼接--group_concat和groupby的使用
  5. 为iOS 项目引入其它开发包 的方法
  6. 两本关于sharepoint 2010的书值得参考
  7. CSS3特殊图形制作
  8. C++打印九九乘法表
  9. 计算机职业规划范文300字,【职业规划300字范文】_职业规划范文300字
  10. Visual Paradigm简单教程(2):绘制序列图
  11. 微信企业号开发七:JSAPI模式
  12. domino服务器库文件,Domino 服务器设置程序 涉及的文件
  13. Xgboost简单原理推导(手写图片)
  14. mysql跳过安全_MYSQL安装之最新版MySQL手把手安装教程
  15. MAB建模规范-Naming Conventions命名规范
  16. 数组索引必须为正整数或逻辑值。
  17. ICON艾肯VST声卡驱动官方原版新款ProDriver-4.0.1全系列下载安装教程
  18. 转专业计算机常见的名词解释,迎鲜肉第9弹|大学生活必知名词解释
  19. 计算机识别不了usb设备,电脑识别不了USB设备怎么办
  20. 学习Python中turtle模块的基本用法(3:学习绘图示例源码)

热门文章

  1. 计算机课程教改论文,关于计算机基础课程教学改革论文(2)
  2. Replication(上):常见的复制模型分布式系统的挑战
  3. 通过点击按钮打开新的窗口
  4. 国内首个开源网络流量可视化分析平台 -- 流影
  5. 什么是用户感?看看这4个产品经理的感性设计
  6. 计算机科学与技术3d仿真设计,三维仿真
  7. python 离群值_python:删除离群值操作(每一行为一类数据)
  8. Flutter Candies 一桶天下,一个小例子彻底搞懂Android的MVP模式到底是什么
  9. Android调用高德地图直接导航的简单实例
  10. 采用FFmpeg从视频中提取音频(声音)保存为mp3文件