上个世纪50年代(1952年),Markowitz发表一篇论文,标志着证券投资组合理论的正式诞生。
简单来说,Markowitz投资组合模型是根据每种证券的预期收益率、方差及证券之间的协方差矩阵,计算得到投资组合的有效边界。
再根据投资者的效用无差异曲线,确定最佳投资组合。
模型的前提。这是至关重要的。
(1)投资者希望财富越多越好,且被投资效用为财富的增函数,但财富的边际效用是递减的。
(2)投资者事先知道投资报酬率分布为常态分布。
(3)投资者希望投资效用的期望值最大而该期望值是预期报酬率和风险的函数,因此影响投资决策的主要因素是预期报酬率和风险。
(4)投资者对风险是反感的,投资风险以预期报酬率的方差或标准差来表示。
(5)投资者是理性的。他遵循的原则是:在相同的预期报酬率下选择风险小的证券,或者在相同的投资风险下选择预期报酬率最大的证券。
(6)市场的有效性,即对本市场上一切信息都是已知者。
学习:效用(一般而言,效用是指对于消费者通过消费或者享受闲暇等使自己的需求、欲望等得到的满足的一个度量)
学习:边际效用(边际效用指在一定时间内消费者增加一个单位商品或服务所带来的新增效用,即总效用的增量。也就是说,在其他条件不变的情况下,随着消费者对某种物品消费量的增加,他从该物品连续增加的每一消费单位中所得到的满足程度称为边际效用。效用函数的一阶导函数)
学习:无差异曲线(指这样一条曲线,在它上面的每一点,商品的组合是不同的,但是,它表示人们从中得到的效用程度却是相同的。)
无差异曲线是对一个特定的投资者而言,根据他对期望收益率和风险的厌恶程度,按照期望收益率对风险补偿的要求,得到一条曲线。此线上的无差异表现在对不同组合对于投资者来说都是具有同等吸引力的。高风险高期望,低风险低期望,但是吸引力是相同的。因此曲线上每个投资组合的效用值相等。
经典的Markowitz均值-方差模型为:
假设只有两种证券。
clear;资产组合的方差: sigma1^2*w1^2 + 2*rho*sigma1*sigma2*w1*w2 + sigma2^2*w2^2
close all;
clc
%%
syms w1 real
syms w2 real
syms sigma1 real
syms sigma2 real
syms rho real
w = [w1;w2];
cov_mat = [sigma1^2, rho*sigma1*sigma2;
rho*sigma1*sigma2,sigma2^2
];
sigma_2 = w'*cov_mat*w;
simplify(sigma_2)
批量指定符号为real类型
syms('w1', 'w2', 'sigma1', 'sigma2', 'rho', 'real')
其实这个问题。。。哪里需要用matlab的符号运算……
D(aX+bY) = a^2 D(X) + b^2 D(Y) + 2abCov(X,Y)
Cov(X,Y) = rho * std_x * std_y
收益与风险计算函数
一个问题,现在看好3只股票,但现在他们的市场价都不相同。
方案A:等量地买这三只股票。
方案B:等市值地买。
问:方案A和方案B有何差异。
ExpReturn = [0.1 0.2 0.15];
ExpCovariance = [0.0100 -0.0061 0.0042
-0.0061 0.0400 -0.0252
0.0042 -0.0252 0.0225 ];
PortWts=[0.4 0.2 0.4; 0.2 0.4 0.2];
[PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance,...
PortWts)
|
|
|
|
|
(Optional) Number of portfolios ( |
[PortRisk, PortReturn] = portstats(ExpReturn, ExpCovariance, PortWts)
computes the expected rate of return and risk for a portfolio of assets.
PortRisk
is an NPORTS
-by-1
vector of the standard deviation of each portfolio.
PortReturn
is an NPORTS
-by-1
vector of the expected return of each portfolio.
Matlab的doc里面有一段Portfolio Optimization Theory。好像很深奥的样子。
有效前言计算函数
然而Matlab已经将这个函数remove了。。。
Create Portfolio object for mean-variance portfolio optimization.Use the Portfolio
function to create a Portfolio
object for mean-variance portfolio optimization.
To set up a portfolio optimization problem in a Portfolio object, the simplest syntax is:
p = Portfolio;
代码等我搞懂以后再贴上……
可以添加各种约束条件。
1. lowerbound,lowerbudget……
2. 把资产分组,每个组最多可以配多少……
3. 基金的双10%规则。单一证券不能超过基金资产的10%(防止非系统性风险),投资于某一上市公司的股票不能超过该公司资产的10%(防止操纵市场)。