Chap5 リアルオプションと投資意思決定
コンテンツ
5.1 リアルオプションとは5.2 正味現在価値法による評価5.3 2項格子モデルによる評価5.1 リアルオプションとは
リアルオプションとは、将来が不確実な投資事業において、 企業がもつ経営の柔軟性のことである。 企業が持つ柔軟性は権利であって義務ではないことが多い。 これが、金融商品の1つであるオプションと類似の性質をもつことから、 柔軟性のことを金融オプション(Financial opution)と対応する形で、 リアルオプション(Real Option)と呼ぶのである。
例えば、原油の採掘権について考えてみる。 今、原油の採掘権を所有しているとする。 現在、原油の価格が下がっているため、採掘しても損をしてしまう。 ある企業が原油採掘権の購入したいと申し込みをしてきた。 この採掘権を売却すべきであろうか? 将来、原油価格が上昇するかもしれない。 そのときまで、採掘を延期することができるのである。 リアルオプションは、この延期するという柔軟性の価値を評価し、 意思決定に役立たせることができる。
5.2 正味現在価値法による評価
例題1
所有者から10年間、ある地域の石油採掘権の契約を考えている。 この地域の原油埋蔵量は相当量あることがわかっている。 原油は、1バレル20ドルの費用で、1年あたり1万バレルまで採掘することができる。 現在の原油の市場価格は、1バレル40ドルである。金利は10%である。 原油の価格、操業費用、金利は10年間一定とする。 採掘権の現在価値はいくらか?
例題1を解くには、将来のシナリオが確定的であるため、
リアルオプションではなく、正味現在価値法を適用したほうがよい。
正味現在価値法とは、事業が生み出す将来のキャッシュフローを予測し、
資本コストで現在価値に割り引いて、
その合計をプロジェクト価値とする方法である
(ここでは、資本コストとして、金利を用いる)。
キャッシュフロー流列が(x0,x1,...,xn)、
金利rのとき、以下の式で求めることができる。

実際に、プログラムを用いて例題1を解いてみよう。 まず、NPVという名前の、現在価値を求める関数を作る。
NPV=function(cf,r){ n=length(cf) for(i in 1:n){ cf[i]=cf[i]/(1+r)^i } sum(cf) }
次に、1年あたりのキャッシュフローを求める。 これは、10,000×(40ドル-20ドル)=20万ドルである。 毎年、20万ドル得られるので、 キャッシュフロー流列は10個の20万ドルのフローからなる。 金利10%も定義する。
M=10000*(40-20) #1年あたりのキャッシュフロー cf=rep(M,10) #キャッシュフロー流列の作成 r=0.10 #金利
コマンドウィンドウを出して、 はじめに定義した関数を用いて、現在価値を求める。
> NPV(cf,r) [1] 1228913
以上より、採掘権の現在価値は123万ドルである。
5.3 2項格子モデルによる評価
例題2
例題1において、原油の価格がランダムに変動するとする。 現在、原油の市場価格は1バレルあたり40ドルであり、 原油の価格は2項格子に従うとする。 毎年、価格は係数1.2で増加するか(確率は0.75)、 もしくは係数0.9で減少する(確率は0.25)。 このとき採掘権の現在価値はいくらか?
例題1と違い原油価格が不確実であるため、リアルオプションを適用する。 ここでは、リアルオプションの中でも、 直観的に理解しやすい2項格子モデルを取り上げ、例題2を用いて説明する。 まず、各値を設定する。
N = 10 #期間 S = matrix(NA,N+1,N+1) #原資産行列の初期化 V = matrix(NA,N+1,N+1) #採掘権価値行列の初期化 S0 = 40 #現在の原油価格 a = 10000 #採掘可能量 c = 20 #採掘費用 r = 0.10 #金利 R = 1 + r u = 1.2 #上昇係数 d = 0.9 #下降係数 q = (R-d) / (u-d) #リスク中立確率
次に、石油価格(不確実要因)の2項格子を作成する。
for(i in 0:N){ for(j in 0:i){ S[j+1,i+1] = S0 * u^(i-j) * d^j } }
コマンドウィンドウでround(S,0)と実行してみると2項格子が表示される。 ここでround(a,b)はaを小数b桁に四捨五入する関数である。
> round(S,0) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [1,] 40 48 58 69 83 100 119 143 172 206 248 [2,] NA 36 43 52 62 75 90 107 129 155 186 [3,] NA NA 32 39 47 56 67 81 97 116 139 [4,] NA NA NA 29 35 42 50 60 73 87 104 [5,] NA NA NA NA 26 31 38 45 54 65 78 [6,] NA NA NA NA NA 24 28 34 41 49 59 [7,] NA NA NA NA NA NA 21 26 31 37 44 [8,] NA NA NA NA NA NA NA 19 23 28 33 [9,] NA NA NA NA NA NA NA NA 17 21 25 [10,] NA NA NA NA NA NA NA NA NA 15 19 [11,] NA NA NA NA NA NA NA NA NA NA 14
S[1,1]が初期価格であり、横方向は上昇、斜め下方向は下降を表している。 次に最終時点の採掘権の価値を求める。 最終時点では、所有者に返却しなければならないので、 採掘権の価値はゼロである。
V[,N+1]=0
最終時点の価値が求まったので、 それを最終時点から現在まで後ろ向きに計算をしていく。 各時点の価値は、その時点の事業価値+将来の継続価値である。 その時点の事業価値は、採掘をしなくてもよいので、
である。また、将来の継続価値は、リスク中立確率の下での期待値を 金利で割り引いたものであるから、
である。プログラムは以下のようになる。
for(i in N:1){ for(j in 1:i){ V[j,i] = (q * V[j,i+1] + (1-q) * V[j+1,i+1]) / R + max((a * (S[j,i] - c)) / R,0) } }
コマンドウィンドウでround(V/1000,0)を実行すると、採掘権価値が求まる。 単位は万ドルである。
> round(V/1000,0) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [1,] 2407 2775 3122 3425 3653 3766 3709 3412 2780 1694 0 [2,] NA 1794 2075 2325 2522 2635 2623 2434 1998 1225 0 [3,] NA NA 1289 1500 1674 1787 1809 1701 1412 874 0 [4,] NA NA NA 882 1038 1150 1198 1152 972 610 0 [5,] NA NA NA NA 561 673 740 739 642 412 0 [6,] NA NA NA NA NA 317 397 430 395 263 0 [7,] NA NA NA NA NA NA 145 198 209 152 0 [8,] NA NA NA NA NA NA NA 44 70 69 0 [9,] NA NA NA NA NA NA NA NA 4 6 0 [10,] NA NA NA NA NA NA NA NA NA 0 0 [11,] NA NA NA NA NA NA NA NA NA NA 0
この採掘権は2,407万ドルである。