現在価格 S = 920 先渡価格 F = 940 クーポン C = 80 割引係数 d(0, 6 months) = 1 / (1 + 0.07 / 2) = 0.9662 割引係数 d(0, 12 months) = 1 / (1 + 0.08 / 2)2 = 0.9246 cash flow sream, x = (-S, C, C + F) = (-920, 80, 80 + 940) = (-920, 80, 1020) 割引係数配列 d = (d(0,0), d(0,6m), d(0,12m)) = (1, 0.9662, 0.9246) 先渡契約の現時点での価値 pv = Σ x(i) * d(i) = -920 * 1 + 80 * 0.9662 + 1020 * 0.9246 = -920 + 77.30 + 943.09 = 100.39
// 10.7.js // 2025-06-28 // 現在価格 s // 先渡価格 f // クーポン c // 利子率 r1 // 利子率 r2 // キャッシュフロー流列 x // 割引係数配列 d // 現在価値 pv // function const sum = (x, y) => x + y; // input let s = 920; let c = 80; let f = 940; let m = 2; let r1 = 0.07; let r2 = 0.08; let x = (function(){ let x1 = [-s, 0, 0]; // 初期支出 let x2 = [ 0, c, c]; // クーポン収入 let x3 = [ 0, 0, f]; // 満期時収入 return x1.map((_, k) => x1[k] + x2[k] + x3[k]); }()); // ↑ 即時実行関数式(これによりx1,x2,x3がローカル変数になる。) // David Flanagan 著、村上列 訳:JavaScript第7版, オライリー・ジャパン, 2021, p.223. // calculation let d = (function(){ let d0 = 1; let d1 = 1 / (1 + r1 / m); let d2 = 1 / (1 + r2 / m) ** 2; return [d0, d1, d2]; }()); let xd = x.map((_, i) => x[i] * d[i]); let pv = xd.reduce(sum); // output console.log("10.7.js"); console.log("s", s); console.log("c", c); console.log("f", f); console.log("r1", r1); console.log("r2", r2); console.log("m", m); console.log("x", x); console.log("d", d); console.log("xd", xd); console.log("pv", pv); // end
2025-02-15 create.
2025-06-28 revise 10.7.js, and add 10.7.py, 10.7.jl, 10.7.scm, and 10.7.f90.