/* 課題3　解答例 */

/* ［数値処理］→［自動的に数値で出力］*/
if numer#false then numer:false else numer:true;
/*浮動小数点の桁数=7に指定 */
fpprec : 7;
/* 浮動小数点表示桁数を7に指定*/
fpprintprec:7;

/* (1) */
mu_1 : 0.12;
mu_2 : 0.06; 
sigma_1 : 0.18;
sigma_2 : 0.12;
rho : 0.2;
Rf: 0.03;
cov_12 : rho * sigma_1 * sigma_2;

t: makelist(-0.5+0.01*i, i, 0, 200) 
/* t=資産１投資比率, [-0.5, 1.5] 刻み幅0.01 */;
mu_p : t*mu_1+ (1-t) *mu_2 /* ポートフォリオ期待リターン*/;
sigma_p : sqrt (t^2*sigma_1^2+ (1-t) ^2*sigma_2^2+2*t* (1-t) *cov_12)
/* ポートフォリオ収益率標準偏差*/;

slope:lmax((mu_p-Rf)/sigma_p) /* 効率的フロンティア傾き */;
f(x):=Rf+slope*x /* 効率的フロンティア式 */;
sigma_mu: makelist([sigma_p[i], mu_p[i]], i, 1, length(mu_p))
/* [sigma_p, mu_p](x,y)座標データリスト */;

load(draw);
draw2d(
explicit(f(x), x, 0, lmax(sigma_p)),
points (sigma_mu), 
xlabel="sigma", ylabel="mu", 
title="Efficient frontier and minimum variance boundary"
);

/* (II) */
sigma_A : 0.4;
rho_AM : 0.75;
mu_M : 0.135;
sigma_M : 0.25;
R_f : 0.01;
beta : rho_AM*sigma_A/sigma_M;
mu_A : R_f + beta * (mu_M - R_f);
print("ベータ値=", beta);
print("期待収益率=", mu_A);