7 S2 a. H) _2 g3 g; E假设国库券的投资方式记为D,则当希望回报率为15%时,对应的LINGO模型如下: 9 [! p) U; f# i0 q4 T; ~: l4 N( t! `" f
MODEL: ) V, N5 K" ]: @$ oTitle 含有国库券的投资组合模型; , ^5 l$ R) C6 ]2 v0 ySETS: 0 q# ?+ l$ T" T5 _$ a8 a
STOCKS1/ A, B, C/: mean1; $ c! J& z: o2 ~% [8 c( F! P STST1(Stocks1,stocks1): COV1; 1 R6 t# W% r& H0 D STOCKS/ A, B, C, D/: mean,X; 2 h% n' |) `5 C Q/ ~1 o
STST(Stocks,stocks): COV; - Z% p7 y/ H( j7 x. jENDSETS ; b" S1 s( m' a) F
DATA: ) Y; a1 j$ x; B# Q9 Y4 E0 l7 n; ^$ [4 D
mean=0.05; 4 @& P+ Y, ^( F5 gCOV=0; , `2 C0 d; I6 E. J+ _; p: oCOV1=@file(data3.txt); 8 b8 }" K5 W0 ^/ F& O3 L2 }
Mean1=@file(data2.txt); 4 {" ?2 v! L; h$ ~6 U# B1 KTARGET = 0.15; ! 0.10; 9 T5 [5 R& M5 ~. x$ q' [$ v0 Z' y
ENDDATA H& R* @# e5 v( s0 U4 _8 T% V
calc: 9 H7 u# M* r5 |@for(STOCKS(i)|i #ne# 4: mean(i)=mean1(i)); k+ L+ J8 G1 h* Q
@for(STST(i,j)| i #ne# 4 #and# j #ne# 4:COV(i,j)=COV1(i,j)); 5 d! q' {9 t( {8 ~+ }5 |, F4 u
endcalc # i x8 ~3 z9 l# f$ P' F[OBJ] MIN = @sum(STST(i,j): COV(i,j)*x(i)*x(j)); 4 A/ B2 d9 T0 K' Y
[ONE] @SUM(STOCKS: X) = 1; / B% f( [# _, f* L. N y" J* y& B[TWO] @SUM(stocks: mean*x) >= TARGET; ! v, `1 Y" z6 Z2 E8 Z$ dEND ' w9 I3 D3 e) y计算结果为,投资 A占8.7%,B 占42.9%,C 占14.3%, D (国库券)占34.1%,风险 (方差)为0.02080347。与例5中的风险(方差为0.02241378)比较,无风险资产的存 在可以使得投资风险减少。虽然国库券的收益率只有5%,比希望得到的收益率15%小很多, 但在国库券上的投资要占到34.1%,其原因就是为了减少风险。7 H3 T; ]8 W1 z) x7 d" ~ ?2 ?( O
, P% A. k6 @4 X4 Z2 z
现在,我们把上面模型中的期望收益减少到10%,即把数据段中的语句“TARGET = 0.15”改为“TARGET = 0.10”,重新求解模型。计算结果如下:2 F; d F0 d+ ~* X
0 X7 A) g' t- n% M* f- H% Y# b投资 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教授之所以获奖,很大一部分原因就是因为他发现了这个重要的规律。 也正是由于有这样一个重要结果,我们在下面各节的讨论中就不再考虑存在无风险资产 的情形了,而只考虑确定风险资产之间的投资比例。 0 T* ]! c. ]! { 0 M7 W, \/ ^% m# b" f$ _; m% W
* G. g/ O9 m" s- P考虑交易成本的投资组合模型 ( V2 b$ Y, }1 ]+ i, q* C例7 继续考虑例5(期望收益仍定为15%)。假设你目前持有的股票比例为:股票 A占 50%,B 占35%,C 占15%。这个比例与例5中得到的优解有所不同。实际股票市场上 每次股票买卖通常总有交易费,例如按交易额的1%收取交易费,这时你是否仍需要对所持 的股票进行买卖(换手),以便满足优解的要求? / n' A: ~6 Q6 G* [' [& J/ n 2 z' I0 s0 Q- Q0 m8 `! b(1)建立模型 ' `0 a: o2 @! j 6 f* }& v& U: U) [仍用决策变量 分别表示投资人应当投资股票 A 、B 、C 的比例,进一步假设购买股票 A 、B 、C 的比例为 2 ,卖出股票 A 、B 、C 的比例为 。其中, 和 ( i=1,2,3 )中显然多只能有一个严格取正数,且 * f! e. b$ G9 e) Q
9 ?5 R( L9 T) v, n* q! T) T ( 6 ) , k. h( D/ L3 v) ^9 ^1 U! l9 z2 }. f4 P
由于交易费用的存在,这时约束 不一定还成立(只有不进行股票买卖,即 时,这个约束才成立)。其实,这个关系式的本质是:当前持有的总资金是守恒的,在有交易成本(1%)的情况下,应当表示成如下形式: * }6 h M& b( ` : t2 {+ B* @, T ( 7 ) $ {! O6 `' `7 W$ q* _# g# r4 P" w# Q/ |% P- r
另外,考虑到当前持有的各只股票的份额 之间也应该满足守恒关系式 * B3 E# |' S, T, J n 6 c) r, l& U }0 @; ?0 @& q0 \# L ( 8 ) 4 h! u n' U. o1 K; K, _
+ m4 O& v1 }. Z( x) y/ C(2)模型求解& E6 \0 k; I' X3 o' n5 B
# v6 |* p3 x0 P R. Y5 H: y问题对应的LINGO程序如下: : A3 L, \6 o1 l3 ^9 ]5 u& Q( T
7 _% S4 w( @- j6 g2 t- k
MODEL: o7 b5 `. X8 d, ~, D% `) [
Title 考虑交易费的投资组合模型; 7 E( p; s0 N$ \
SETS: " q/ a Q6 s/ h STOCKS/ A, B, C/: C,Mean,X,Y,Z; 9 m% `0 ~2 U6 r) P0 s0 [1 k STST(Stocks,stocks): COV; E4 a7 z9 y1 K6 C: p
ENDSETS / M0 \- u7 h H3 v2 }5 h$ u, O" GDATA: 8 M/ j E) l$ q1 |' d) N; h! @! 股票的初始份额; . B2 t+ y" H/ a% ^9 T! p: j3 v" i" oc=0.5 0.35 0.15; ( f* B) [3 W- k6 x9 T- K
TARGET=0.15; 0 R* I$ f% N) k5 ~. | ^Mean=@file(data2.txt); ' c. J$ ]- z4 J }COV=@file(data3.txt); 6 l# Y, w* ~0 hENDDATA 9 k$ s# w% N5 Q5 j- {# X# |! B[OBJ] MIN = @sum(STST(i,j): COV(i,j)*x(i)*x(j)); 8 C2 v+ @$ P! w9 j[ONE] @SUM(STOCKS: X+0.01*Y+0.01*Z) = 1; 0 p" ]5 ~+ q2 t4 r" G7 y
[TWO] @SUM(stocks: mean*x) >= TARGET; 5 y8 B+ D6 z" I9 C
@FOR(stocks: [ADD] x = c + y - z); % ~5 a3 e* L% k4 c7 A& p; f; B
END ; T! ]. f1 r8 {+ g5 q
在这个LINGO模型中,股票C是原始集合“STOCKS”的一个元素,不会因为与集 合的属性C同名而混淆。这是LINGO新版本比LINGO旧版本的一个改进之处。 3 g/ Q- R# |9 W1 j $ s! m# y7 I1 ]( D- H8 j/ B% k9 H2 z, G4 Y4 w# l6 G r
& p/ h0 W/ P& b. i- T
利用股票指数简化投资组合模型 * K1 o+ `. m" {/ d T
例8 继续考虑例5(期望收益率仍定为15%)。在实际的股票市场上,一般存在 成千上万的股票,这时计算两两之间的相关性(协方差矩阵)将是一件非常费事甚至不可能的事情。例如,1000只股票就需要计算 =499500 个协方差。能否通过一定方式避免协方差的计算,对模型进行简化呢?例如,例5中还给出了当时股票指数的信 息,但我们到此为止一直没有利用。我们这一节就考虑利用股票指数对前面的模型进行 修改和简化。 5 c$ |( c; w# x2 w9 D ; p& V& ^8 _6 _3 V(1)问题分析9 y% N7 {! k: \) n% c) |- X1 @: N+ B
7 k5 T% _- G0 e& e( ^* p; a
可以认为股票指数反映的是股票市场的大势信息,对具体每只股票的涨跌通常是有 显著影响的。我们这里简单地假设每只股票的收益与股票指数成线性关系,从而可以 通过线性回归方法找出这个线性关系。; \' c$ k/ x. A$ w. ~; B3 h" I
* {6 i' @6 z! k2 [# |+ l1 i
(2)线性回归4 P9 U/ ?. J! X& P! D) [
* y. G$ {/ q4 ^8 B# s/ |% {4 U具体地说,用M 表示股票指数(也是一个随机变量),其均值为 ,方差为 。根据上面的线性关系的假定,对某只具体的股票i,其价值 (随机变量)可以表示成 ! O7 C6 v$ S2 M (9)- o9 R* H5 w W, K
+ [; T1 u; [' ?
其中 和 需要根据所给数据经过回归计算得到, 是一个随机误差项,其均值为 ,方差为 。此外,假设随机误差项 与其它股票 j( j ≠ i )和股票指数M 都是独立的,所以 。 0 W1 p) l7 X7 G2 @3 ] }
}$ ^" g0 W! |. R
先看看如何根据所给数据经过回归计算得到 和 。记所给的12年的数据为,( k =1,2,..,12),线性回归实际上是要使误差的平方和小,即要解如下优化问题: ( ^8 G0 |( y: A, I' t) x& D 6 w6 G; ^* V: f0 n: s8 Z (10)% S# l' ] I% V
* c+ H# A6 |/ o( z+ |7 S对这里给出的三种股票,可以编写如下LINGO程序求出线性回归的系数 和 (同时也在计算(CALC)段计算M 的均值 和方差 ,标准差 的值): 6 V" B. E; q" s( D3 K
p8 e! `% {; {9 ^! d* H& }3 F+ {, y
MODEL: 7 L* `" x% A) I0 Z1 Z! w) v6 q% Y
Title 线性回归模型; 9 b. r+ _! Q' ~, b% U) nSETS: YEAR/1..12/:M; ! ]- r8 s* f y. J/ {- P
STOCKS/A, B, C/: u, b, s2, s; : {5 c; D% n9 @4 z1 R/ m
temp/1..5/; 7 u" t2 d& }+ n. t8 @
tmatrix(YEAR,temp):tm; # Q% R9 t/ o" A. ?+ U( R( flink(YEAR, STOCKS): R, e; 3 p5 f( p$ n2 T. H
ENDSETS : K8 z" w, ]. m) o# r8 H; O* Y9 LDATA: 5 R: ?2 d! X& a( M1 J
num=?; ; D4 F8 H( J! `0 A& |tm = ; }7 j. `+ z+ H, I c0 `1943 1.300 1.225 1.149 1.258997 1 C8 p; @* r3 y* d0 X
1944 1.103 1.290 1.260 1.197526 ' L" R! q! c7 b7 @1945 1.216 1.216 1.419 1.364361 ( G" B4 } ?) L* Y1946 0.954 0.728 0.922 0.919287 ; m2 g3 F+ I4 V( L" _6 j5 K
1947 0.929 1.144 1.169 1.057080 ' d: Y, i/ V2 c G" W
1948 1.056 1.107 0.965 1.055012 9 d3 k+ b% A- ^8 | O
1949 1.038 1.321 1.133 1.187925 , f0 m% f5 A# l# n* d0 F, m7 E5 B8 P1950 1.089 1.305 1.732 1.317130 7 c) s c* \$ C6 {# P1 E1951 1.090 1.195 1.021 1.240164 ! {2 w3 E6 I# g, |- c0 W! V
1952 1.083 1.390 1.131 1.183675 ( x- W0 n5 y" F1 ]5 l& N; m e2 |
1953 1.035 0.928 1.006 0.990108 5 y2 t+ {/ A' M% p* d- @$ V3 J3 J, K
1954 1.176 1.715 1.908 1.526236; 8 K: n; u0 l3 T4 y$ q0 a6 Q
ENDDATA " \/ W* J+ w' X
CALC: + Z; G7 [. \! H* _, b
@for(tmatrix(i,j)|j #ge#2 #and# j #le# 4:R(i,j-1)=tm(i,j)); 3 Y W. Y: |3 V- L6 A$ J; r@for(tmatrix(i,j)| j #eq# 5:M(i)=tm(i,j)); - `. T" o9 g% R; L
mean0=@sum(year: M)/@size(year); % D. b2 [, t9 k. [
s20=@sum(year: @sqr(M-mean0)) / (@size(year)-1); ( w% \/ _; J. ?0 [3 ]! ^s0=@sqrt(s20); + x% ?7 U, Y# W" o* S! cENDCALC 4 x d$ m2 ?6 |( S0 U[OBJ] MIN = @sum(stocks(i)|i#eq#num: s2(i)); " F$ ~- F. j3 d; P8 J! l
@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)) ); # \7 T$ N5 j; u0 r: [7 R
@for(stocks: @free(u);@free(b) ); ; W2 g# x4 ]! c3 l
@for(link: @free(e) ); ; b, k& |1 n5 E, k2 N6 C' [3 }
END 1 m- {& f* S y+ s2 T; K对上面的这个程序,请注意以下几点: 7 g& s3 t: r6 |$ I) I+ Q; J+ `8 J! _+ d" b( U1 k
i)在CALC段直接计算了M 的均值 和方差 (为了使这个估计是无偏估计,分母是11而不是12)以及标准差 。 ) H( x/ T: L' q7 n' j
5 |" T# r. G' C. X+ g8 v
ii)程序中使用了两个常用的数学函数:平方函数@sqr和平方根函数@sqrt。8 T. o7 F* j4 I2 T
) i, ]( A" i+ }- D! A( x- Wiii)除了计算回归系数外,我们同时估计了回归误差的方差 和标准差 。为了使这个估计是无偏估计,计算 时分母是10而不是11或12,这时因为此时估计了两个参数,自由度少了两个。: u6 ?" m. e" V( E$ U2 N+ R. D/ x4 A