随着蒙西用户侧分时段合同电量转让交易的开展,为用户提供更多可能性的同时对交易也提出了更大的挑战,在日渐复杂的交易情景与约束中,量化策略提供了另一种高效的解决方案。通常来说如果不考虑其他因素,在给定边界条件下最小化目标函数,当预测价格和申报成交比约束给定时是可以将交易策略制定转换成线性规划问题求解的,但当考虑到更复杂的因素(例如不同申报策略下预测偏差所导致的风险等)后,问题可能会被转化成较复杂的非线性优化问题。针对非线性优化问题,本文介绍一种可行的思路作为参考。
当前交易规则下,交易策略的制定要解决的最核心问题之一便是持仓的选择。
(来源:微信公众号“兰木达电力现货”作者:马子玉)
那么该如何让计算机判断在什么时间分配多少持仓才是当下最优的决策呢?
由于目前蒙西现货市场价格整体水平较高,对用户来说通常“高持仓” 是降低用电成本的选择,而规则约束的持仓上限对持仓空间的分配提出了要求。对于单日持仓的解决方案,本文思路是转化为如下问题进行求解(x为交易申报量):
Min f(x) = a1 * 持仓损失 + a2 * 价格损失 +a3 * 风险损失
当策略选择在合适的时段 “高持仓” 时,通常会使持仓升高,而交易价格降低。我们的目标是在尽可能小幅度升高持仓损失的前提下尽量降低价格,因此把上述式中持仓损失定义当前申报策略带来的持仓增量,价格损失定义为当前申报策略带来的交易价格增量,a1与a2是相应的权重,代表持仓与价格重要程度的关系。对于风险损失的定义方式则较为自由,可以根据策略的风险偏好定义不同的计算标准。
不难发现,在给定权重a1、a2、a3的条件下,基于单日边界条件所能得到的解是唯一的,因此可以将交易策略制定转化成决策持仓损失、价格损失与所风险损失对应的权重系数问题。
由于交易结算以月为单位,因此从全月角度来看需要根据边界条件决策交易日到月末每一天的权重系数,找到最优的“权重对”组合,然后伴随交易开展,每日动态更新交易边界条件并动态寻找更新后最优“权重对”组合。
如何寻找最优的权重对组合?
通常在面对优化问题时,算法的选择取决于问题的具体特性和需求。下述是几类常见的优化算法及特性:
1.梯度下降算法(Gradient Descent):及其变种:适用于连续可微分优化问题,简单高效但可能陷入局部最优,对初始点敏感。
2.遗传算法 (Genetic Algorithm, GA):适用于非连续、非线性、多峰优化问题,全局搜索能力强,不易陷入局部最优但计算成本通常较高,收敛速度慢。
3.粒子群优化算法(Particle Swarm Optimization, PSO):适用于多峰、多维的优化问题,实现简单,全局搜索能力强,但同样易陷入局部最优,且参数调整复杂。
4.强化学习(Reinforcement Learning, RL):适用于动态优化问题,需要在环境中进行决策的场景,面对动态和复杂环境,能够学习策略,弊端是通常需要大量训练数据,训练时间长。
5.贝叶斯优化(Bayesian Optimization):适用于黑箱函数、计算昂贵的优化问题,如超参数调优,可以高效利用样本,适用于高维空间,但计算复杂度高,不适用于高噪声数据。
根据实际需求,本文选取遗传算法为例简单介绍动态寻找最优“权重对”组合的过程。主要流程如下:
1.初始化种群
生成初始种群,每个个体是一个潜在解(在本问题中每个个体包含一组可能的“权重对”,“权重对”的组数取决于交易标的日到月末之间的天数),种群大小通常表示为N,每个个体表示为Ci。初始化时,个体Ci的基因(‘权重对‘组合)值从预定义范围内随机生成。在本问题中初始种群为需要决策的n天的“权重对”以及交易方向转换日期(由于蒙西规则约束用户一旦置换入则全月后续无法置换出,因此交易方向转换的日期也是决策变量之一)。
2.适应度评估
计算每个个体的适应度值,适应度函数评估个体的质量,适应度值表示为f(Ci)。本问题中均价越低则认定个体适应越高,同时在寻找最优权重对时,若策略全月持仓超过约束限制则返回一个大的惩罚值。通常适应度更高,自然选择过程中被保留下来的概率更大,可以理解为使交易均价越低的“权重对”组合,被挑选用来进行改进更容易得到表现更优的新“权重对”组合。
3.选择操作
根据适应度值选择个体进行繁殖,适应度高的个体有更高的概率被选择。常见的选择方法有轮盘赌选择、锦标赛选择等。以轮盘赌选择方法为例,个体i被选择的概率为Pi,其中:
4.交叉操作
通过交叉(重组)两个父代个体的基因产生新的个体,交叉操作模拟自然界的遗传重组。交叉概率pc决定交叉操作的频率。常见的交叉方法有单点交叉、两点交叉、均匀交叉等,这里只介绍单点交叉方法:在两个父代个体Cp1和Cp2之间选择一个交叉点K,生成两个子代个体:
5.变异操作
随机改变个体的一部分基因,增加种群的多样性,防止过早收敛到局部最优。变异概率pm决定变异操作的频率。常见的变异方法有位翻转、随机交换、随机重置等,这里不做赘述,但需要注意的是在本问题中在变异操作时须约束变异后的“权重对“以及“转换日期”在合理的值域内。
6.生成新种群
通过选择、交叉和变异操作生成的新个体组成下一代种群(种群中的每个个体都是一组新的“权重对”组合)。新种群P(t+1)替代旧种群P(t), 新种群P(t+1)包含经过选择、交叉和变异操作生成的N个新个体。
7.终止条件
判断是否满足终止条件,如达到最大迭代次数或适应度达到阈值。若满足终止条件,算法结束;否则,返回步骤2继续迭代直至找到可接受的个体,即“权重对”组合。在得到满意“权重对”组合后,将这组权重系数代入到前文中的目标函数中,求解出最优申报策略。
总结
总体来讲,遗传算法通过模拟生物进化过程逐步逼近最优解,从数学角度来看,“选择”确保适应度高的个体有更高的繁殖概率,“交叉”和“变异”则确保种群的多样性和全局搜索能力。但弊端是计算开销大,特定的情况下很难以可观的速度收敛到可接受的结果。因此如何针对性改进选择、交叉、变异的方法以及模型参数的优化是本方案一个重要的探究方向。另外,文中提到的其他优化算法虽然本文并未详细展开,但也存在许多值得尝试的可能性。