计算机系统应用  2019, Vol. 28 Issue (2): 171-176   PDF    
基于天牛须搜索的粒子群优化算法求解投资组合问题
陈婷婷1, 殷贺2, 江红莉2, 王露2     
1. 江苏大学 理学院, 镇江 212013;
2. 江苏大学 财经学院, 镇江 212013
摘要:粒子群算法(PSO)作为一种群智能算法, 有效提高了投资组合模型的实用性, 但存在搜索精度较低和易陷入局部最优的缺陷. 为克服其缺点, 本文提出基于天牛须搜索(BAS)的粒子群优化算法(简称BSO), 并将其应用到包含完整费用的投资组合模型中. 在基于天牛须搜索的优化算法中(BSO), 每个粒子的更新规则源自BAS, 在每次迭代中都有自己对环境空间的判断, 而不仅依赖于PSO中历史最佳解决方案和粒子个体的当前全局最优解, 从而减少迭代次数、提高搜索速度和精度. 实证结果表明算法更具稳定性和有效性.
关键词: 天牛须搜索(BAS)    粒子群算法(PSO)    投资组合模型    
Particle Swarm Optimization Algorithm Based on Beetle Antennae Search for Solving Portfolio Problem
CHEN Ting-Ting1, YIN He2, JIANG Hong-Li2, WANG Lu2     
1. School of Science, Jiangsu University, Zhenjiang 212013, China;
2. School of Finance & Economics, Jiangsu University, Zhenjiang 212013, China
Foundation item: National Natural Science Foundation of China (71671037)
Abstract: Particle Swarm Optimization (PSO), as a group intelligence algorithm, effectively improves the practicability of the portfolio model, but it has the disadvantages of low search accuracy and easy to fall into local optimum. In order to overcome its shortcomings, this study proposes a particle swarm optimization algorithm based on the Beetle Antennae Search (Abbreviated as BAS), and applies it to the portfolio model with full cost. In the Optimization algorithm based on BAS (BSO), the update rule of each particle is derived from BAS. In each iteration, it has its own judgment on the environment space, and not only depends on the historical best solution in the PSO and the current global optimal solution of the particle individual, thereby reducing the number of iterations, improving search speed and accuracy. The empirical results show that the algorithm is more stable and effective.
Key words: Beetle Antennae Search (BAS)     Particle Swarm Optimization (PSO)     portfolio model    

1 引言

如何在充满不确定性的复杂系统中优化资本配置是投资组合的关键问题. Markowitz在1952年提出的均值-方差模型标志着投资组合理论的出现. 然而该模型没有考虑到投资实践中的一些限制, 比如买空卖空限制、投资数量、最小交易单位、交易成本等, 这严重限制了均值—方差模型在投资实践中的实用性. 考虑现实约束条件的投资组合模型虽然更贴近实际, 但模型将是一个有大量约束条件和离散变量、结构复杂的非线性规划问题, 传统的数值优化算法失效[1,2].

由于具有收敛速度快、运算简单和鲁棒性好等优点, 粒子群算法(PSO)在求解复杂的非线性优化问题中得到广泛应用[35], 但存在易陷入局部最优点, 搜索精度不高等缺点. 为平衡全局搜索和局部搜索, 刘冬华等(2013)提出基于捕食策略的粒子群算法, 通过调节限制级别对粒子群的搜索空间进行控制[6]. 吴喆珺(2014)在PSO公式中的社交部分引入社交系数, 使粒子的搜索行为受到粒子最优位置的影较大影响, 从而提高粒子群收敛速度[7]. 朱沙等(2016)利用极值优化方法增强混合算法对搜索空间的挖掘能力, 引入混沌变异算子提高粒子群的探索能力[8]. 但目前尚未有对粒子群算法中的基础和关键部分——粒子更新规则的优化研究. 天牛须搜索(BAS)算法作为2017年新提出的智能优化算法, 初步应用在微电网多目标能量管理、无线传感器网络覆盖[9], 目前在投资组合领域的应用还鲜被关注. 本文基于我国证券市场的实际环境及其特点, 建立考虑完整费用的证券投资组合模型, 在粒子群算法中引入天牛须搜索的概念, 设计基于天牛须搜索(BAS)的粒子群优化算法求解模型(简称BSO), 有效克服PSO算法的稳定性差、倾向于局部最优等问题. 文章选取9只人工智能概念股, 利用它们在2017年6月23日到2017年8月18日(9周)的周数据. 通过和基本PSO对比仿真发现, 收敛所需的迭代次数少、求解组合风险值低, 在多维约束问题中求解全局最优解更有效.

