美文网首页matlab有趣的程序和命令投资理财理财投资
聊一聊 Matlab 如何分析投资组合(1)

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

作者: 曹志昱 | 来源:发表于2017-09-29 09:11 被阅读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函数进行介绍。

    相关文章

      网友评论

      本文标题:聊一聊 Matlab 如何分析投资组合(1)

      本文链接:https://www.haomeiwen.com/subject/ypybextx.html