matlab有趣的程序和命令投资理财理财投资

聊一聊 Matlab 如何分析投资组合(1)

2017-09-29  本文已影响133人  曹志昱

Portofolio 在金融中的任何领域都是非常重要的一环。从最直接的金融投资领域来看,如何构造最优的投资组合使得 risk 在人们的可接受范围之内,又能够获得可观的expected value 是一个一直都在被研究的问题。从金融风险管理的角度出发,通过已有的金融资产组合来计算对应的risk,如计算对应的 VAR(在险价值)和 尾部相关系数,来判断这部分金融资产在未来的稳定性,从而决定是否对金融资产进行调整。从金融工程的领域来看,如何在众多的金融衍生工具中,构造出满足客户需求的金融产品,也是Portfolio的一部分。

下面我们之间进入正题,在投资组合数学模型中,我们用期望(Expected value)做为收益率的估计,用方差(Variance)来衡量资产的风险,用Co-variance来衡量两个或者多个资产间的相互影响。

我们先从最简单的线性系统出发:

假设工厂中生产A,B 两种产品,每个产品的消耗和利润和工厂的生产能力如下表所示:

                             Product A           Product B        Constraint

Labor                          9                        4                     360

Equipment                  4                        5                     200

Raw material              3                        10                   300

profit                          70                       120

现在我们通过matlab,来构造出最优组合使得工厂的利润最大化。

Matlab 在计算线性系统时,它的逻辑思路如下图所示:

Min f(x) 指所求函数的极值,下面三者都为线性系统的限制条件。

在此案例中,max 𝑝𝑟𝑜𝑓𝑖𝑡 = 70𝑥1 + 120𝑥2

限制条件为:9𝑥1 + 4𝑥2 ≤ 360

                      4𝑥1 + 5𝑥2 ≤ 200

                      3𝑥1 + 10𝑥2 ≤ 300

                       𝑥1 ≥ 0, 𝑥2≥ 0

转化为matlab 算法可知:

C=[-70; -120],因为我们需要求profit的最大值,而matlab只能求最小值,所以我们转化为负号,求出最小值之后再取绝对值。

Ax≤b 的条件中可知,A=[ 9 4;4 5;3 10], b=[360; 200; 300]

lb表示x1,x2的最小取值,up表示x1 x2 的最大值,该案例中只需要x1 x2 大于0即可

所以令lb=[0; 0].

因为不存在对于Aeq*x=Beq的限制,所以令Aeq和Beq 为空 [ ].

实际操作的Code 如图所示:

得出结果[x1, x2]=[20,24];  fval=-4280, 最大profit 即为4280.

通过画图我们可知:

黑色线条在经济学中被称为可行性边界,灰色阴影区域为可行性区域。红圈即为我们所求的[x1,x2]的组合。通常最优的投资组合就是在可行性边界上选取的,因为可行性边界的点比拥有相同的收益率的点具有更小的风险,比具有相同风险的点拥有更大的收益率。具体大家可以看看投资学相关的书籍。

Orz, 到现在为止,只是最最最初步介绍关于matlab对线性系统的计算方法和举了一个小例子,但作者已经写不动了,等过两天将分章节对matlab中的portofolio函数进行介绍。

上一篇下一篇

猜你喜欢

热点阅读