2 考虑到完整交易费用的证券投资组合模型的建立

首先设置投资组合模型参数: 总投资为T, 第i种股票的每股买入价格和收益率分别为 ${p_i}\left( {i = 1,2, \cdots ,n} \right)$ , ${y_i}\left( {i = 1,2, \cdots ,n} \right)$ . 投资组合中各支股票的投资比例用向量 $X = ({x_1},{x_2},\cdots,{x_n})$ 表示, 其中 ${X_i} = \displaystyle\frac{{100{n_i}{p_i}}}{T}$ (i = 1, 2, …, n). 无风险资产的投资比例(假设为国债)为 ${x_0}$ , 投资组合的方差-协方差矩阵为 $\sigma $ . V表示可以反映整个投资组合总风险的总方差. Markowitz的均值-方差模型的目标函数可表示为:

$\min V = X'\sigma X$ (1)

考虑到我国股票交易时有一手(100股)的最小交易单位限制, 现假设第i种股票的交易手数为 ${n_i}$ , 交易手数须为整数, 则有如下约束条件: ${n_i} \in I$ , I为非负整数 $(i = 1,2,\cdots,n)$ .

考虑到我国证券市场禁止买空和卖空行为, 只能将投资金额用于投资n种股票上或无风险资产. 同时, 交易中必然发生的交易成本(包括税收和各种交易费用)是投资者进行证券投资的重要考虑因素. 以上海证券交易所为例, 交易成本包括以下费用:

(1) 印花税. 按成交金额的1‰向卖方收取, 由券商代扣后由交易所统一代缴.

(2) 委托费. 5元/次.

(3) 证券监管费. 约按成交金额的0.23‰收取.

(4) 证券交易经手费. 按成交金融的0.0696‰收取.

(5) 佣金. 交易完成后, 投资者向券商支付交易金额3‰的费用, 最低5元起.

(6) 过户费. 交易股票后, 需支付更改证券户名的费用, 即按交易股票面值的1‰支付过户费, 因为我国面值为一股一元, 也就是按股票数量收费, 不足一元按一元收.

那么风险证券的所有交易成本是:

$C{}_i({n_i}) = {k_0} + {k_1}({n_i}) + {k_2}({n_i}) + {k_3}({n_i})$ (2)

其中,

