3.10 part2
利回りλ = 0.10、 期間 n = 10(年)、 クーポン率 r = 0.08、 クーポン支払回数 m = 2(回/年)、 額面価値Fを100($)とする。
Javascript
code
// 3.10.js 2024-08-17 function sum(x){ return x.reduce((sum,element) => sum + element, 0); }; // input const lambda = 0.1; // 利回り const n = 10; // 期間(年) const r = 0.08; // クーポン率 const m = 2; // クーポン支払回数(回/年) const face = 100; // 額面価値 const j = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; // calcilating const co = face * r / m; const year = j.map((_, i) => i * 0.5); const payment = [0, co, co, co, co, co, co, co, co, co, co, co, co, co, co, co, co, co, co, co, 100 + co]; const df = j.map((x) => 1 / Math.pow(1 + lambda / m, x)); const pv = payment.map((_, i) => payment[i] * df[i]); const price = sum(pv); const weight = pv.map((x) => x / price); const yw = year.map((_, i) => year[i] * weight[i]); const duration = sum(yw); // output const x1 = year.map((x) => x.toFixed(1).padStart(10)); const x2 = payment.map((x) => x.toFixed(0).padStart(10)); const x3 = df.map((x) => x.toFixed(3).padStart(10)); const x4 = pv.map((x) => x.toFixed(3).padStart(10)); const x5 = weight.map((x) => x.toFixed(3).padStart(10)); const x6 = yw.map((x) => x.toFixed(3).padStart(10)); console.log('3.10.js'); console.log(['year'.padStart(10), 'payment'.padStart(10), 'df'.padStart(10), 'pv'.padStart(10), 'weight'.padStart(10), 'y*w'.padStart(10)].join('')); console.log('-'.repeat(60)); j.forEach((_, i) => console.log([x1[i], x2[i], x3[i], x4[i], x5[i], x6[i]].join(''))); console.log('-'.repeat(60)); console.log([ price.toFixed(3).padStart(40), sum(weight).toFixed(3).padStart(10), duration.toFixed(3).padStart(10)].join('')); console.log(['price'.padStart(40), 'duration'.padStart(20)].join('')); // end
output
3.10.js year payment df pv weight y*w ------------------------------------------------------------ 0.0 0 1.000 0.000 0.000 0.000 0.5 4 0.952 3.810 0.044 0.022 1.0 4 0.907 3.628 0.041 0.041 1.5 4 0.864 3.455 0.039 0.059 2.0 4 0.823 3.291 0.038 0.075 2.5 4 0.784 3.134 0.036 0.090 3.0 4 0.746 2.985 0.034 0.102 3.5 4 0.711 2.843 0.032 0.114 4.0 4 0.677 2.707 0.031 0.124 4.5 4 0.645 2.578 0.029 0.133 5.0 4 0.614 2.456 0.028 0.140 5.5 4 0.585 2.339 0.027 0.147 6.0 4 0.557 2.227 0.025 0.153 6.5 4 0.530 2.121 0.024 0.158 7.0 4 0.505 2.020 0.023 0.162 7.5 4 0.481 1.924 0.022 0.165 8.0 4 0.458 1.832 0.021 0.167 8.5 4 0.436 1.745 0.020 0.169 9.0 4 0.416 1.662 0.019 0.171 9.5 4 0.396 1.583 0.018 0.172 10.0 104 0.377 39.197 0.448 4.478 ------------------------------------------------------------ 87.538 1.000 6.840 price duration
history
2024-08-18 create.