数学建模社区-数学中国

标题: 投资组合问题 [打印本页]

作者: 浅夏110    时间: 2020-6-16 10:14
标题: 投资组合问题
基本的投资组合模型
1 P% A/ T& I' p  O例5  美国某三种股票( A ,B , C)12年(1943-1954)的价格(已经包括了分红在内)每年的增长情况如表6所示(表中还给出了相应年份的500种股票的价格指数 的增长情况)。例如,表中第一个数据1.300的含义是股票 A在1943年的年末价值是 其年初价值的1.300倍,即收益为30%,其余数据的含义依此类推。假设你在1955年 时有一笔资金准备投资这三种股票,并期望年收益率至少达到15%,那么你应当如何 投资?当期望的年收益率变化时,投资组合和相应的风险如何变化? % a8 l; M- {8 h$ b" l
$ f& ?) U0 Y. v; c
6 X$ R' m. e$ I0 S. R- B

8 ^3 ~& j# P+ \  w; H2 T) ?5 [# d6 J) k/ N. y
9 V0 a5 a$ W2 Y9 Z) F+ x
(1)问题分析
9 {) c) N% X& L- [2 u, V2 n
9 U3 g' t9 i6 m% A) Q4 v0 g/ ?7 Z本例的问题称为投资组合(portfolio)问题,早在1952年Markowitz就给出了这个模型的基本框架,而且这个模型后来又得到了不断的研究和改进。一般来说,人 们投资股票时的收益是不确定的,因此是一个随机变量,所以除了考虑收益的期望值外, 还应当考虑风险。风险用什么衡量?Markowitz建议,风险可以用收益的方差(或标 准差)来进行衡量:方差越大,则认为风险越大;方差越小,则认为风险越小。在一定 的假设下,用收益的方差(或标准差)来衡量风险确实是合适的。为此,我们先对表6 中给出的数据计算出三种股票收益的均值和方差(包括协方差)备用。  c( l0 d" \8 ^1 A
* p1 R1 x7 Z  w4 l9 I  F6 [: x
一种股票收益的均值衡量的是这种股票的平均收益状况,而收益的方差衡量的是这 种股票收益的波动幅度,方差越大则波动越大(收益越不稳定)。两种股票收益的协方 差表示的则是它们之间的相关程度:- j! |9 \5 ~3 k1 C( X. r' V) V: Y% m
3 g; K5 E8 p1 h1 q
i)协方差为0时两者不相关。
& J5 Q/ y0 e& l; k2 {  Q
: g* _" L* I- ~# fii)协方差为正数表示两者正相关,协方差越大则正相关性越强(越有可能一赚 皆赚,一赔俱赔)。6 d) ^% T: e4 l8 D( t2 f! V8 `
5 ?  l7 B& D+ U
iii)协方差为负数表示两者负相关,绝对值越大则负相关性越强(越有可能一个 赚,另一个赔)。
! @5 J- |; t: j" H
( E% a' E+ T9 o: Y2 u' ~& R记股票 A , B,C  每年的收益率分别为 (注意表中的数据减去1以后才是年收益率),则    是一个随机变量。用E 和D分别表示随机变量的数学期望和方差算子,用cov表示两个随机变量的协方差(covariance),根据概率论的知 识和表6给出的数据,则可以计算出年收益率的数学期望为
9 {3 N; c* H% t9 H3 q! n3 H, f' i3 G$ k
= 0.0890833, = 0.2136667, = 0.2345833        (1)5 Z; `4 i3 v5 [+ B- T9 j- z
" c) ?" k( M  G: e# E! g
同样,可以计算股票 A ,B ,C年收益率的协方差矩阵为 . `6 p0 |0 J4 M

* i; C6 V6 g0 D+ R6 _# B) F9 ^" S: y0 L4 Q
( p3 G  Y$ r0 B$ {" f# J
计算的LINGO程序如下:  $ x; v  x7 M8 X5 Z4 }. x- h* V# i

+ X$ {& S3 `* @! s$ ]MODEL: / ]) z" t; [  s" `: \* l7 \+ e  l
Title 均值向量Mean与协方差矩阵COV;
# d+ C! Q7 V/ _5 l2 Y6 QSETS:    & h8 f, `' J& W& R
    YEAR/1..12/;    / w6 b$ h* k" b3 o
    STOCKS/ A,  B,  C/: Mean;    4 q! \' N; {- o+ L$ U: m
    link(YEAR, STOCKS): R;   
. B" A8 r9 d7 A3 M7 R5 S! \    temp/1..5/;         d5 S! _' u; A# M
    tmatrix(YEAR,temp):tm;   
1 d- o: R8 C0 x# `1 q    STST(Stocks,stocks): COV; ) ]% q( j. z3 f( k, ]( D" Y
ENDSETS
. Z* s* p/ y% n( T$ c+ `& oDATA:    ; Q9 {; b6 y' s
tm = % w) i; k; u( {, l
1943           1.300          1.225           1.149           1.258997 & Z; h' Y8 Y& M; ~) r
1944           1.103          1.290           1.260           1.197526
) Q6 ]6 G' U  F; t+ T- u1945           1.216          1.216           1.419           1.364361
4 k+ O+ n. U  E, @/ q1946           0.954          0.728           0.922           0.919287
7 @& M6 ?+ v/ W! }/ u4 a1947           0.929          1.144           1.169           1.057080
* s6 \, Q8 X+ K! p2 L1948           1.056          1.107           0.965           1.055012
; H; a4 A+ |4 C; V1949           1.038          1.321           1.133           1.187925
2 {3 \/ ]" C9 T  `8 V2 B' I1950           1.089          1.305           1.732           1.317130
: P) V% h( d, k1 \% S- ?: F1951           1.090          1.195           1.021           1.240164 * [6 \3 u! q5 K6 n" H1 ~
1952           1.083          1.390           1.131           1.183675
9 o" w( C3 G' O* E( @1953           1.035          0.928           1.006           0.990108   + X/ F/ Y  l' p, Z2 h# e6 n
1954           1.176          1.715           1.908           1.526236; # e1 ^* ?! m8 b$ b" l/ z0 H3 M& K
@text(data1.txt)=R;
1 z, q9 Z9 s& ?( J@text(data2.txt)=Mean; - X, |7 m% A5 J& o) o* Y
@text(data3.txt)=COV;
- n9 _( E4 {) V4 PENDDATA + m0 z' z' Y) m6 ?8 x5 ]- u
CALC: !计算均值向量Mean与协方差矩阵COV;
8 Y, z1 t" ^& Z( K' Y! T- G6 j& M@for(tmatrix(i,j)|j #ge#2 #and# j #le# 4:R(i,j-1)=tm(i,j)-1);   r) I# L( R% m5 V
@for(stocks(i): Mean(i) = @sum(year(j): R(j,i)) / @size(year) );  9 W. D# }5 ?6 l; \( }4 x& x
@for(stst(i,j): COV(i,j) = @sum(year(k): (R(k,i)-mean(i))*(R(k,j)-mean(j))) / (@size(year)-1) );
$ J; g* Z3 D1 L! hENDCALC 9 X% L6 t. h: f/ e# U( \! X4 X
END$ k3 @/ c) o+ ?. q7 R! S" W) j
      注意模型中计算协方差矩阵COV时,分母是样本数减去1,而不是样本数,这是常 用的计算方法,主要是为了保持这个估计的无偏性(当然,样本数较大时两者差别不太)。: C. ?$ n0 n$ s3 s( M3 D& V
(2)模型建立
$ T; m% x, y: X5 B' E9 \         用决策变量  分别表示投资人投资股票 A ,B , C 的比例。假设市场上没有其它投资渠道,且手上资金(可以不妨假设只有1个单位的资金)必须全部用于投资这 三种股票,则 + L: s5 _" m" h- Z. }0 u2 ~* l

2 D4 h; t5 E* l; B" p' T- b! T" N             ( 2  )
# t, j+ V! s0 J2 Q9 r2 z4 d' R
# ~* x: B3 V) P) {* W, q年投资收益率   也是一个随机变量。根据概率论的知识,投$ |% v9 z, D8 [3 n
资的总期望收益为          ( 3 )
( s0 @4 F1 ?8 b  Q
& ~$ z" z6 X; N$ w; t   ( 4 )
9 w+ r7 m5 q% E( S! c, I5 ~9 P- ]0 H1 `
实际的投资者可能面临许多约束条件,这里只考虑题中要求的年收益率(的数学期 望)不低于15%,即 : p1 h) S; y9 v2 }

8 B% ~/ x  O1 @8 ^             ( 5 )
! Y& X0 q- i3 n* q% C' f! Z- s; J% L) j
所以,最后的优化模型就是在约束(2)和(5)下极小化(4)。由于目标函数V 是决策变量的二次函数,而约束都是线性函数,所以这是一个二次规划问题。: j' `: J, q2 e8 F0 ~1 x7 r
) y: f7 N: t* a' L. S; L
(3)用LINGO求解模型 + F0 P# h( ^2 }' {; R
7 z. h. W% S1 B* p
编写LINGO程序如下
) ~" R( L0 }/ v$ G
6 d  S% K9 k) `# E6 w4 }1 XMODEL:
  z1 q0 q' \: B$ @7 Y* ^! JSETS:    ' o6 p  ^# q8 Z0 M, ^, N9 r7 Q
    YEAR/1..12/;   
$ @# j1 h4 P' X- E    STOCKS/ A,  B,  C/: Mean,X;    9 v; Z# `: [3 w: Z, W. j. o
    link(YEAR, STOCKS): R;   
! g7 V: l1 [5 _9 G    STST(Stocks,stocks): COV;
) F% C7 Y2 u& F7 O' p* SENDSETS   D$ `5 O& }% a7 i% g
DATA:   ?2 s0 o9 A' r8 j0 ?( c6 `
TARGET=0.15;
3 T, \2 E+ |4 }& w, G! VMean=@file(data2.txt);
/ K  p2 Z* C& f8 PCOV=@file(data3.txt);
5 \8 S: k2 h& M- `5 }ENDDATA ' M% X" }6 ~2 |! q- |( W+ P, k
[OBJ] MIN = @sum(STST(i,j): COV(i,j)*x(i)*x(j)); / a7 m! O& [, m" p) ]& q9 |
[ONE] @SUM(STOCKS: X) = 1; & _) D+ c. h+ Q  d. I
[TWO] @SUM(stocks: mean*x) >= TARGET; , h5 d' S8 C& \$ F$ C1 \7 A
END
. D' a4 t# r+ S求得投资三种股票的比例大致是: A占53%,B 占36%,C 占11%。风险(方 差)为0.02241378。$ Z* P) X6 x) T. |( Z0 }) j

  v6 k4 c" \: F/ e/ W* E(4)用MATLAB软件对模型进行参数分析
; y0 N* T6 P% U2 V- b+ `. v  K$ B" n# j% C! a, T
对实际投资人来说,可能不仅希望知道指定的期望投资回报率下的风险(回报率的方差),可能更希望知道风险随着不同的投资回报率是如何变化的,然后作出后的投 资决策。这当然可以通过在上面的模型中不断修改约束中的参数(目前为0.15)来实 现,如将0.15改为0.2345,则表示投资回报率希望达到23.45%(这几乎是可能达到的最大值了,因为这几乎是三种股票中最大的投资回报率,即股票C 的回报率)。可 以想到,这时应主要投资在股票C 上。实际求解一下,可以知道最优解中投资股票C 的 份额大约是99.6%(剩余的大约0.4%投资在股票B 上)。 目前LINGO软件还没有二次规划灵敏度分析的功能。下面我们利用MATLAB软件进 行灵敏度分析,回报率的取值区间为[0.09,0.234],变化步长为0.002。
& O, @& s0 Y% R6 i% v
1 i" t' c  {9 X; \  x编写程序 如下:
+ n9 a$ ^0 r- n' x5 E
4 L. Y  \2 u7 N4 e. Aclc,clear
" F3 |9 F) V/ p8 |4 m! R; w) pload data2.txt,load data3.txt
3 e# [0 _/ L+ d' Qh=reshape(data3,[3,3]); 9 t; _8 [- d! A. V' @
a=data2';
, S$ U; M) A& X7 @9 M2 J  V4 Ssolution=[];
# A$ e  O" f/ ltarget=0.09;
5 u+ T, I' k, C& ^% F; `( ?5 b" rhold on
: h/ h% l1 D8 x/ owhile target<0.234     
9 o5 F/ R! z1 W1 m5 [( i5 n    [x,y]=quadprog(2*h,[],-a,-target,ones(1,3),1,zeros(3,1));  7 R6 k1 }9 Y& h/ F# i! Z$ _
    plot(target,y,'*b');     
' j0 k6 r0 N) Q/ G- \8 ^    solution=[solution [target;x;y]];     / P6 B8 ~; D, G$ F
    target=target+0.002;     
- D8 {& z+ \: o0 I5 p    end
2 u0 J* t8 T' Y- M- o$ {" ]7 Y# N+ Msolution 5 P* p; G/ e/ j6 }4 E) {6 d% ~
         得到的投资回报率与风险之间的关系曲线如图3所示 。
! ?4 R: @$ V% W5 J+ g0 X; T4 v3 a! F! Q; f- A
$ m/ \: I# i/ f0 S2 L- k; S

$ U3 U) E( H: v2 o2 h从图3可以看出,投资回报率从22%附近开始,风险迅速增大。 6 H# E) H+ c/ s# n( ^0 l

' Z& [0 w0 g5 W0 o: P! H$ [6 E) e3 ^' Z8 \9 F; H  s3 ]+ [: S

# N( X/ n. q2 |+ G; g/ X- W存在无风险资产时的投资组合模型   o3 n8 C9 v* S; J$ L
例6  假设除了例5中的三种股票外,投资人还有一种无风险的投资方式,如购买国库券。假设国 库券的年收益率为5%,如何考虑例5中的问题?
6 l5 j" k- @! c: H8 _
! D0 g9 u$ k2 q1 e! @2 Y5 Y1 C" k(1)问题分析) m1 u4 H9 [7 ~

8 \" D- s& U- P! R, V其实,无风险的投资方式(如国库券、银行存款等)是有风险的投资方式(如股票)的一种特例, 所以这就意味着例5中的模型仍然是适用的。只不过无风险的投资方式的收益是固定的,所以方差(包 括它与其它投资方式的收益的协方差)都是0。2 b" y# V0 g) _& c
9 R  d& d+ |8 F
(2)问题求解
! I6 h( _* a. O
* `2 u7 W1 \+ O/ |; D假设国库券的投资方式记为D,则当希望回报率为15%时,对应的LINGO模型如下:
  t% Y0 z8 V7 p0 i( ?2 c- e1 ^  h' Z5 w+ {: V0 E
MODEL: . n4 P# H4 _3 F
Title 含有国库券的投资组合模型; , f) p6 B  D; ?7 H
SETS:    * Q8 N7 Q+ Z# s
    STOCKS1/ A,  B,  C/: mean1;    , N% B: {9 N" k' s/ M9 l
    STST1(Stocks1,stocks1): COV1;   
2 k# `! i  ?$ ^4 T4 `    STOCKS/ A,  B,  C, D/: mean,X;   
: p5 h+ w0 L5 |; r. @    STST(Stocks,stocks): COV; 5 R: M3 P# y) M0 X: i
ENDSETS ' S( S' e! S& c& T
DATA:
8 g% W6 K# ~2 g9 P/ r( zmean=0.05; ( v# W/ L4 E. B; x* W
COV=0; ! z' x8 G: D7 P! U& c
COV1=@file(data3.txt); % r2 ~" K, G/ }9 _) b
Mean1=@file(data2.txt);   ; u3 L! U! m+ I/ w; C6 B
TARGET = 0.15; ! 0.10; " J  P& V# g  v/ [6 N% {4 L
ENDDATA ! l6 ?" P+ d6 p' r' R( W2 ^3 d  B
calc: , O* [$ b4 ~# j2 w( O  |' c
@for(STOCKS(i)|i #ne# 4: mean(i)=mean1(i)); 5 V! L9 a) M/ f" q9 a
@for(STST(i,j)| i #ne# 4 #and# j #ne# 4:COV(i,j)=COV1(i,j));  , k. ^, ]7 y5 F7 [, P9 P* j( T$ i
endcalc' p: V& d9 g8 g' d! E' P# b
[OBJ] MIN = @sum(STST(i,j): COV(i,j)*x(i)*x(j));
, y: ]# F8 j/ E1 i  `* w[ONE] @SUM(STOCKS: X) = 1; : T) k& r+ ?% o8 e' w8 Z% \) J$ s
[TWO] @SUM(stocks: mean*x) >= TARGET; & S: m, g6 o$ O/ f- J9 o
END
) f& L; m: W. Z8 q7 F' E( j计算结果为,投资 A占8.7%,B 占42.9%,C 占14.3%, D (国库券)占34.1%,风险 (方差)为0.02080347。与例5中的风险(方差为0.02241378)比较,无风险资产的存 在可以使得投资风险减少。虽然国库券的收益率只有5%,比希望得到的收益率15%小很多, 但在国库券上的投资要占到34.1%,其原因就是为了减少风险。
1 B! v5 i' q# G* r  T% p# r$ L
/ I2 c1 @9 q2 V& X4 W7 Y现在,我们把上面模型中的期望收益减少到10%,即把数据段中的语句“TARGET = 0.15”改为“TARGET = 0.10”,重新求解模型。计算结果如下:' K  V' u" n7 I! Q& G
: n# `  p; w7 W6 |+ h: P
投资 A占4.3%,B 占21.4%,C 占7.2%, D (国库券)占67.1%,此时风险(方差为 0.0052)进一步下降。请特别注意:你能发现这个结果(这里不妨称为结果2)与刚才 “TARGET = 0.15”的结果(这里不妨称为结果1)有什么联系吗? 仔细观察这两个结果,可以发现:结果2中投资在有风险资产(股票 A ,B , C)上的比例大约都是结果1中相应的比例的一半。也就是说,无论你的期望收益和风险偏好如何,你 手上所持有的风险资产本身相互之间的比例居然是不变的!变化的只是投资于风险资产与 无风险资产之间的比例。有趣的是,这一现象在一般情况下也是成立的,一般称为“分离 定理”,即风险资产之间的投资比例与期望收益和风险偏好无关。1981年诺贝尔经济学奖 得主Tobin教授之所以获奖,很大一部分原因就是因为他发现了这个重要的规律。 也正是由于有这样一个重要结果,我们在下面各节的讨论中就不再考虑存在无风险资产 的情形了,而只考虑确定风险资产之间的投资比例。 8 x5 g( B0 Y) {7 u

5 J6 ]- z5 s$ v( E
/ X8 N% y9 O9 L2 Z+ V
, c. w8 F0 Q: k  S& q. ~! u考虑交易成本的投资组合模型
0 `, Q' X. {6 q5 Z' m- H; S例7  继续考虑例5(期望收益仍定为15%)。假设你目前持有的股票比例为:股票 A占 50%,B 占35%,C 占15%。这个比例与例5中得到的优解有所不同。实际股票市场上 每次股票买卖通常总有交易费,例如按交易额的1%收取交易费,这时你是否仍需要对所持 的股票进行买卖(换手),以便满足优解的要求?
' @8 ?  V0 F" g- ?$ f; q8 V
% ~# Y) r' O' d4 i2 }" S(1)建立模型
" ?5 [' {8 O  `( u& C+ p" e+ Z; z) Y3 J5 r+ J7 r- O
仍用决策变量   分别表示投资人应当投资股票 A 、B 、C 的比例,进一步假设购买股票 A 、B 、C 的比例为 2 ,卖出股票 A 、B 、C 的比例为 。其中,   和 ( i=1,2,3 )中显然多只能有一个严格取正数,且
% B3 s5 L7 z( s! c8 N- [
- D. D/ O6 l1 j4 Q$ v3 J                      ( 6 )4 R6 `4 h8 \; X: f

; p9 _: K; d- i5 ^+ @* \由于交易费用的存在,这时约束   不一定还成立(只有不进行股票买卖,即  时,这个约束才成立)。其实,这个关系式的本质是:当前持有的总资金是守恒的,在有交易成本(1%)的情况下,应当表示成如下形式:7 N, M9 {. ?% @
6 z3 E1 D# @3 ?- |
              (  7 )
  ]4 r8 C. P9 T5 k7 j. _5 q+ E: l/ m( x" ^$ O
另外,考虑到当前持有的各只股票的份额    之间也应该满足守恒关系式
8 x% Q8 T. h( D# c' \# `
6 m4 \9 ~, I( l- ]# L                     (  8 )  : g( x8 u( A$ [1 D, ]5 f4 h- d2 Y
, U0 l: D" J, C+ b/ _) f
(2)模型求解8 s# r; `: _5 j0 O0 |; M. ?
, u7 Z$ ]& Y6 W; k) L+ J& X: ~* b9 V, R
问题对应的LINGO程序如下:  
  @" T$ H, q: G
7 u% w2 k8 r3 p" d$ E; D( c' k: ]( aMODEL: * W& |. D9 I* K6 k5 `" s7 R
Title 考虑交易费的投资组合模型; % K5 p. E0 ^1 n6 K* V, G8 `
SETS:    ' K. ~2 T; E' e+ J
    STOCKS/ A,  B,  C/: C,Mean,X,Y,Z;    , k0 w& t& Q! F) d- N" ~5 u- I* @! j
    STST(Stocks,stocks): COV; 9 }5 c/ n+ h. K0 }0 x: R7 q+ Q
ENDSETS
# Y# `/ f5 @( Y+ K, P! qDATA:
- D7 D7 q5 P: n+ c" E$ @1 A! 股票的初始份额; % C' T" y5 r& G" D. c
c=0.5  0.35  0.15;   - ^* m9 o5 u5 Z3 M9 _
TARGET=0.15;
/ v. x+ O( E/ F* a% u2 }7 e7 d9 SMean=@file(data2.txt);
! g. D% |( S: a/ K, eCOV=@file(data3.txt); ' q+ I' e" H4 [  T. Z
ENDDATA
9 ~3 B' ?+ M5 h* ]  w( D[OBJ] MIN = @sum(STST(i,j): COV(i,j)*x(i)*x(j)); 5 S% \6 j' Z/ P5 m1 i$ U3 Y* O. n3 f
[ONE] @SUM(STOCKS: X+0.01*Y+0.01*Z) = 1; 7 Z$ g2 J& k, H+ {2 G
[TWO] @SUM(stocks: mean*x) >= TARGET;
" l: D" b2 a* v& O2 {% D: K- L@FOR(stocks: [ADD] x = c + y - z);
. T2 @* u! l' V* REND
$ O; P& M0 N; ^/ q' u( m在这个LINGO模型中,股票C是原始集合“STOCKS”的一个元素,不会因为与集 合的属性C同名而混淆。这是LINGO新版本比LINGO旧版本的一个改进之处。 0 g6 X, K+ Q7 e* X# n: j; Z; m, ~' n

* _* |2 q% \8 {, Y2 b0 m: w, ~- u* d! n+ H3 ^2 O4 a3 y+ f8 b
- j  d  e# R; M; o' H* {# T
利用股票指数简化投资组合模型
0 Q+ ^7 e! ?' F% j$ e, v例8  继续考虑例5(期望收益率仍定为15%)。在实际的股票市场上,一般存在 成千上万的股票,这时计算两两之间的相关性(协方差矩阵)将是一件非常费事甚至不可能的事情。例如,1000只股票就需要计算  =499500  个协方差。能否通过一定方式避免协方差的计算,对模型进行简化呢?例如,例5中还给出了当时股票指数的信 息,但我们到此为止一直没有利用。我们这一节就考虑利用股票指数对前面的模型进行 修改和简化。8 Y) C* d+ c7 B' q
- F2 @8 L$ o3 @, z% o; p% V1 u
(1)问题分析
: G- x% x* u" l  Y1 n- y8 b2 y% \+ F
可以认为股票指数反映的是股票市场的大势信息,对具体每只股票的涨跌通常是有 显著影响的。我们这里简单地假设每只股票的收益与股票指数成线性关系,从而可以 通过线性回归方法找出这个线性关系。. d( F8 O+ h1 B8 h4 X
7 a% g- k) K1 f; R) W4 f
(2)线性回归
1 _  L1 Z0 t" ]) ]6 [! Q' _6 l. g3 Z" O, M( a% s( J( f0 z
具体地说,用M 表示股票指数(也是一个随机变量),其均值为 ,方差为 。根据上面的线性关系的假定,对某只具体的股票i,其价值 (随机变量)可以表示成
9 y- G6 Q2 ?& ^) g3 }6 ?                                                             (9)6 B( ?8 B3 }& l# a
4 ]# g$ z$ U" w& K7 _4 N! F
其中  和  需要根据所给数据经过回归计算得到,  是一个随机误差项,其均值为 ,方差为 。此外,假设随机误差项 与其它股票 j( j ≠ i )和股票指数M 都是独立的,所以  。
* Q( Y) w0 k6 m1 @1 t6 y2 I8 F( N- u6 O& x) X
先看看如何根据所给数据经过回归计算得到 和  。记所给的12年的数据为,( k =1,2,..,12),线性回归实际上是要使误差的平方和小,即要解如下优化问题:
/ s1 a  V  n/ m3 P0 u9 Q  G7 s! t
                    (10)
. O) P/ a3 c2 p0 s" Q& H! \5 q: ~0 p. C1 S
对这里给出的三种股票,可以编写如下LINGO程序求出线性回归的系数  (同时也在计算(CALC)段计算M 的均值 和方差   ,标准差  的值):
! T5 b$ E% Y6 p  R# X" W; a
5 r/ ?7 a  f% \2 a0 J8 OMODEL:
  E& R7 l# \/ D+ G6 _Title 线性回归模型; 6 y7 l* E; U1 R4 F  G" `6 T
SETS:    YEAR/1..12/:M;      Q, Z9 }- P# k  D4 V6 i4 _/ Q
STOCKS/A,  B,  C/: u, b, s2, s;   
( o( V4 C7 `9 @$ u$ Qtemp/1..5/;       ' Y4 W2 @8 I# i4 i, p' N$ H) b
tmatrix(YEAR,temp):tm;    ' }! G: A1 h$ I9 w" ^1 F
link(YEAR, STOCKS): R, e; , N9 z7 i* T" w& C- X0 N( t6 v; f/ |
ENDSETS * n' s# r# b5 |0 H" f& P9 c% A
DATA:    . Y" {/ z' w( P% A& f+ O
num=?;    ) c# ~# y3 m* T& r& w9 A& U
tm = $ U' ?/ p  K- e- G
1943           1.300          1.225           1.149           1.258997
8 F2 t( A9 o! J/ h7 z# B1944           1.103          1.290           1.260           1.197526
& b+ _: q' Z3 ]1 Q; Y1 q  C1945           1.216          1.216           1.419           1.364361
& L; U) d9 p2 Z) j; C) k/ V; g1946           0.954          0.728           0.922           0.919287 ( k$ y, U- T) K5 h2 x+ g
1947           0.929          1.144           1.169           1.057080 & x5 B3 L! o) _+ `8 }1 j7 V
1948           1.056          1.107           0.965           1.055012 ( D+ e4 ]; X9 L5 Y9 u! d' p6 ^: k
1949           1.038          1.321           1.133           1.1879259 G! j7 E2 {& S) Z& `- k
1950           1.089          1.305           1.732           1.317130
; }1 f% C" I" f, L5 G- x1 w2 X1951           1.090          1.195           1.021           1.240164
0 s9 C, n4 `: @( A5 ~8 l3 C1952           1.083          1.390           1.131           1.183675 & K' f3 ]6 A2 ?* d- R9 H
1953           1.035          0.928           1.006           0.990108    " P% c( {' o* y* Z0 H; C3 i- U
1954           1.176          1.715           1.908           1.526236;
! R3 m, C3 q, N/ IENDDATA 0 i) P( E4 R5 @2 w3 Y+ w
CALC:
$ {4 U! ^( R! j( m& t; ]@for(tmatrix(i,j)|j #ge#2 #and# j #le# 4:R(i,j-1)=tm(i,j)); / v4 \, T- u/ m9 Z
@for(tmatrix(i,j)| j #eq# 5:M(i)=tm(i,j));
9 R- q* R. b5 N6 W: M2 \8 Xmean0=@sum(year: M)/@size(year); ' }; J# K& L7 C$ h- `
s20=@sum(year: @sqr(M-mean0)) / (@size(year)-1); ( h+ g8 G$ p9 {* [8 t
s0=@sqrt(s20);
+ x' w3 Q$ K' ?( nENDCALC + J9 h! s1 q% u4 y' |. i% L
[OBJ] MIN = @sum(stocks(i)|i#eq#num: s2(i)); 1 B( G; U% {  B
@for(link(k,i)|i#eq#num: [ERROR] e(k,i) = R(k,i)-u(i)-b(i)*M(k)); @for(stocks(i)|i#eq#num:[VAR] s2(i)=(@sum(year(k): @sqr(e(k,i))) / (@size(year)-2)); [STD] s(i)=@sqrt(s2(i)) );
" H- b$ R. b6 o5 N7 c@for(stocks: @free(u);@free(b) ); $ u( |5 p. N8 _: D3 E( n/ j9 j+ `
@for(link: @free(e) ); , y: |  U) y% C0 @: M/ l, s. l
END
3 m6 Q% r$ v+ l$ h* ]& \% N1 ?对上面的这个程序,请注意以下几点:$ n2 v3 n( H& s( ^
3 ~! c/ W* E1 g  g1 p: }0 I% d
i)在CALC段直接计算了M 的均值  和方差  (为了使这个估计是无偏估计,分母是11而不是12)以及标准差
( Q& Q& W; N1 H! h) K" k2 O* y0 ^3 f5 e) G: x5 s
ii)程序中使用了两个常用的数学函数:平方函数@sqr和平方根函数@sqrt。" K7 W  N& B1 s; d/ Y+ B; W- P6 n3 }
3 y% i8 b* A. w/ z6 A" J* o2 u$ ^2 m
iii)除了计算回归系数外,我们同时估计了回归误差的方差 和标准差   。为了使这个估计是无偏估计,计算 时分母是10而不是11或12,这时因为此时估计了两个参数,自由度少了两个。% r$ b. Q- c8 D# g
% A- V5 @. k* d( R" c% g
iv)@free(u),@free(b),@free(e)三个语句一定不能少,因为这几个变量不一定是非负的。
% Q' }9 [2 |" ?9 r, s8 Z  ]5 {) L9 X6 J4 f7 m
v)DATA段定义了一个变量num,并用“num=?”语句表示其具体值需要由使用者在程序 运行时输入。变量num的作用是控制当前对哪只股票进行线性回归(num=1,2,3分别对应于股票 A , B, C)。 % |5 J+ i1 g7 q- |6 A7 R) |4 S
5 R% x" ]; W, D" N
vi)其实,这个问题也可以对三只股票的回归不加区分,即放在同一个模型中同时优化(相应地,只需要去掉上面程序中的控制变量num和所有的过滤条件“i#eq#num”),不 过这样就会增加变量的个数,我们不建议大家那样做。也就是说,对于能够分解成小规模 问题的优化问题,好一个一个分开做,这样可以减少问题规模,有助于求到比较好的解。4 ]' R' m6 L7 R# z0 o
9 S% O% k* Z' E, M9 K' N/ |" D) j
运行上述LINGO程序,得到的计算结果为:股票指数M 的均值 = 1.191458  ,方差为 =0.02873661  ,标准差为 = 0.1695188  ;对股票 A,回归系数 = 0.5639761, = 0.4407264 ,误差的方差  = 0.00574832  ,误差的标准差  = 0.07581767  。
. e" s* g  ]5 W" g2 x# d+ S! @
. v' Q' T0 L1 T& c- m同理(运行时输入num=2或3),可以得到:对股票B ,回归系数 = - 0.2635028 , = 1.239799 ,误差的方差 = 0.01564263  ,误差的标准差 =  0.1250705  。对股票C ,回归系数  = - 0.5809592 3  , = 1.523798  ,误差的方差 = 0.03025165 ,误差的标准差 =0.17393  。 & s" @- @/ l, u. c" E" h# S$ f
$ r! Y, G* a; J2 Q1 ?# `/ z9 r
(3)优化模型   $ \9 @1 f) P5 b8 B; L0 o8 ]: }. k

$ b/ C- l2 j. R- E现在,仍用决策变量 分别表示投资人应当投资股票 A ,B ,C 的比例,其中$ I$ K9 x% j; K" z. S. A
& \% w7 |  A: x( r6 T6 }
              (11)( z& R$ |4 }3 \5 `. N$ h

9 K7 d8 A0 _  G) \5 O2 W+ w+ y; L此时,与第1节的讨论类似,对应的收益应该表示为
2 K! c9 V& [0 F& Z) h. ]
. v, I! M1 V# O7 c6 I4 G' E2 W0 D4 |3 e" K1 u# T# f% e
0 [- r. X2 {2 E4 @7 P7 R
(4)模型求解
) L! ~" k% Z' h" Y3 r7 i" i, I$ V6 t0 E. K0 N9 a' W. l+ g+ P
为了数据传递方便,我们把三个回归模型同时计算。LINGO程序如下
$ o1 o* S5 A1 s* B4 Q) D' }: m, n  [* l$ M1 M
MODEL:
1 h$ R$ Y* T1 I. g" G; Z" x* _1 wTitle 线性回归模型; 4 G+ [3 U  Z9 t7 f
SETS:
4 x) |, `/ v5 s, @1 Y" e" d- I    YEAR/1..12/:M;   
* X; [0 I9 L7 b  V    STOCKS/A,  B,  C/: u, b, s2, s;   
9 L+ N- ]5 s: S' J$ I( \    temp/1..5/;       9 w4 l. }* l3 l9 e0 _7 m% g( F
    tmatrix(YEAR,temp):tm;   
$ |- J7 z$ s4 i- a; o  `+ D4 |    link(YEAR, STOCKS): R, e; 4 z# X- J4 ^. F* ^- L+ p9 Z8 n& h1 b) c
ENDSETS
$ g/ f0 d9 o8 V& YDATA:
, \7 c4 b% [& O6 ?/ L) W* Mtm =
. b9 R$ q; a6 C( `% g! A1943           1.300          1.225           1.149           1.258997 ' @* H+ ]1 I" \' W1 H
1944           1.103          1.290           1.260           1.197526 + S! k* z- g9 A6 q7 q) h& D
1945           1.216          1.216           1.419           1.364361 9 q7 ?; G2 Y' I  @/ [1 K8 J
1946           0.954          0.728           0.922           0.919287 1 H1 v. i8 g$ Z, v
1947           0.929          1.144           1.169           1.057080 6 V& u% V, g3 M' ~! y4 g# m- \
1948           1.056          1.107           0.965           1.055012 6 k) J, ^8 P9 D7 Q- V* e
1949           1.038          1.321           1.133           1.187925 2 `; T& }/ a9 x; ]  E; ]
1950           1.089          1.305           1.732           1.317130 . i4 G& B! G0 |8 D9 M; e* E
1951           1.090          1.195           1.021           1.240164
( ]% T! r) j6 h! O" V1952           1.083          1.390           1.131           1.183675
4 X2 D! M& R5 ^1953           1.035          0.928           1.006           0.990108   
6 R& |# H3 M; [$ C1954           1.176          1.715           1.908           1.526236; @text('data4.txt')=s2;
. ~1 {( l% @3 F0 a+ I4 g@text('data5.txt')=u;
' j3 t- C# U9 g( P@text('data6.txt')=b;
+ U2 M4 A' [6 ~% ~  hENDDATA
. ], _) R2 j5 ]CALC:
' s, i. w9 j, x1 D# r@for(tmatrix(i,j)|j #ge#2 #and# j #le# 4:R(i,j-1)=tm(i,j)); & U) r' V% c- e6 ?, z: [
@for(tmatrix(i,j)| j #eq# 5:M(i)=tm(i,j));
7 f& I# S) I$ X& p6 |  p: Pmean0=@sum(year: M)/@size(year);
- ]7 N+ h" r& \1 |* _' v  [: Ps20=@sum(year: @sqr(M-mean0)) / (@size(year)-1);
+ O8 W, o3 ]4 k. A, w, \s0=@sqrt(s20); 9 w  l# r: @! T* @+ {4 o0 T+ u& j
ENDCALC + q* ?: s  ^& \, c' z' M
[OBJ] MIN = @sum(stocks(i): s2(i)); / J/ ~& S- S: f3 k- [
@for(link(k,i): [ERROR] e(k,i) = R(k,i)-u(i)-b(i)*M(k)); 5 z2 s; a$ d! i4 `! ^0 l
@for(stocks(i):[VAR] s2(i)=(@sum(year(k): @sqr(e(k,i))) / (@size(year)-2));
1 C2 z3 t. L- x' P* W[STD] s(i)=@sqrt(s2(i)) );
) l. @, Y) ]. G; i* y( _( y. O0 e2 v@for(stocks: @free(u);@free(b) );
; K- b. k, r1 y* J  b2 U4 q# a@for(link: @free(e) ); ! s' K5 B; p3 a
END
: x+ U% [( B+ @! y7 W8 l上述二次规划的LINGO程序如下:
+ E7 X! o, f, T2 ^' n- |$ C9 B% J2 |) y3 y0 X5 A' O
MODEL:
/ k7 A1 X0 {3 R% Q1 xTitle 利用股票指数简化投资组合模型;
& R. o) E# X% j5 o3 [' W9 VSETS:    * i+ W; |+ D! O  p  H9 g0 n3 |
    STOCKS/A,  B,  C/: u, b, s2, x;
- S. A+ p. J- u$ WENDSETS 3 L! t  s- v* ]  I* j! \
DATA: 0 M- U# d0 O, o; h+ F
mean0=1.191458; 6 m7 C& \- q# e! `
s20 = 0.02873661;
& U* {2 W) @& x% c0 Es2  =  @file(data4.txt);   n" y( H# ~# I) |5 F/ Y3 T
u   =  @file(data5.txt); # `' B$ _9 {& ?* L; Z/ R
b   =  @file(data6.txt); 6 \' u& B) f: [' N  |4 c' p
ENDDATA : h7 v! I# A/ ^9 w) i' j4 d
[OBJ] MIN = @sum(stocks: (@sqr(b)*s20+s2)*@sqr(x));  5 E5 g1 m! z; U7 w1 q9 t3 m2 Y' o
@sum(stocks: x)=1;
4 O) G% R# f8 o2 _# L@sum(stocks: (u+b*mean0)*x)>1.15; 6 j1 t; b8 c+ m! u
END 5 ], J( ~3 W( a6 |6 p0 J
计算结果为,最后的持股情况是:A大约占初始时刻总资产的54%,B 占27%,C 占19%。这个结果与例5的结果是不同的。
6 b& b  h' _: \0 I8 A+ W9 G
) P8 P/ G0 ~* Z- f1 `9 g其它目标下的投资组合模型3 R5 f2 s6 Y- F- J9 Q
前面介绍的模型中都是在可能获得的收益的数学期望满足一定低要求的前提下, 用可能获得的收益的方差来衡量投资风险,将其作为小化的目标。这种做法的合理性 通常至少需要有两个基本假设:
8 _! y; W0 Y8 Q) G8 h8 a) ^+ B  ]
1 L% _- u( T. p& d6 d9 I(1)可能获得的收益的分布是对称的(如正态分布)。因为这时未来收益高于设 定的低要求和低于设定的低要求的数量和概率是一样的。可惜的是,实际中这个假设往往难以验证。
( n' D2 R$ y  V. I* u6 r7 |1 `. Y) M! E) F( @
(2)投资者对风险(或偏好)的效用函数是二次的,否则为什么值选择效益(随 机变量)的二阶矩(方差)来衡量风险使之小化,而不采用其它阶数的矩? 一般来说,投资者实际关心的通常是未来收益低于设定的低要求的数量(即低多 少)和概率,也就是说更关心的是下侧风险(downside risk)。所以,如果分布不 是对称的,则采用收益的方差来衡量投资风险就不一定合适。为了克服这个缺陷,可以 用收益低于低要求的数量的均值(一阶矩)作为下侧风险的衡量依据,即作为最小化 的目标。此外,也可以采用收益低于低要求的数量的二阶矩(即收益的半方差, semivariance)作为衡量投资风险的依据。其实,半方差计算与方差计算类似,只是只有当收益低于低要求的收益率时,才把两者之差的平方记入总风险,而对收益高于低要求的收益率时的数据忽略不计。这方面的具体模型这里就不再详细介绍了。 下面介绍一个与上面这些优化目标完全不同的投资组合模型,这个模型虽然很简单,但却会产生一些非常有趣的现象。% y$ b5 F8 c2 \5 e
* {1 V1 J" {0 W& l" V
例9  假设市场上只有两只股票 A, B可供某个投资者购买,且该投资者对未来一年的股票市场进行了仔细分析,认为市场只能出现两种可能的情况(1和2)。此外, 该投资者对每种情况出现的概率、每种情况出现时两只股票的增值情况都进行了预测和 分析(见表7,可以看出股票 B A、 的均值和方差都是一样的)。该投资者是一位非常 保守的投资人,其投资目标是使两种情况下小的收益最大化(也就是说,不管未来发生哪种情况,他都能至少获得这个收益)。如何建立模型和求解? 5 ]; D! Y" j, f

5 A5 p7 r0 w; o; k0 n
. r' _1 a( e" p) @: Z- W( }8 J5 d) Q, }0 x9 L  M9 F, K
  (1)优化模型与求解
. ^2 V2 F( T9 l. |
  o  m' m- _5 w% z5 U" I; o设年初投资股票A、 B 的比例分别为 ,决策变量显然应该满足
0 L: n2 D' L9 B- u2 Z* H               (12) : b! j8 y2 }9 t4 c0 o" E* ?7 x
此外,使最小收益最大的“保守”目标实际上就是希望:3 o% W' b+ {2 N4 H+ Z
8 _& B' P0 F' R3 ?4 ]) m

. d. J" e% b' X6 ~! ^6 V3 M1 z8 W引入一个辅助变量  * Q0 d' }* E$ C7 T. V9 O! p

- t+ f+ T. }+ C; H  - U1 w. i( C- A$ Q8 w

" }. I# f7 P3 ]这个模型就可以线性化为  
$ L* \9 W: N4 |2 R( A$ w" j
% X5 _, U! f1 D2 k9 B+ L* v* l& |) R* C- S) R

  s2 Y) `% c5 s2 H, |编写LINGO程序如下:  
1 _8 u4 P# j! F7 o8 g$ t* {
' Y  e- p$ T8 D5 Hmodel: 7 W) u& a2 w$ e- B* \9 L
sets: ) z2 \& e5 k5 f/ `' h! {
COL/1..2/:x;
- C6 F) \% O7 l( z4 VROW/1..2/;
% k( \) k: B' A, ylink(ROW,COL):a; . x- }7 w/ d1 s1 Q) {! A' `' d4 E
endsets
5 g( ^2 @  u/ E' C8 C/ ?+ Ndata: 1 h! c, w$ X! _3 U1 F
a=1 1.2 1.5 0.7;
5 B8 Z& z7 j% p  y: q/ E$ H- x6 ienddata 0 x  _3 e, q/ x6 `; X3 S
max=y; : \' s- O- v9 T$ x% N
@sum(COL:x)=1;
7 Y1 j6 k  ^4 j@for(ROW(i)sum(COL(j):a(i,j)*x(j))>y); ! }; M# C/ }1 b
End
2 h1 e) k$ x7 e. h& q可见,此时应该投资 A、B 股票各50%,至少可以增值10%。
" n( j  q5 p. D$ k
1 p4 X7 o# _8 b' L(2)讨论- X' ^. z+ a5 ^

3 e/ J. {' p2 ]: z$ @4 p现在,假设有一位绝对可靠的朋友告诉该投资者一条重要信息:如果情形1发生, 股票B 的增值将达到30%而不是表7中给出的20%。那么,一般人的想法应该是增加 对股票B 的持有份额。果真如此吗?这个投资人如果将上面模型中的1.2改为1.3计 算,将得到如下结果:  =0.5454545  , =  0.4545455  , y=1.136364 。  v0 E7 _$ E' H# ~0 R! Q

* P9 }( A8 s- ^! t也就是说,应该减少对股票B 的持有份额,增加对股票 A的持有份额。这真是叫 人大吃一惊!这相当于说:有人告诉你有某只股票涨幅要增加了,你赶紧说:那我马上 把这只股票再卖点吧。之所以出现如此奇怪的现象,就是由于这个例子中的目标的特殊 性引起的:我们可以看到新的解可以保证增值达到13.6364%,确实比原来的10%增 加了。
- j; O0 j4 a) ^& H% Q/ L6 l+ c) l% T
最后需要指出:我们上面所有关于投资组合的这些讨论基本上只是纯技术面的讨 论,只利用历史数据来说话,认为历史数据中包含了引起股票涨跌的所有因素。在实际 股票市场上,影响股票涨跌的因素可能有很多(如政策变化、银行加息、能源短缺、技 术进步等),未来不长时间内可能发生的一些重大事件很可能以前没有发生过,因此也 不可能体现在历史数据中。所以,进行投资选择前,还应该进行基本面分析,需要对未 来的一些重要影响因素、重大事件发生的可能性及其对每种股票涨跌的影响进行预测和分析,最后综合利用历史数据和这些预测数据,决定投资组合。如何将这些预测数据与 历史数据一起使用,建立相应的投资组合模型,这里就不再更多地介绍了。这方面的模 型有很多,有兴趣的可以继续查阅相关的专业书籍和研究文献。) Y7 n7 v, I' u  @  G; ?% M: l
  C3 \: K. o& A2 U" w
习题:
  m5 a# c& M5 n# L# S
; X' u& s8 b+ c. i6 E7 {# j2 ^1 p" v某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券及其信用等 级、到期年限、收益如表11所示。按照规定,市政证券的收益可以免税,其它证券的 收益需按50%的税率纳税。此外还有以下限制:5 n6 N2 r; c4 y7 I* v
2 K1 ~) E3 K9 R
i)政府及代办机构的证券总共至少要购进400万元;
( ]: \( z* X# ]
; D1 ?& r0 y8 Vii)所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高);
6 _& M9 g3 ?# ]8 l
1 X# \7 V9 P) {1 C iii)所购证券的平均到期年限不超过5年。 2 {* K) B9 t* M, n8 V& H7 d4 p8 Y
) m: l+ n! k& V' }. t9 k

4 B: v$ F" ]- q: k
& Q8 K2 i8 e4 d( T# ?* X5 w (1)若该经理有1000万元资金,应如何投资?
, L1 f3 b, r# i2 @1 b! ~; r0 K
/ s) f1 Y3 M0 m' r1 P# F(2)如果能够以2.75%的利率借到不超过100万元资金,该经理应如何操作?' d& H/ D& M! T1 f

# {4 l2 q/ u7 ^# }$ K( v$ ~(3)在1000万元资金情况下,若证券 A的税前收益增加为4.5%,投资应否改变? 若证券C 的税前收益减少为4.8%,投资应否改变?   H) b% p: j2 i$ p
————————————————
7 w8 U/ }% ]( o1 S) h版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。7 \; @6 Q" @& z" V1 `
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89406997; ?  Z0 i- x% }9 E

% {7 y( ]' y( I
6 ^( D: ~6 Y  H




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5