$\left\{\begin{aligned} &{k_1}\left( {{n_i}} \right) = \max \{ 5,100{\mu _1}{n_i}{p_i}\} \\ & {k_2}\left( {{n_i}} \right) = \max \{ 1,100{\mu _2}{n_i}\} \\ & {k_3} = ({\mu _3} + {\mu _4}){\mu _i}{n_i}{p_i} \\ \end{aligned} \right.$ (3)

其中, ${C_0}$ 表示无风险资产的交易成本, ${C_i}({n_i})$ 表示投资于第i种股票且交易手数为 ${n_i}$ 时的交易成本. ${k_0} = 5$ 表示委托费, ${k_1}({n_i})$ , ${k_2}({n_i})$ , ${k_3}({n_i})$ 分别表示第i种股票交易手数为ni时的佣金、过户费、证券监管费和证券交易费, ${\mu _{\rm{1}}} = 0.3\% $ 为佣金的成本系数, ${\mu _{\rm{2}}} = 0.{\rm{1}}\% $ 为每股股票过户费的成本系数, ${\mu _3} = 0.{\rm{2996}}‰$ 为证券监管费和证券交易经手费的成本总系数.

此外, 投资组合模型中无风险投资为一年国债, 年利率为y=3.85%, 国债交易费用为交易金额的0.1%, 交易成本系数为 ${\mu _{\rm{0}}}{\rm{ = 0}}{\rm{.1\% }}$ . 则国债的交易费用是:

$C{}_0 = {\mu _0}{x_0}T$ (4)

综合上述条件, 投资组合的总交易成本如下:

$C = {C_0} + \sum\limits_{i = 1}^n {{C_i}} ({n_i})$ (5)

假设在时刻T的预期收益率为 ${Y_0}$ ,此时第i种股票的股价和收益率为 ${p_i}$ ${y_i}$ ,约束条件:

$\frac{{\displaystyle\sum\limits_{i = 1}^n {100{n_i}{p_i}{y_i}} + y{x_0}T - C}}{T} \geqslant {Y_0}$ (6)

投资组合模型及其约束条件表示如下:

$\min V = X'\sigma X$ (7)
$\left\{ \begin{array}{l} \frac{{\displaystyle\sum\limits_{i = 1}^n {100{n_i}{p_i}{y_i}} + y{x_0}T - C}}{T} \geqslant {Y_0}\\ \displaystyle\sum\limits_{i = 1}^n {100{n_i}{p_i}} + {x_0}T \leqslant T\\ {X_i} = \displaystyle\frac{{100{n_i}{p_i}}}{T}(i = 1,2,..,n)\\ \displaystyle\sum\limits_{i = 0}^n {{X_i}} = 1\\ {X_i} \geqslant 0(i = 0,1,..,n)\\ {n_i} \in I,I\text{为非整数}\\ C = {C_0} + \displaystyle\sum\limits_{i = 1}^n {{C_i}({n_i})} \end{array} \right.$ (8)
3 基于天牛须搜索的粒子群优化算法 3.1 粒子群(PSO)算法原理

基于社会行为比拟的粒子群优化算法由Eberhart博士和Kennedy博士于1995年提出[10]. 它起源于对鸟群捕食行为的研究. 基本概念是群体中的个体共享信息, 以便整个群体的运动在问题解决过程中从无序变为有序, 并最终获得问题的最佳解决方案. PSO算法包括一些极大地影响算法性能的参数, 通常被称为探索-开发权衡: 探索是在问题空间中测试各个区域以便找到最优的能力.

PSO算法通过设计无质量粒子来模拟鸟群中的鸟类. 粒子有两个属性: 速度v和位置x, 速度代表运动速度, 位置代表运动方向. 算法中个体的极值 ${P_{{\rm{best}}}}$ 是每个粒子分别在搜索空间中搜索最佳解, 然后, 粒子与整个粒子群中的其他粒子共享个体极值 ${P_{{\rm{best}}}}$ 并找到最优个体极值, 将其作为整个粒子群的当前全局最优解 ${G_{{\rm{best}}}}$ . 粒子群中的所有粒子基于其当前的个体极值 ${P_{{\rm{best}}}}$ 和整个粒子群共享的当前全局最优解 ${G_{{\rm{best}}}}$ , 调整它们自己的速度和位置变量. 图1是PSO的流程图.

3.2 天牛须搜索(BAS)算法原理

天牛须搜索(BAS)算法基于天牛的觅食原理, 是在2017年提出的一种寻找的最佳解决方案的新技术[11,12]. 当觅食时, 天牛不知道食物的具体位置, 使用两个触角来检测食物的气味并决定其自身的方向. 具体来说, 如果甲虫左侧接收的气味强于右侧, 则甲虫向左移动, 否则向右移动. 基于这个简单的原理, 它可以很容易地找到食物. 与PSO类似, BAS使用迭代方法逐步逼近最优解, 而不是了解具体公式. 在BAS算法中, 只有个体. 具体步骤如下:

图 1 PSO算法流程图

(1) 假设甲虫头随机向任何方向前进, 因此从右天线到左天线的矢量方向也必须是随机的. 因此, 对于n维空间中的优化问题, 可以生成随机向量来表示和标准化它.

$\vec b = \frac{{rands(k,1)}}{{\left| {rands(k,1)} \right|}}$ (9)

其中, k是空间维度, $rands()$ 是随机函数.

(2) 左右天线之间的关系可表示为:

${x_l} - {x_r} = {d_0} \cdot dir$ (10)

${x_l}$ , ${x_r}$ 可以用质心表示如下:

$\left\{\begin{gathered} {x_l} = x + {d_0} \cdot dir/2 \\ {x_r} = x - {d_0} \cdot dir/2 \\ \end{gathered} \right.$ (11)

其中, ${x_l}$ 代表搜索区域的左侧, ${x_r}$ 代表右侧.

(3) 确定左右触角的气味强度, 用 $f({x_l})$ $f({x_r})$ 代替左右位置, $f(x)$ 是适应度函数.

(4) 为了制定检测行为指南, 本文进一步生成以下迭代模型, 通过考虑搜索行为并迭代更新甲虫的位置来检测气味.

${x^{t + 1}} = {x^t} - {\delta ^t}\vec bsign(f({x_{rt}}) - f({x_{lt}}))$ (12)

其中, ${x^t}$ 表示在甲虫的第t次迭代中的质心坐标, ${x_{lt}}$ 表示在第t次迭代时的左侧天线坐标, 表示在第t次迭代时的右侧天线坐标. 第t次迭代的步长是 ${\delta ^t}$ , $sign(x)$ 代表符号功能.

3.3 基于天牛须搜索的粒子群优化算法(BSO)

(1) 基于天牛须搜索的粒子群优化算法(BSO)原理

BAS算法仅针对个体, 不考虑群体之间的连接. PSO侧重于群体对单个粒子的影响, 忽略了粒子在搜索过程中自己的判断. 因此, 本文将BAS和PSO模型集成在一起, 提出基于天牛须搜索的粒子群优化算法(BSO). PSO中的每个粒子都被描述为天牛并进行搜索, 天牛的初始位置和速度的过程与标准PSO的过程相同. 然而, 在迭代过程中, 更新天牛群位置的方式不再仅仅依赖于历史最佳解决方案和天牛个体的当前全局最优解, 而是添加了天牛天线搜索的思想, 在每次迭代中都有自己对环境空间的判断. BSO中的个体将在每次迭代期间比较其左侧和右侧的适应度函数值, 并比较两者的更好的值, 其可用于更新天牛群的位置. 通过该方法构造的BSO可以很好地克服PSO算法导致的稳定性差, 倾向于局部最优等问题. 甲虫群位置的更新公式如下:

$v{b_i} = - {\delta ^t} \cdot \vec b \cdot sign(f({x_{rt}}) - f({x_{lt}}))$ (13)
$\begin{aligned} v_i^{k + 1} = & v_i^k + {c_1} \cdot rand \cdot (Pb_i^k - x_i^k) + {c_2} \cdot rand \cdot (Pg_i^k - x_i^k) \\ & + {c_3} \cdot rand \cdot v{b_1} \end{aligned} $ (14)
$x_i^{k + 1} = x_i^k + v_i^{k + 1}$ (15)

其中, $v_i^{k + 1}$ , 表示第k次迭代后的第i个粒子的速度, $x_i^{k + 1}$ 表示第k次迭代后第i个粒子的位置, $v{b_i}$ 表示BSO生成的更新率, ${c_3}$ 是学习因子, $sign()$ 是符号函数.

(2) 算法过程

1) 初始化算法参数, 设置PSO的大小为N, 学习因子为 ${c_1},{c_2},{c_3}$ , 惯性权重为W, 以及每个甲虫两个天线之间的距离为 ${d_0}$ .

2) 随机初始化位置x和速度v, 计算每个位置的适应度, 使用当前位置作为个体最优解 ${P_{{\rm{best}}}}$ , 最后通过比较得到当前的全局最优值 ${G_{{\rm{best}}}}$ .

3) 输入迭代:

