平成25年11月6日の日本公認会計士協会による経営研究調査会研究報告第53号として「種類株式の評価事例」がある。この冊子のVに種類株式の評価例があり、"1.転換権付配当優先株式"とある。この記述が今一歩解りづらいので、思うところを書いてみる。そのきっかけは’一株当たりの新株予約権価値'が31.31円/株Aと書いてある点である。この価格に疑問を抱いている人はどうも多いらしい。そこで調べてみることにした。本記述にはChatGPT 01を利用して作成できた。
この元資料は https://jicpa.or.jp/specialized_field/publication/files/2-3-53-2a-20131224.pdf からダウンロードできる。
p.28からp.36までの8ページわたる記述があり、まずこの種類株式の仕組みを理解するだけでも大変だ。興味のある人は上記の資料をダウンロードすることをお勧めするが、とりあえずまとめを以下に示す。評価には、この事例の内容を正確に知る必要があるので、§仕様書を作る前のまとめと§転換権付配当優先株式の概要としてまとめた。概要はほとんどが元資料の一部で、抜粋を必要に応じて変更した。多くは上述の資料からの引用である。またそのつぎに§仕様書がある。
仕様書を作る前のまとめ
発行されるのは第一種優先株式であり、この優先株式は普通株式に転換することができる。よって、この第一種優先株式の価値の評価は債券部分とオプション部分に分けることができる。本記事ではこのオプション部分の評価だけを扱う。
オプション部分の評価は、形式的な満期は25年であるが、満期5年とする。このオプションの行使価格(取得価格)は半年ごとに見直される。当初の行使価格は510x0.9=500円であるが、6カ月ごとに行使価格は修正される。それを修正基準日という。各修正基準日に先立つ30日間の普通株式の証券取引所の終値の平均値の90%を修正基準日価格という。この値がその前の修正基準日の行使価格を下回った場合に、修正され、そうでなければ以前の値を使う。つまり一度下がると上がってこない。
優先株式を普通株式に転換する際の普通株式の数は優先株式1株につき、1000/行使価格で得られる数である。この行使価格は6カ月ごとに見直されるので、動的に動く。そして、この転換された普通株式を市場で売却することでもともとある債務の投下資金を回収する。
普通株式を市場で売却する際には、その数に制限があり、月々400000株である。これを日々上限で取引するとなると、一か月を20日として、毎日等分の量を売れるとして日々20000株となる。たとえば日々20000株を日々売れるとして、取得価格が500円に固定されて入れば、優先株式1株につき普通株式2株と変換でき、毎回優先株式を10000株売却でき、毎日売却できれば、10000x240x5=12000000株売却できる計算になる。そしてその金額は12000000x1000円=12000百万円となる。
優先株式を普通株式に転換できる数は、普通株式の価格が下がると増える。しかし、普通株式の売却数に制限があるので、その際には、優先株式の転換できる数は減る。つまり、普通株式の価格から日々行使可能な優先株式の数が決まる。普通株式の価格が減ると行使できる普通株式の数は増えるが、それには上限があるので、行使できる優先株式の数が減る。取得価格は一度下がると上がってこないので、行使できる優先株式の数は減ったままなので、12000000株は売却できなくなる。
説明を簡単にするために株価が250円/株で一定であるとする。売却できる普通株式の数は1000/250=4株となり、優先株式1株で普通株式4株が売却される。これは逆に優先株式が5000株しか転換できないことを意味し、5年で5000x240x5=6000000株しか売却できない。この際の売却金額は、6000000x1000円=6000百万円となる。転換できなかった株式は5年目以降に転換することになる。
もし取得価格に上限がないとしよう。再び説明を簡単にするために、株価が1000円/株で一定であるとしよう。売却できる普通株式の数は1000/1000=1株となり、優先株式1株で普通株式1株が売却される。これは逆に優先株式が20000株/日も転換できることを意味し、2.5年で20000x240x2.5=12000000株が売却できてしまう。この際の売却金額は、12000000x1000円=12000百万円となる。2.5年で資金が回収できてしまうが、普通株式の取得価格に制限があるのでこれはできない。
転換権付配当優先株式の概要
(1) 概要
15,000百万円の債務超過に陥った。そこで、私的整理を行うこととし、2X08年12月、主に取引金融機関から債務の株式化(デット・エクイティ・スワップ)12,000百万円、返済条件緩和3,000百万円を実施することで合意が成立した。
債務の株式化においては、第1種優先株式を発行するものとしており、その主な内容は次のとおりである(評価に必要な項目のみ抜粋している。)。
【表V-1 評価例における第1種優先株式の主な内容】
項目 | 内容 |
---|---|
① 募集株式の種類及び数 | 第1種優先株式 12,000 千株 |
② 募集株式の払込金額 | 1株につき 1,000 円 |
③ 払込金額の総額 | 12,000 百万円 |
④ 剰余金の配当 | (1) 第1種優先配当金の額 第1種優先配当金の額は、1,000円に、それぞれの事業年度ごとに下記算式により算定される年率(以下「第1種優先配当年率」という。)を乗じて算出した額とする。 第1種優先配当年率=日本円TIBOR(6か月物)+1.50% (2) 累積条項 第1種優先株式1株当たりの剰余金の配当の額が第1種優先配当金の額に達しないときは、その第1種優先株式1株当たりの不足額は翌事業年度以降に累積する。以下、当該累積した未払優先配当を「第1種累積未払配当金」という。 (3) 非参加条項 |
⑤ 残余財産の分配 | 第1種優先配当金及び第1種累積未払配当金を超えて剰余金の配当は行わない。 当社の残余財産の分配をするときは、全ての種類の株主に対する残余財産の分配に先立ち、第1種優先株式1株につき、(i) 1,000円、(ii) 第1種累積未払配当金及び(iii) 最終事業年度末から残余財産分配の日までの未払優先配当の日割り相当額の合計額を支払う。 |
⑥ 議決権 | 第1種優先株主は、株主総会において議決権を有しない。 |
⑦ 普通株式を対価とする取得請求権 | (1) 第1種優先株式の取得と引換えに交付する普通株式の数 第1種優先株式の取得と引換えに交付する普通株式の数は、転換請求に係る第1種優先株式の数に1,000円を乗じて得られる額を、下記(2)ないし(4)に定める取得価額で除して得られる数とする。 (2) 当初取得価額 取得価額は、2X08年12月31日に先立つ30取引日のXX証券取引所における当社の普通株式の普通取引の毎日の終値(気配表示を含む。)の平均値(終値のない日数を除く。)の90%とする。 なお、当該金額は500円であった。 (3) 取得価額の修正 取得価額は、2X08年12月31日以降2X33年6月30日(同日を含む。)までの毎年6月30日及び12月31日(以下それぞれ「修正基準日」という。)における時価(以下に定義される。)の90%(以下「修正基準日価額」という。)が、当該修正基準日に有効な取得価額を下回る場合には、当該修正基準日をもって当該修正基準日価額に修正される(以下、係る修正後の取得価額を「修正後取得価額」という。)。ただし、2X13年7月1日以降、修正後取得価額が2X13年6月30日における取得価額の90%に相当する額(「下限取得価額」という。)を下回る場合には、修正後取得価額は下限取得価額とする。 |
⑧ 普通株式への転換 | 修正基準日における時価は、各修正基準日に先立つ30取引日の証券取引所における当社の普通株式の普通取引の毎日の終値(気配表示を含む。)の平均値とする。 本件の優先株式は、普通株式に転換して市場で売却することにより投下資金を回収することが予定されている。 |
本件優先株式の発行の特徴は、普通株式を対価とする取得請求権が付与されていることである。DESに応じて優先株式を取得した債権者は、株価に対する影響を考慮しつつ、徐々に優先株式を普通株式に転換し、市場で売却することにより資金を回収することとなる。
この時、転換価格を市場株価に連動させることにより、優先株式の普通株式転換後の市場売却によって回収できる資金の総額が変動するリスクを抑制する工夫がなされている。
(2) 本件評価例における評価の概要
前項の評価例の概要にも記述しているとおり、本件の優先株式は、普通株式に転換して市場で売却することにより投下資金を回収することが予定されている。また、保有期間中、約定された優先配当を受け取ることとなる。
したがって、本件優先株式の経済的価値は、①所定の優先配当を受領し、元本を普通株転換して売却し、回収する部分と、②権利行使価格修正条項の付された新株予約権の部分の二つに分解することができる。
この時、①の優先配当の受領及び普通株式転換による元金回収の部分(以下「債権的価値部分」という。)については、債権に類似した性質があると考えられるため、債権の評価に準じ、一定の売却スケジュールを想定して優先配当の受取と普通株転換・市場売却による元金回収を見積もり、DCF法により評価を行うこととする。
一方、②の権利行使価格修正条項の付された新株予約権の価値(以下「オプション価値」という。)については、いわゆる経路依存型オプションであるため、オプション価値の評価が困難である。これらのオプション価値について、本件評価例ではモンテカルロ・シミュレーション$^{30}$を適用してコール・オプションとしての価値を算定することとする。
(3) 本件評価例における債権的価値部分の評価
① 回収スケジュールの想定
本件優先株式は、毎期の優先配当の受取と、普通株転換・市場売却による元金回収がキャッシュ・フローの源泉となる。このとき、転換価格修正条項の存在により、実際の普通株転換がどのように進捗するかは、将来の株価の推移に依存するため、一定の前提を設定して回収期間を推計することが必要となる。
本件における回収期間は、以下のとおり推計するものとしている。
【図表Ⅴ-2 回収期間の推計】
処分期間の推計 | ||
---|---|---|
優先株発行数量 | A | 12,000 千株 |
優先株発行価格 | B | 1,000 円/株 |
優先株発行総額 | C=A*B | 12,000 百万円 |
評価基準日における転換価格 | D | 500 円/株 |
優先株一株の転換により発行される普通株式数 | E=B/D | 2 株 |
普通株式の見込み増加数量 | F=A*E | 24,000 千株 |
発行済み普通株式総数 | G | 30,000 株 |
1か月あたりの処分可能株式数 | H | 400 千株/月 |
見積処分期間 | I=F/H/12 | 5 年 |
まず、転換価格(D)は評価基準日における転換価格で一定とし、優先株式1株の転換により発行される普通株式数(E)及び普通株式の見込み増加数量(F)を算定する。
次に、X社の株式の取引所における1日当たりの出来高等を勘案し、本件においては、1か月当たり処分可能株式数を400千株/月としている。
最後に、普通株式の見込み増加数量を1か月当たり処分可能株式数で除して見積処分期間を算定する(I)。
② キャッシュ・フローの見積り及びDCF法の適用
上記①で算定した元本回収期間を基に、各年のキャッシュ・フローを算定すると以下のとおりである。
【図表Ⅴ-3 キャッシュ・フローの算定】
キャッシュ・フローの算定及びDCF法の適用
2X09年 | 2X10年 | 2X11年 | 2X12年 | 2X13年 | 合計 | 単位 | 注 | ||
---|---|---|---|---|---|---|---|---|---|
普通株処分数量 | A | 4,800 | 4,800 | 4,800 | 4,800 | 4,800 | 千株 | ||
普通株処分価格 | B | 510 | 510 | 510 | 510 | 510 円 | /株 | (*2) | |
普通株処分によるキャッシュ・フロー | C=A*B | 2,448 | 2,448 | 2,448 | 2,448 | 2,448 | 百万円 | ||
割引期間 | D | 0.5 | 1.5 | 2.5 | 3.5 | 4.5 | 年 | (*3) | |
割引率 | E | 8% | 8% | 8% | 8% | 8% | (*4) | ||
割引係数 | F=1/(1+E)$^D$ | 0.96 | 0.89 | 0.82 | 0.76 | 0.71 | |||
現在価値 | G=C*F | 2,356 | 2,181 | 2,020 | 1,870 | 1,731 | 10,158 | 百万円 | |
優先株期首数量 | H | 12,000 | 9,600 | 7,200 | 4,800 | 2,400 | 千株 | ||
6か月円TIBOR | I | 0.5% | 0.5% | 0.5% | 0.5% | 0.5% | (*5) | ||
上乗せ率 | J | 1.5% | 1.5% | 1.5% | 1.5% | 1.5% | |||
優先株1株当たり発行価格 | K | 1,000 | 1,000 | 1,000 | 1,000 | 1,000 | 円/株 | ||
1株当たり優先配当 | L=(I+J)*K | 20 | 20 | 20 | 20 | 20 | 円/株 | ||
優先配当によるキャッシュ・フロー | M=H*L | 240 | 192 | 144 | 96 | 48 | 百万円 | ||
割引期間 | N | 0.25 | 1.25 | 2.25 | 3.25 | 4.25 | 年 | (*6) | |
割引率 | O | 8% | 8% | 8% | 8% | 8% | (*4) | ||
割引係数 | P=1/(1+O)$^N$ | 0.98 | 0.91 | 0.84 | 0.78 | 0.72 | |||
現在価値Q=M*P | 235 | 174 | 121 | 75 | 35 | 640 | 百万円 | ||
債権価値合計 | R=G+Q | 10,798 | 百万円 |
(注)
(*1) 1か月当たり400千株としている。
(*2) 基準日の株価が推移するものとしている。
(*3) 普通株式の売却は毎営業日均等に行われるものとし、期央主義により割り引くものとしている。
(*4) 割引率は、対象資産のリスクを勘案し、8%としている。
(*5) 基準日の6か月TIBORが推移するものとしている。
(*6) 優先配当は、毎年末の優先株主に対し、翌年3月末に支払われるものとして割引期間を算定している。
債権的価値の算定に当たっては、本件評価例ではDCF法により評価するものとしている。
本件評価例におけるキャッシュ・フローは、転換権行使により取得した普通株式の市場売却によるキャッシュ・フローと、優先配当によるキャッシュ・フローの二つから構成されている。
この時、普通株式の市場売却によるキャッシュ・フローは、売却時の株価に依存することとなるが、行使価格下方修正条項があるため、株価の下落によるマイナスは行使価格下方修正による取得株式数のプラスにより一定程度オフセットされる商品設計となっている。ただし、行使価格の下方修正は直前30営業日の平均株価に基づいて行われ、売却当日の株価変動を完全にはオフセットできないため、キャッシュ・フローの変動可能性は依然として残っている。
そこで、このキャッシュ・フローのリスクをどのように評価に反映するかが問題となる。この点、本件評価例においては、キャッシュ・フローの見積りは評価時点の株価を前提に算定して一定とし、当該キャッシュ・フローの変動リスクは割引率
を高く設定することにより対応することとしている。
次に、優先配当によるキャッシュ・フローであるが、優先配当は原則として約定額が固定されて支払われるものの、分配可能利益が不足すれば優先配当の支払は停止されることとなる。そのため、普通株式の市場売却によるキャッシュ・フロー同
様、キャッシュ・フローには一定のリスクがある。
そのため、普通株式の市場売却によるキャッシュ・フローと同様に、このリスクをどのように評価に反映させるかが問題となる。この点、本件評価例においては、普通株式の市場売却によるキャッシュ・フローと同様に、割引率を高く設定するこ
とにより対応することとしている。
ここで、普通株式の売却によるキャッシュ・フローが負担するリスクと優先配当によるキャッシュ・フローが負担するリスクに差がある(前者の方がリスクが高い。)ことから、両者は別個の割引率を設定すべきかどうかが問題となる。
この点、①それぞれのリスク水準に応じてそれぞれの割引率を設定する方法と②両者は飽くまでも同一の金融商品から生じるキャッシュ・フローであるため、両者のキャッシュ・フローを合計した際の全体のリスクを勘案して、単一の割引率を設
定する方法の二つが考えられる。
実際の評価においては、評価対象の商品設計から、より適切と考えられる方法を採用することとなるが、本件においては、②の両者のキャッシュ・フローを合計した際の全体のリスクを勘案して、単一の割引率を設定する方法を採っている。
次に、具体的な割引率をどのように設定するかが問題となる。
この点、本件評価例のような事業再生案件のケースでは、発行会社の優先株式発行後の財務リスクを前提に、対象会社の信用リスク、対象会社の株主資本リスクを勘案し、対象会社の負債コストよりも高く、対象会社の普通株主資本コストよりも
低い水準で決定されることとなる。
(4) 本件評価例におけるオプション価値の評価
次に、対象資産のオプションとしての価値を算定する。
本件オプションは、普通株式のコール・オプションの性質を有するが、行使価格修正条項が付されており、経路依存型のオプションである。また、実質的に一日当たりの行使可能数量に制限がある。
こうした条件が付されているため、オプション価値の評価が困難である。これらのオプション価値について、本件評価例ではモンテカルロ・シミュレーションを適用してコール・オプションとしての価値を算定することとする。
モンテカルロ・シミュレーションとは、コンピュータ上で乱数を組成し、将来の株価変動を確率的にシミュレーションして、統計的にオプション価値を計算する手法である。一般には、モンテカルロ・シミュレーションにより金融商品の公正価値を測定するアプリケーション・ソフトを利用するか、又はシミュレーション・プログラムを作成して実施することとなる。
具体的な評価は、①ステップ1:プログラムの作成、②ステップ2:パラメーターの設定及び③ステップ3:プログラムの実行の三つのステップで行う。
① ステップ1:プログラムの作成
モンテカルロ・シミュレーションを実施する
② ステップ2:パラメーターの設定
本件評価例の優先株式のオプション価値をモンテカルロ・シミュレーションにより評価するに当たり、以下のパラメーターを設定する必要がある。
ア.評価基準日の株価
イ.当初転換価格
ウ.転換価格の修正方法
エ.オプションの残存期間
オ.原資産のボラティリティ
カ.無リスク利子率
キ.リスク・プレミアム
ク.権利行使により取得する普通株式の配当利回り
ケ.権利行使の条件
コ.1年間の営業日日数
各パラメーターの設定は、次のとおりである。
【図表Ⅴ-4 各パラメーターの設定】
パラメーター | 内容 |
---|---|
ア.評価基準日の株価 | 評価基準日の株価は、500 円/株である。 |
イ.当初転換価格 | 当初転換価格は、510 円/株である。 |
ウ.転換価格の修正方法 | 転換価格は、直前30 営業日の株価終値の平均値に90%を乗じた価格に修正される。 |
エ.オプションの残存期間オプション | 残存期間は、形式的には25 年間であるが、普通株式の売却により順次権利行使され、当初の想定では5年間で権利行使を終える見通しである。そのため、残存期間は5年としている。 |
オ.原資産のボラティリティ | 上記エの残存期間に対応する発行会社の普通株式に関して、取引所における発行会社普通株式の終値に関するヒストリカル・ボラティリティを、本件評価例における原資産のボラティリティとすることとし、これを65%としている。 |
カ.無リスク利子率 | 本件評価例では、無リスク利子率を、上記エの残存期間に対応する国債利回りとする。具体的には、評価基準日における各年限の国債の市場金利のイールド・カーブを基に、補間法により算定することとする。本件評価例では、0.4%としている。 |
キ.リスク・プレミアム | 事業再生のケースでは、事業再生に頓挫し、破産・会社更生等によりオプションの価値が喪失されるリスクが高い。そこで、そのようなリスクを評価に反映させるため、シミュレーション上の割引率は、無リスク利子率をそのまま適用せず、一定のリスク・プレミアムを加算することがある。本件評価例においては、債権的価値の算定に用いた割引率から上記カの無リスク利子率を控除した数値をリスク・プレミアムとしている。 |
ク.権利行使により取得する普通株式の配当利回り | 本件評価例においては、事業再建期間中の分配可能利益は優先配当の支払のみに充当され、普通株式に対する配当は行わない計画である。したがって、権利行使により取得する普通株式の配当利回りはゼロとしている。 |
ケ.権利行使の条件 | 権利行使はオプションを行使する時点において株価が権利行使価格を上回る際に行われるものとしている。 |
コ.1年間の営業日日数 | 本件評価例においては、1年間の営業日数を240 日としている。 |
③ ステップ3:プログラムの実行
ステップ2で設定したパラメーターをプログラムに入力し、プログラムを実行する。
その結果、本件評価例では、権利行使により取得する株式1株につき31.31円という評価結果となっている。なお、シミュレーション回数は100,000回とし、その結果のヒストグラムは以下のとおりである。
当該評価額は、取得する普通株式1株当たりの価値であるため、現在の転換価格を前提とした取得株式数を乗じてオプション全体の価値を算定することとなる。その過程は以下のとおりである
【図表Ⅴ-6 オプション価値の算定】
1株当たりの新株予約権価値 | 31.31 円/株A |
---|---|
基準日の株価 | 510 円/株B |
株価に対する新株予約権価値の割合 | 6.14% C=A/B |
優先株式払込総額 | 12,000 百万円D |
新株予約権価値 | 737 百万円E=D×C |
本件では、行使価格修正条項が付されているため、オプションの個数を事前に定めることが難しい。一方で、行使価格修正条項の存在により、おおむね転換時点において同額の公正価値を有する普通株式と交換されることから、将来の普通株式の
公正価値いかんにかかわらず、優先株式払込総額は将来取得する普通株式の公正価値の合計に等しいと考えられる。そこで、評価時点における1株当たりオプション価値(A)の基準日における株価(B)に対する割合(C)を算定し、それを優先株式払込総額(D)に乗じた値(E)をもって、オプション価値としている。
ここまでの疑問点
図表V-2,3,6はここで説明されている第一種優先株式の主な特徴の記述として適切かどうかる疑問として残る。
プログラムの仕様書
1. 目的
第一種優先株式に付随する普通株式転換請求権(オプション)の公正価値を評価するため、モンテカルロ・シミュレーションを用いる。
このオプションは6カ月ごとに行使価格(転換価格)がリセットされ、行使可能期間は5年間(計10回のリセットポイント)、日々行使可能、売却株数に上限があるなど、複雑な行使構造を有する。
2. 前提条件・パラメータ
- 評価期間:5年(10回の行使価格リセット点あり、6カ月間隔)
- 初期株価:S0
- ボラティリティ:σ(ヒストリカルボラティリティ)
- 無リスク利子率:r
- リスクプレミアム:rp(債権的価値評価から導出)
- 割引率:ディスカウントファクターは無リスク利子率+リスクプレミアムで計算
- 行使価格リセットルール:6カ月ごとに、直前30営業日平均株価×90%で行使価格をKnとして再設定
- 1年間営業日数:240日
- 日々行使・売却可能:1日あたり売却株数に上限Hあり
- 優先株→普通株転換率:1,000円/Knで株数算出
- 配当利回り:0(優先配当は別途債権的価値で考慮、ここではオプション価値部分のみ)
- 試行回数:N(例:1万シミュレーションパス)
- 時間ステップ:日次
3. モデル・数値手法
-
株価生成モデル:GBM(Geometric Brownian Motion)等を想定
$$ dS = S(\mu dt + \sigma dW) $$
実務上はリスクニュートラル測度下に変換してシミュレーション - 離散日数:5年間×240営業日/年=約1200日
- 行使価格リセット:6カ月ごと(約120営業日間隔)でKnを更新
- 特性:6カ月ごとに行使価格リセット日が行使日とみなされ、その後の日々が行使可能日となる
4. 評価手順
-
株価パス生成
- Nパス分の株価軌跡を日次で生成(N×1200行列)
- 各パスで6カ月ごと(約120日ごと)にKnを計算し、当該期間中は行使価格Kn固定
-
行使可能日およびペイオフ計算
- 行使可能日:毎営業日
- 当該日の行使価格:現在有効なKn
- 即時行使ペイオフ:
$$ \text{Immediate Payoff} = \max(S_t - K_{\text{current}}, 0) \times \text{(取得株数/優先株)} $$
実際には転換率(1,000円/行使価格)で取得できる普通株数×(S_t - K_{\text{current}}) で計算 - 実務上は、優先株式全体を一度に行使するのではなく、売却可能株数H上限内で部分行使を想定
-
売却数量制限の考慮
- 各日行使可能な株数は上限Hがあるため、行使決定パスで想定売却数量をH株までに制限
- 行使可能数量制限もパス・日ベースで反映(行使戦略は、基本的に「可能な範囲で即時行使」か「継続」)
-
期待値算出
- 全パスについて最適戦略下で得られる日別キャッシュフローを割引
- 割引後の全パス平均をとり、オプション価値を計算
5. 入力・出力仕様
-
入力:
- 初期株価S0
- 初期値行使価格K0
- ボラティリティσ
- 無リスク利子率r、リスクプレミアムrp
- 初期行使価格計算用株価、6カ月ごとに参照する株価系列
- 1日または1か月あたり売却可能株数H
- シミュレーション回数N
-
出力:
- オプション価値(期待現在価値)
6. パフォーマンス・最適化
- 多数のパスで日次計算するため、並列計算やベクトル演算を活用
プログラムコードと実行結果
売却制限あり
import numpy as np
from numpy.polynomial.polynomial import polyfit, polyval
import pandas as pd
np.random.seed(42)
# パラメータ設定
S0 = 500.0 # 初期株価
sigma = 0.65 # ボラティリティ
r = 0.004 # 無リスク利子率
rp = 0.076 # リスクプレミアム
discount_rate = r + rp
T = 5.0 # 年数
days_per_year = 240
total_days = int(T * days_per_year)
N = 10000 # シミュレーション回数
dt = 1.0/days_per_year
# 行使価格リセット関連
# 初期行使価格
K0 = 500.0
# 6カ月ごと(約120営業日ごと)に行使価格Knを更新
reset_interval = int(days_per_year * 0.5) # 約120日
num_resets = int(total_days / reset_interval) # 10回
# 売却可能株数上限 (1日あたり)
# 1日あたり400000/20 = 20000株売却可能とする例
H = 20000
# 優先株式発行数量 12,000千株 = 12,000,000株
A = 12000000
# 転換率: 1,000円 / K
# 優先株1株あたりの普通株取得数 = 1000/K
# 一日で行使できる優先株数はH / (1000/K) = H * K/1000となるが、ここでは単純にHで制約
# リスクニュートラル株価シミュレーション(μ = r)
# 厳密にはリスク中立化しdiscount_rateとの整合要チェック
mu = r # 簡易近似
# 株価パス生成
def simulate_paths(S0, mu, sigma, dt, N, total_days):
Z = np.random.randn(N, total_days)
increments = (mu - 0.5 * sigma**2)*dt + sigma*np.sqrt(dt)*Z
logS = np.log(S0) + np.cumsum(increments, axis=1)
S = np.exp(logS)
S = np.hstack((np.full((N,1), S0), S)) # t=0列を付加
return S # shape (N, total_days+1)
S_paths = simulate_paths(S0, mu, sigma, dt, N, total_days)
# 行使価格リセットルール:
# 6カ月ごとに直前30営業日の平均株価*0.9でKn設定。ただしKnは下方修正のみ。
# 初期K0=500で開始し、各リセット時に新Kを計算
def compute_strike_prices(S_paths, reset_interval, total_days, K0):
N = S_paths.shape[0]
# 行使価格を全日程分保持
K_matrix = np.zeros((N, total_days+1))
K_matrix[:,0] = K0
current_K = np.full(N, K0)
for m in range(1, total_days+1):
#K_matrix[:,m] = current_K
if m % reset_interval == 0:
# 直前30営業日の平均株価
start = max(m-30,0)
avg_price = np.mean(S_paths[:,start:m], axis=1)
new_K = avg_price * 0.9
# 下方修正のみ
current_K = np.minimum(current_K, new_K)
#current_K = np.minimum(K0, new_K)
# 下方修正なし
#current_K=new_K
K_matrix[:,m] = current_K
return K_matrix
K_matrix = compute_strike_prices(S_paths, reset_interval, total_days, K0)
# 割引因子計算関数
def discount_factor(days, discount_rate, days_per_year=240):
return np.exp(-discount_rate * days/days_per_year)
# 評価(簡易版)
# ここではサンプルとして行使価値と続行価値比較部分を簡略化する。
#
# 実務:
# ここではサンプルとして、各日で(S_t - K_t) > 0なら即時行使、かつH株分行使、以降0の戦略を示す。
# (本来は回帰で継続価値を計算すべき)
#
# また、A株(1200万株)を上限に行使可能。全部行使できなくとも、満期にはそのまま。
def option_valuation(S_paths,K_matrix,N,total_days,H,A,discount_cf):
executed = np.zeros((N, total_days+1), dtype=bool) # 行使フラグ
cf_matrix = np.zeros((N, total_days+1)) # キャッシュフロー格納
ex_s_matrix= np.zeros((N, total_days+1)) # 行使普通株数格納
# 残存優先株数(行使前)
remaining_pref = np.full(N, A) # 全パスで初期は1200万株保持
for t in range(1, total_days+1):
S_t = S_paths[:, t]
K_t = K_matrix[:, t]
# 即時行使価値 = max(S_t - K_t,0) * (1000/K_t)*行使優先株数
# 1株優先株を行使すると (1000/K_t)株の普通株取得
# 一日行使可能な普通株数 = H
# 行使できる優先株数 = min(remaining_pref, 行使可能普通株数/(1000/K_t))
# = min(remaining_pref, H * (K_t/1000))
# ここでは近似的に、(1000/K_t)*優先株でH株になるよう調整
# 優先株 x (1000/K_t) = H => 優先株 = H * (K_t/1000)
# 優先株数は整数でないが簡易的にそのまま使用
possible_pref = H*(K_t/1000.0)
# 実際に行使可能な優先株数 = np.minimum(remaining_pref, possible_pref)
# 優先株数は1株単位より大きい桁数なのでそのまま実数近似
# 即時行使ペイオフ(1株優先株行使の価値)
# 1株優先株行使: 普通株取得数 = 1000/K_t, 即時売却: (S_t - K_t)*1000/K_t = 1000*(S_t/K_t -1)
#
# 総行使価値 = 優先株行使数 * max(S_t - K_t,0)*1000/K_t
# = possible_pref * max(S_t-K_t,0)*(1000/K_t)
exercise_value = (possible_pref * np.maximum(S_t - K_t,0)* (1000/K_t))
# 簡略化戦略: exercise if positive payoff
# 本来はここでLSMC回帰を使い、継続価値と比較する
do_exercise = (exercise_value > 0) & (remaining_pref > 0)
print
# 実際に行使する優先株数 = min(remaining_pref, possible_pref)
actual_pref = np.minimum(remaining_pref, possible_pref)
actual_ex_value = actual_pref * np.maximum(S_t - K_t,0)* (1000/K_t)
actual_ex_shares = (1000/K_t)
actual_ex_value[~do_exercise] = 0.0
actual_ex_shares[~do_exercise] = 0.0
# 行使したパスではremaining_pref減少
remaining_pref = np.where(do_exercise, remaining_pref - actual_pref, remaining_pref)
# キャッシュフロー格納
cf_matrix[:, t] = actual_ex_value
ex_s_matrix[:,t]=actual_ex_shares
# 全優先株行使済みなら以降価値0
# ここでは特段処理しなくてもremaining_pref=0で行使価値0になる
#print(t,actual_pref,S_t,K_t)
# 5年後満期時(total_days地点)、行使しきれなかった優先株は1000円で回収可能
# remaining_pref * 1000円
# 割引価値を考慮
final_cf = remaining_pref * 1000.0
#cf_matrix[:, total_days] += final_cf
# 割引現在価値
discounted_cf = np.zeros_like(cf_matrix)
for t in range(total_days+1):
df = discount_factor(t, discount_rate, days_per_year)
discounted_cf[:, t] = cf_matrix[:, t] * df
value = np.mean(discounted_cf.sum(axis=1))
#pd.DataFrame(S_paths).to_csv('S_paths.csv')
#pd.DataFrame(K_matrix).to_csv('K_matrix.csv')
#pd.DataFrame(cf_matrix[0]).to_csv('cf_matrix.csv')
print("cash flows :", cf_matrix.sum(axis=1)[0])
print("Estimated Option Value:", value)
B=np.mean(ex_s_matrix.sum(axis=1)/T/days_per_year)
print("excirsized common shares:",B)
print("Estimated Option Value per stock:", value/A/B)
option_valuation(S_paths,K_matrix,N,total_days,H,A,discount_factor)
売却制限なし
def compute_strike_prices0(S_paths, reset_interval, total_days, K0):
N = S_paths.shape[0]
# 行使価格を全日程分保持
K_matrix = np.zeros((N, total_days+1))
K_matrix[:,0] = K0
current_K = np.full(N, K0)
for m in range(1, total_days+1):
#K_matrix[:,m] = current_K
if m % reset_interval == 0:
# 直前30営業日の平均株価
start = max(m-30,0)
avg_price = np.mean(S_paths[:,start:m], axis=1)
new_K = avg_price * 0.9
# 下方修正のみ
#current_K = np.minimum(current_K, new_K)
#current_K = np.minimum(K0, new_K)
# 下方修正なし
current_K=new_K
K_matrix[:,m] = current_K
return K_matrix
K_matrix0 = compute_strike_prices0(S_paths, reset_interval, total_days, K0)
option_valuation(S_paths,K_matrix0,N,total_days,H,A,discount_factor)
cash flows : 2660388510.7020254
Estimated Option Value: 1443843536.8606157
excirsized common shares: 3.526743701121946
Estimated Option Value per stock: 34.1165406207737
こちらの結果は図表V-6に近い。転換率を2株にするともっと近づくはず。
正確にはLSMC(最小二乗モンテカルロ法)が必要であるが、判断が合理的になる分、価値はあがるはず。