1. 程式人生 > >數量金融學(3):Markowitz均值-方差模型

數量金融學(3):Markowitz均值-方差模型

上個世紀50年代(1952年),Markowitz發表一篇論文,標誌著證券投資組合理論的正式誕生。

簡單來說,Markowitz投資組合模型是根據每種證券的預期收益率、方差及證券之間的協方差矩陣,計算得到投資組合的有效邊界。

再根據投資者的效用無差異曲線,確定最佳投資組合。

模型的前提。這是至關重要的。

(1)投資者希望財富越多越好,且被投資效用為財富的增函式,但財富的邊際效用是遞減的。

(2)投資者事先知道投資報酬率分佈為常態分佈。

(3)投資者希望投資效用的期望值最大而該期望值是預期報酬率和風險的函式,因此影響投資決策的主要因素是預期報酬率和風險。

(4)投資者對風險是反感的,投資風險以預期報酬率的方差或標準差來表示。

(5)投資者是理性的。他遵循的原則是:在相同的預期報酬率下選擇風險小的證券,或者在相同的投資風險下選擇預期報酬率最大的證券。

(6)市場的有效性,即對本市場上一切資訊都是已知者。

學習:效用(一般而言,效用是指對於消費者通過消費或者享受閒暇等使自己的需求、慾望等得到的滿足的一個度量)

學習:邊際效用(邊際效用指在一定時間內消費者增加一個單位商品或服務所帶來的新增效用,即總效用的增量。也就是說,在其他條件不變的情況下,隨著消費者對某種物品消費量的增加,他從該物品連續增加的每一消費單位中所得到的滿足程度稱為邊際效用。效用函式的一階導函式)

學習:無差異曲線(指這樣一條曲線,在它上面的每一點,商品的組合是不同的,但是,它表示人們從中得到的效用程度卻是相同的。)

無差異曲線是對一個特定的投資者而言,根據他對期望收益率和風險的厭惡程度,按照期望收益率對風險補償的要求,得到一條曲線。此線上的無差異表現在對不同組合對於投資者來說都是具有同等吸引力的。高風險高期望,低風險低期望,但是吸引力是相同的。因此曲線上每個投資組合的效用值相等。

經典的Markowitz均值-方差模型為:


假設只有兩種證券。

clear;
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)
資產組合的方差:sigma1^2*w1^2 + 2*rho*sigma1*sigma2*w1*w2 + sigma2^2*w2^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)

ExpReturn

1-by-number of assets (NASSETS) vector specifying the expected (mean) return of each asset.

ExpCovariance

NASSETS-by-NASSETS matrix specifying the covariance of the asset returns.

PortWts

(Optional) Number of portfolios (NPORTS) by NASSETS matrix of weights allocated to each asset. Each row represents a different weighting combination. Default = 1/NASSETS (equally weighted).

[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%(防止操縱市場)。