① 随机化甲虫头部. 根据甲虫的位置计算每个甲虫的左侧距离 ${x_{left}}$ 和适合度 ${f_{left}}$ , 右侧距离 ${x_{right}}$ 和适合度 ${f_{right}}$ . 通过比较两者, 获得由群体中每个甲虫的左右适合度生成的速度更新规则:

$v{b_i} = - {\delta ^t} \cdot \vec b \cdot sign(f({x_{rt}}) - f({x_{lt}}))$ (16)

② 通过比较每个甲虫当前位置的适应度和, 得到个体最优解 ${P_{{\rm{best}}}}$ 和全局最优解 ${G_{{\rm{best}}}}$ , 通过当前的个体最优解和全局最优解生成速度更新规则.

③ 结合上述两种速度更新规则, 获取每种天线速度的当前更新规则:

$\begin{aligned} v_i^{k + 1} = & v_i^k + {c_1} \cdot rand \cdot (Pb_i^k - x_i^k) + {c_2} \cdot rand \cdot (Pg_i^k - x_i^k) \\ & + {c_3} \cdot rand \cdot v{b_1} \end{aligned} $ (17)

当前位置更新规则:

$x_i^{k + 1} = x_i^k + v_i^{k + 1}$ (18)

④ 更新的学习因素和惯性权重分别为 ${c_1},{c_2},{c_3},w$ , 更新的个人最优解决方案和全局最优解决方案 ${P_{{\rm{best}}}}$ , ${G_{{\rm{best}}}}$ .

