余剰キャッシュ・フロー・スイープとは?
簡単にいうと「お金が余ったら借金早く返せ」というルールだ。
ローンの種類や対象となるローンにはさまざまなバリュエーションがある。
【ローンの種類】
タームローンAなのか、タームローンBなのか等
【対象となるローン】
5年後に返さないといけない借金を返すのか、来月返さないといけないやつを返すのか等
LBOってなに?いう人はまずこれを見てほしい↓↓↓
LBO(レバレッジド・バイアウト)とは?シンガポールM&A専門家が図解!
借りている側としては、目先のすぐに返さないといけないほうを優先して返したいが、貸している側はちゃんとこの先も返してくれるのか?という不安から、返済期限が遅いものから返してほしいとなるのが一般的だ。
なので、実務では、両社の意向のバランスをとって、全ての残りの返済期間に返済すべき金額をまんべんなく支払うという形をとることが多い。
【参考:500を追加で返済できる場合の返済方法】
まず3表を適当に作ってみる
なんでもいいので適当に。基本を学ぶために複雑な3表なんて不要。
借金を返すための財源っていくら?
営業キャッシュフローと投資キャッシュフローを合計したものが、基本的に借金を返済するための財源となるので、以下のように行を追加してみた。
例えば、2021/3月期の借金を返すための財源は7,213であり、そこから1,000だけ返済し、残りのキャッシュフローは6,213というわけだ。
これを見ると、なんら問題ないと思うかもしれないが、LBOの場合だと状況が異なってくる。
ちゃんと決められたとおりに毎年1,000返済しているにもかかわらず、「7,213もキャッシュが生み出されているのに、1,000しか借金返してねーのかよ、もっと返せるだろー早く返せー」という苦情がくるのがLBOなのだ。
これがまさに強制期限前弁済(余ったお金があるんだったら期限前に全力で返せ)(余剰キャッシュ・フロー・スイープ)なのだ。
借入金を2種類に分けてみる
借入金を次の2種類に分けてみる。
【借入金は2種類に分けられる】
①その年に払わないといけない借入金
②まだ払わなくていい借入金
今は「返済」という項目一種類しかないので、「すぐに払わないといけないもの」と、「まだ払わなくてもいいけど余裕あるから払うもの」の2種類になるよう行を追加する
(修正前)
(修正後)
勿論、キャッシュスイープは強制期限前弁済というくらいなので、期限前のまだ返さなくてよい借金を返すのだ。
では、具体的にみていくと、2021/3月期は7,213の借金返済に回せるキャッシュがあり、そのうち、すぐに返さないといけないのは1,000しかないので、6,213余ることになる
これを余剰キャッシュフローといったりするが、とりあえずまだまだ払えるのだ。
ただ、余剰キャッシュフロー全部を借金返済に回すのかというそうではない。ここでは適当に余剰キャッシュフローの半分(50%)を借金返済に充てることのできる最大キャッシュとする
以上より、2021/3月期では、あと3,606も借金返済に充てられるということになる。
次は、実際に3,606だけ追加で借金を返済してみよう
余剰キャッシュフローによる期限前弁済
以下のようにしてないだろうか。
こうしてしまうと、以下のように払い終わってもずっと払い続けていることになる。借金は最大でも5000しかないのだ。
それ以上払うなんて君は太っ腹だ。
こういう時に便利なのが、min()関数だ。
名前の通り、複数数字がある中から、最も小さい数字を求めてくれる関数なのだが、財務モデルを構築する場合には、少しひねりの使いかたをする。
以下のようなイメージを持っていると応用がきくのでオススメだ。
min()関数のイメージ
一方の数字が動きながらも、常に小さい方を参照する場合に有効
(パターン①:一方の値が減少していく場合)
(パターン②:一方の値が増加していく場合)
今回の場合は、「返済に充当可能なキャッシュ分」だけ返済したいけど、借金残高を超えて返済なんかできないよねということなので、min()を使う
あとは、返済に充当可能なキャッシュも、借金の残高も、マイナスになることはないはずだ。そんなときにmin()関数と合わせて効果を発揮するのが、max()関数だ。
max(0, min())
このようにmaxとminを合わせて使うことで、モデルの数式はかなりシンプルになる。
重要なので付け加えておくと、max関数はマイナスを除外するためだけに使っているので、あまり難しく考えないでほしい。
次は、期限弁済の金額を、毎年1000をベタ打ちにしてしまっていたので修正する。
このままでは、返済後も1000毎年払うことになる。
ここでも先程の関数を活用できる。少し考えてみてほしい。
まとめるとこうだ。
【思考プロセス】
・期限弁済の金額は、期首の借入金残高が1,000を超えていたら、1,000払う
・1,000未満なら、その残高分払うということになる
ということは、min()が使えるではないか
このminやmaxを使いこなすことで、if(●が0以上のとき)などの関数を使って、「あとから見ると複雑でよくわからん」という状況を回避できる
これで完成だ。
余裕があったので追加で3,636を返済した結果、次の年の返済額が小さくなり、
わずか2年で返済を終えてしまったということだ。
なぜエクセルが循環するのか?
ご存知の方も多いかもしれないが、LBOモデルでキャッシュスイープモデルを作成した場合、エクセルが必ず循環する。
普通は循環するエクセルを作ることはダメだとされているが、LBOモデルでは循環は当たり前であり、循環するモデルを操れるようになってこそ一人前といえるのだ。
ただ、なぜ循環するのかも分からないようではダメなので、その理由を簡単にまとめた。
【LBOモデルが循環する理由】
①支払利息→当期純利益
②当期純利益→余剰キャッシュフローによる返済額
③余剰キャッシュフローによる返済額→借入金残高
④借入金残高→支払利息
⑤支払利息→当期純利益
ある日、私は当期利益くんに尋ねてみた。
俺:「なぜそんなに大きいんだね?」
当期利益くん:「だって支払利息が小さかったからよ」
俺:「なぜそんなに小さいんだね?」
支払利息くん:「だって借入残高が小さかったからなのだ」
俺:「なぜそんなに小さいんだね?」
借入残高くん:「余剰キャッシュフローによる返済額が大きかったからさ」
俺:「なぜそんなに大きいんだね?」
余剰キャッシュフロー返済額くん:「当期利益が大きかったからだべ」
俺:「なぜそんなに大きいんだね?」
当期利益くん:「さっきもいったじゃない。支払利息が小さかったから」
俺:「・・・・誰が原因やねん」
循環してもエクセルの反復計算をオンにすることで、正しくモデルが回る。だが、ひとたび変な文字を入れてしまったり、エラーになるようなことをすると、エラーが循環し、もとに戻せなくなる。
これが循環の落とし穴だ。
こうなるど、エクセルが壊れてしまうので、いくらいじっても戻すことは不可能だ。だが、一つだけ直す方法があるので、次の章で解説する。
壊れないエクセルの作り方
再度、LBOモデルが循環する理由をみてほしい。
【なぜ循環するのか】
①支払利息→当期純利益
②当期純利益→余剰キャッシュフローによる返済額
③余剰キャッシュフローによる返済額→借入金残高
④借入金残高→支払利息
⑤支払利息→当期純利益
このどこかに変な値を一度でも入れてしまうと、全て変な値になり、
エクセルが壊れてしまう。
では一体どうすればよいのか。
答えは簡単だ。循環をいつでも切れるようにしておくことだ。
循環を切ると、通常の参照になるため、正しい値を入れなおせばエクセルは復活するのだ。
つまり、どれか一つを参照ではなく、ベタ打ちの値にすればよい。
では、どの値を固定するのが最もモデル上で自然だろうか。
それは、余剰キャッシュフローによる返済額を0にするが正解だ。
なぜなら最も0にしてもモデルに影響を及ぼさないからだ。だって、0にしたところで、余剰キャッシュフローが0、すなわち、追加で借入金を返済しないモデルになるだけだ。
【循環の解消】
①支払利息→当期純利益
②当期純利益→余剰キャッシュフローによる返済額(当期利益から余剰キャッシュフローを算出するのをやめることで、循環しなくなる)
③余剰キャッシュフローによる返済額(=0)→借入金残高
④借入金残高→支払利息
⑤支払利息→当期純利益
試しに0をベタ打ちしてみると、エラーが一瞬で解消される。
毎回ベタ打ちにするのも面倒だということで、循環させるか否かのスイッチを作るのが一般的だ。
式 = if($E$42=”YES”, G41*G43, 0)
こうすることで、仮にエクセルが壊れてしまった場合でも、循環を切ることにより、エクセルが復活するのだ。
これがないと、エラーが永遠に循環し続けて壊れたままになるため、実務では致命的だ。
期間限定無料:EXCELファイルプレゼント
Excelファイル(LBOモデル)を期間限定で無料で差し上げております。
この記事をtwitter(弊社が確認できるアカウントに限る)にて記事の感想を添えてシェアいただき、以下の「Excelをダウンロード」からシェアいただいた際のスクリーンショット画像をお送りください。
※twitterのアカウント審査を通過された方のみ、送付させていただきます。