Arbitrage Opportunity
ファイナンスのお話です。
Theory of Financeという授業で扱ったArbitrageに関して。
すごく乱暴かつ簡単に言ってしまうと、理論上確実に儲けられる、ということです。
それを、僕が何より崇拝するソフトウェアであるエクセル大先生にモデル化していただこうとしたものです。
内容を簡単に説明すると、「市場に存在するassetを上手く組み合わせると、出費がゼロで収入が正もしくは出費が負で収入がゼロというポートフォリオを組むことが出来る可能性がある(もちろん、空売りを含む)。」
つまり、リスクがゼロで儲けが出る、という非常に(゚д゚)ウマーなお話です。
概念を小難しく説明すると、
A = M個のassetとS個の状態からなるS * M 行列の利得行列
P = M個のassetの値段を示すベクトル
φ = Arbitrageの存在を調べるためのベクトル
φ * A = P
上記式を満たすような正のφが存在しない時、(゚д゚)ウマーな状態になります。
これを現実世界に応用するため、実際の株価とその分散から最適なポートフォリオを組むためのエクセルツールが出来るはず!と甘い考えを抱いたわけです。
エクセルでモデル化できないかと考えた結果、10分ほどで「モデル化できる」という結論に達し、これは相当役に立つのではないかとニヤニヤしたのですが、それからが問題でした…。
モデルとしては、現実の株価と分散から正規乱数を元に、将来株価の予想を作ります (将来株価のベクトル)。
それをいくつか組み合わせてポートフォリオを組み、行列Aを生成します。
そして現在株価を元に行列式を解いてφを求め、Arbitrageが存在するか調べます。
詳しい説明は、エクセルファイルの中に書いてあります。
しかし大きな問題があって、ワークシート関数だけでは解決しませんでした。
個人的にエクセルを扱うときの条件は「関数のみで簡単に扱えて拡張性がある」と言うこと。
つまりマクロやソルバーを使わず、また何を行っているのかが明確で、さらに使いたい人の都合に合わせてある程度柔軟に対応できる。
普通は関数だけでシンプルに作るならこれは達成されるのですが、今回はエクセルの制約下で「拡張性」を重視した結果、全てマクロ化するという悲しい事態になってしまいました。
しかも問題のせいで結果が本質から離れたものになりがちになったため、お世辞にもよいモデルとはいえません。
問題は、エクセルの関数で「変数セル参照」が出来ないことと、エクセルでは連立方程式を解く際に制約があることの二点。
エクセルの関数では"Cells(i, j); i=0,1,2,3... ; j=0,1,2,3..."というような変数に基づいたセルを参照させることが出来ません。普段ならvlookup関数やif関数、is関数を組み合わせて誤魔化せるのですが、今回はそうも行きませんでした。
そしてエクセル関数では解が一つに定まらない連立方程式 (例えば、未知数が3つで式が2つの連立方程式) を解くことが出来ません。これは逆行列を使わなければ連立方程式が解けない、という制約のせいです。ソルバーを使えば恐らくこの問題は解決できますが、ポリシーに反するので却下。この制約のため、S = Mでない行列Aは検証できず (S >> Mの場合がより現実世界に近い)、同様にして最適なポートフォリオを導出することも出来ない場合があります。
マクロを使わない場合、SとMの数が固定なら一定の条件下で解くことが出来ます。参照ページだけ挙げておくと、エクセルを使った行列式の解き方、関数で自動ソートさせる方法 (回答4)。
また問題はエクセル以外にも。
現在の株価から将来の株価を示すベクトルを各株ごとに生成するとき、お互いの相関を考慮に入れることが出来ません。
例えば、A社の株が上がるとき、B社は反対に下がって、C社は変化しない、と言う風に相関がお互いに異なる訳ですが、3つ以上の関係を別個に考慮した上で乱数によって利得行列を作成することはほぼ不可能かと思われます。
そのため便宜的に「全ての株価は同様に景気に相関する」という仮定を置いています。
つまり、経済の状態が最も悪いときには全部の株が最悪の値段、2番目に悪いときには全てが2番目に低い値段…という形で便宜的に相関させています。そうでなければ株価が完全にランダムになってしまい、各株価の相関係数がほぼゼロなので、現実世界から離れます。
この仮定を現実的なものにするためには、産業ポートフォリオもしくはS&P500のような総合指標を要素として、モデルの中のポートフォリオに組み込むのが良いかと思われます。そうすればいくらか矛盾が減るはずかと。
しかし、この仮定によってポートフォリオの意味が薄れるので、モデルの正当性が下がります。
ソートを行わなければ相関係数がほぼゼロのままポートフォリオを組むことが出来ますが、あまりありえない話ですし、それでポートフォリオを組んだとしても単なる運試し程度にしかなりません…。
つまり、実際の利得行列が分からないと、説得力のあるモデルで現実レベルに近づけることは難しいということでしょうか。
とまぁここまで書いて、こんな文章を読んでも絶対理解できないだろうなぁと思った次第です。
この授業のおかげでファイナンスにかなり興味を持つことができたのですが、その場合僕がやりたいのは純粋なクオンツであってその他の部署ではないことになります。
Asset Pricingをするような部署があっても、どうせ何かしらソフトウェアがあって自動計算した上で状況を考慮して値段を調整、と言うようなレベルだろうしそれなら他の何をやっても変わりありません。
しかしそのクオンツは通常理系の数学科出身のような方々に牛耳られていて、とても私の数学の及ぶところではありません。
さてどうしましょう。