⑤ 完成迭代后, 可得到全局最优解 ${G_{{\rm{best}}}}$ , 以及与之对应的最优解位置 $f({G_{{\rm{best}}}})$ .

具体算法过程如表1所示.

表 1 BSO算法过程

4 实证分析

为了测试BSO算法是否更优于解决投资组合问题, 本文将BSO算法与标准PSO算法进行了比较, 即将两者在求解投资组合时所获得的风险值与需要的迭代次数进行了对比.

4.1 数据来源和索引选择

为了测试BSO对人工智能投资组合模型的结果, 本文选择了9只人工智能概念股, 并获取股票从2017年6月23日到2017年8月18日(9周)的周回报率. 计算出协方差矩阵如表2, 可以用来衡量九种股票的风险. 收益率和股票报价分别选择周收益率和价格近似于9周收益率和平均价格, 如表2所示.

表 2 所选股票的协方差矩阵

同时, 无风险资产为一年期国债(收益率为3.85%), 假设总共有100万资产可用于投资, 并且在投资前没有购买任何证券.

4.2 参数设置

文章以交易手数向量作为粒子群和天牛群的位置变量, 股票的数目为变量空间的维度数目, 因此模型的空间维度数为9. PSO和BSO算法设置的粒子数和天牛数都为40, 粒子群设置的迭代的次数为8000次, 天牛群设置的迭代次数为4000次. PSO算法的学习因子设置为 ${c_1} = 0.5$ , ${c_2} = 2$ ; BSO算法使用的学习因子为 ${c_1} = 0.5$ , ${c_2} = 2$ , ${c_3} = 3$ ; 两种算法的惯性权重相同, 都设置为 $w = 0.9$ . 两种学习因素都是随时间变化的, 并采用惩罚法来处理约束条件.

4.3 实验结果

为验证算法的性能, 将总股资T设为100万, 股价为 ${p_i}$ 、收益率 ${y_i}$ 设置为9只人工概念股的平均价格与周收益率(见表3). PSO和BSO参数比较见表4. 将预期投资组合回报率分别设置为0.06、0.08和0.10. 算法确定投资组合中各种股票的投资比例 ${x_i}$ 及投资于无风险资产的投资比例 ${x_0}$ , 如表5所示. 无风险资产的收益率为3.85%, 将表2确定的协方差矩阵, 表5确定的投资比例向量代入目标函数(7)及约束条件(8), 计算相应的风险值, 结果见表5.

表 3 所选股票的周收益率和价格

表 4 PSO和BSO算法参数的比较

表 5 所选股票投资组合的投资比例

表5的结果可以看出, 对于不同的预期收益率, BSO计算的风险值低于PSO. 也就是说, BSO可以在相同的预期回报率下获得相对更好的结果. 这表明BSO算法具有更强的全局搜索能力, 并且该算法更容易找到全局最优解. 另一方面, 当预期收益率增加时, 两种算法获得的风险值增加, 无风险资产的投资比例显著下降, 高收益股票的风险值显著上升. 可以看出, 本文构建的投资组合模型符合实际市场条件. 在迭代时间上, PSO的迭代时间为60 s, BSO的迭代时间为40 s, BSO的迭代时间更短, 更具优势.

