zoukankan      html  css  js  c++  java
  • 数学建模 投资模型

    简介

    比较好的一个投资模型

    题目

    投资的收益和风险
    市场上有n种资产(s_i(i=1,2,…,n))可以选择,现用数额为M的相当大的资金作一个时期的投资。这n中资产在这一时期内购买(s_i)的平均收益率为(r_i),风险损失率为(q_i),投资越分散,总的风险越少,总体风险可用投资的(s_i)中最大的一个风险来度量。
    购买(s_i)时要付交易费,费率为(p_i),当购买额不超过给定值(u_i)时,交易费按购买(u_i)计算。另外,假定同期银行存款利率是(r_0),既无交易费又无风险((r_0=5%))。
    已知n=4时相关数据如表1.1所列。

    (s_i) (r_i/)% (q_i/)% (p_i/)% (u_i/)
    (s_1) 28 2.5 1 103
    (s_2) 21 1.5 2 198
    (s_3) 23 5.5 4.5 52
    (s_4) 25 2.6 6.5 40
    试给该公司设计一种投资组合方案,即用给定资金M,有选择购买若干资产或存银行生息,使净收益尽可能大,总体风险尽可能小。

    解答

    1.2.2 符号规定和基本假设

    1. 符号规定
      (1) (s_i)表示第i种投资项目,如股票、债券等,(i=0,1,…,n), 其中(s_0)指存入银行。
      (2) (r_i),(p_i),(q_i),分别表示(s_i)的平均收益率、交易费率、风险损失率,(i=0,1,…,n),其中(p_0=0,q_0=0)
      (3) (u_i)表示(s_i)的交易定额,(i=1,2,…,n)
      (4) (x_i)表示投资项目(s_i)的资金,(i=0,1,…,n).
      (5) a表示投资风险度。
      (6) Q表示总体收益。
    2. 基本假设
      (1) 投资数额M相当大,为了便于计算,假设M = 1。
      (2) 投资越分散,总的风险越小。
      (3) 总体风险用投资项目(s_i)中最大的一个风险来度量。
      (4) n+1中资产(s_i)是相互独立的。
      (5) 在投资的这一时期内, (r_i,p_i,q_i) 为定值,不受以外因素影响。
      (6) 净收益和总体风险只受(r_i,p_i,q_i)影响,不受其他因素干扰。
      1.2.3 模型的分析与建立
      (1) 总体风险用所投资的s_i中最大的一个分享来衡量,即
      (max⁡{q_i x_i | i=1,2,…,n}) # (q_i)表示风险损失率,(x_i)表示投入的资金
      (2) 购买(s_i (i=1,2,…,n))所付交易费是一个分段函数,即

    [ ext {交易费}=left{egin{array}{ll} p_{i} x_{i}, & x_{i}>u_{i} \ p_{i} u_{i}, & x_{i} leq u_{i} end{array} ight. ]

    // (x_i)是金额,(p_i)是交易费率 但是不清楚为啥 当金额小于(u_i)的时候,交易费是(p_i u_i) 可能是缺少生活经验吧。
    因为题目给定的定值(u_i)(单位:元)相对总投资M很少,(p_i u_i)更小,这样购买(s_i)的净收益可以简化为((r_i-p_i ) x_i)
    (3) 要使净收益尽可能大,总体风险尽可能小,总体风险尽可能小,这是一个多目标规划模型。
    目标函数为

    [left{egin{array}{l} max sum_{i=0}^{n}left(r_{i}-p_{i} ight) x_{i} \ min left{max _{1 leq i leq n}left{q_{i} x_{i} ight} ight} end{array} ight. ]

    约束条件为

    [left{sum_{i=0}^{n}left(1+p_{i} ight) x_{i}=M ight. ]

    // 注 目标函数就是 要收益最大,风险最小。
    // 注 约束条件就是 (sum(x_i+x_i p_i)=M) 就是真正投入到项目中的钱 + 交的费率 = 总投资额M
    (4) 模型简化
    在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个分线率为a, 即((q_i x_i)/M≤a(i=1,2,…,n)),可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。
    模型一 固定风险水平,优化收益
    $$max sum_{i=0}^{n}left(r_{i}-p_{i} ight) x_{i}$$

    [ ext {s.t.}left{egin{aligned} frac{q_{i} x_{i}}{M} & leq a, i=1,2, ldots, n \ sum_{i=0}^{n}left(1+p_{i} ight) x_{i} &=M, x_{i} geq 0, i=0,1, ldots, n end{aligned} ight.]

    1.2.4 模型一的求解

    [min f=[-0.05,-0.27,-0.19,-0.185,-0.185] *left[x_{0}, x_{1}, x_{2}, x_{3}, x_{4} ight]^{T} ]

    [ ext { s.t. }left{egin{array}{c} x_{0}+1.01 x_{1}+1.02 x_{2}+1.045 x_{3}+1.065 x_{4}=1 \ 0.025 x_{1} leq a \ 0.015 x_{2} leq a \ 0.055 x_{3} leq a \ 0.026 x_{4} leq a \ x i geq 0, i=0,1, ldots, 4 end{array} ight. ]

    // 注 求所投资收益的最大值也就是求最小负收益
    // 注 (0.05 * x_0) 就是存银行的收益,0.28 – 0.01 = 0.27 也就是投资(x_1)的收益率
    // 注 (0.025x_1) 怎么来的呢?(2.5% x_1) 就是其风险,风险要小于一个给定值,在这个约束下求得的最大的值。
    1.2.5 结果分析
    风险 a 与 收益 Q之间的关系如图1.1所示。从图1.1可以看出:
    风险大,收益也大。
    当投资越分散时,投资者承担的风险越小,这与题意一致。冒险的投资者会出现集中投资的情况,饱受的投资者则尽量分散投资。
    在a=0.006附近有一个转折点,在这一点左边,风险增加很少时,利润增长很快;在这一点右边,风险增加很大时,利润增长很缓慢。所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的转折点作为最优投资组合,大约是a=0.6%,Q=20%,所对应的投资方案为
    风险度(a=0.006),收益(Q=0.2019,x_0 =0, x_1 = 0.24, x_2=0.4,x_3 = 0.1091,x_4=0.2212)
    1.2.6 代码附录

    clc,clear
    a = 0;
    hold on; % hold on point in printer
    while a < 0.05
        c = [-0.05, -0.27, -0.19, -0.185, -0.185];
        A = [zeros(4,1), diag([0.025, 0.015, 0.055, 0.026])];
        b = a * ones(4, 1);
        Aeq = [1, 1.01, 1.02, 1.045, 1.065];
        beq = 1;
        LB = zeros(5,1);
        [x, Q] = linprog(c,A,b,Aeq, beq, LB);
        Q = -Q;
        plot(a, Q, '*k');
        a = a + 0.001;
    end
    xlabel('a'),ylabel('Q')
    

    // linprog注
    // LB = zeros(5, 1) 表示 x_0, x_1, x_2, x_3, x_4 都是大于等于0的值
    // A =

         0    0.0250         0         0         0
         0         0    0.0150         0         0
         0         0         0    0.0550         0
         0         0         0         0    0.0260
    

    // ones(4,1)
    ans =

     1
     1
     1
     1
    

    // A, b 表示 AX≤b 也就是那些个不等式 也就是风险要小于一个给定的值
    // Aeq beq 应该是等式 x_0+1.01x_1+1.02x_2+1.045x_3+1.065x_4=1
    // c 表示 cX 求最小值 linprog 应该默认求的是最小值。

    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    Android布局控件
    XAMPP里tomcat启动报错:Make sure you have Java JDK or JRE installed and the required ports are free
    poj 北京大学 2014研究生推免上机考试(校内)
    2014北大计算机学科保研直博夏令营上机poj考试
    《C++Primer》第四版学习笔记--持续更新中
    poj1986:Distance Queries
    poj2533:最长上升子序列
    poj1062:昂贵的聘礼
    黑书贪心例题之钓鱼 poj1042:Gone Fishing
    转:最小没出现的整数
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/13391613.html
Copyright © 2011-2022 走看看