图2图3显示了两种算法的收敛性. 从算法收敛的角度来看, PSO算法大约有3000次迭代收敛, 而BSO算法大约只有1500次. 可以看出, 与标准PSO相比, 在引入天牛须搜索概念后, BSO算法每个粒子的更新方法不再仅依赖于自身的历史最优解和全局最优解, 在每次迭代期间增添粒子自己的独立判断, 这使得粒子的迭代方法更灵活, 更智能, 使得收敛所需的迭代次数更少, 结果更好.

图 2 PSO算法收敛曲线

图 3 BSO算法收敛曲线

4.4 总结

本文针对标准粒子群容易陷入局部最优和搜索精度不高的缺点, 在粒子群算法中引入了天牛须搜索概念, 提出基于甲壳虫触角搜索(BAS)的粒子群优化算法, 即BSO算法, 并将其应用在考虑现实约束条件、包含完整费用的投资组合模型求解中. 在迭代过程中, 每个粒子的更新规则源自BAS, 更新粒子群位置的方式不再仅仅依赖于历史最佳解决方案和粒子个体的当前全局最优解, 而是增添粒子在每次迭代中对环境空间的自身判断. 经实证分析, 对于不同的预期收益率, BSO计算的风险值低于PSO, 算法收敛所需的迭代次数远少于PSO. 并且, 从迭代时间来看, BSO所需时间仅为PSO 的2/3. BSO显示出比标准PSO更强的全局搜索能力, 在求解多维约束问题时寻找全局最优解稳定性和有效性更佳.

参考文献
[1]
Khairalla M, Ning X, Al-Jallad N. Modelling and optimisation of effective hybridisation model for time-series data forecasting. The Journal of Engineering, 2018, 2018(2): 117-122. DOI:10.1049/joe.2017.0337
[2]
Syahputra R, Wiyagi RO, Suripto S, et al. A novel fuzzy approach for multi-objective optimization of distribution network configuration in complex system. International Journal of Applied Engineering Research, 2018, 13(2): 1120-1127.
[3]
陈炜, 张润彤, 杨玲. 基于改进粒子群算法的投资组合选择模型. 计算机科学, 2009, 36(1): 146-147, 204. DOI:10.3969/j.issn.1002-137X.2009.01.035
[4]
刘晓峰, 陈通, 张连营. 基于微粒群算法的最佳证券投资组合研究. 系统管理学报, 2008, 17(2): 221-224, 234.
[5]
杨建辉, 江文婷. 基于PSO的考虑完整费用的证券组合优化研究. 计算机应用研究, 2010, 27(9): 3364-3367. DOI:10.3969/j.issn.1001-3695.2010.09.043
[6]
刘冬华, 甘若迅, 樊锁海, 等. 基于捕食策略的粒子群算法求解投资组合问题. 计算机工程与应用, 2013, 49(6): 253-256, 261. DOI:10.3778/j.issn.1002-8331.1111-0310
[7]
吴喆珺. 改进的PSO算法及其在证券组合投资中的应用. 武汉职业技术学院学报, 2014, 13(1): 36-41, 69.
[8]
朱沙, 陈臣. 一种求解基数约束投资组合优化的混合粒子群算法. 统计与决策, 2016(10): 64-67.
[9]
Zhu ZY, Zhang ZY, Man WS, et al. A new beetle antennae search algorithm for multi-objective energy management in microgrid. 2018 13th IEEE Conference on Industrial Electronics and Applications (ICIEA). Wuhan, China. 2018. 1599–1603.
[10]
Eberhart R, Kennedy J. A new optimizer using particle swarm theory. Proceedings of the Sixth International Symposium on Micro Machine and Human Science. Nagoya, Japan, Japan. 1995. 39–43.
[11]
Jiang XY, Li S. BAS: Beetle antennae search algorithm for optimization problems. arXiv:1710.10724, 2017.
[12]
Wang JY, Chen HX. BSAS: beetle swarm antennae search algorithm for optimization problems. arXiv:1807.10470, 2018.