2020年 7月 の投稿一覧

【君の知らない複式簿記5】簿記とベクトル、行列、そしてテンソルへ

 

複式簿記における試算表や仕訳はベクトルとして表現できることを、以下の記事で紹介しました。

【君の知らない複式簿記4】簿記代数の教科書『Algebraic Models For Accounting Systems』とバランスベクトル

本記事では複式簿記の「ベクトル」を、「行列」や「テンソル」へと拡張するアイデアについて述べます。

 

バランスベクトルとその性質

複式簿記のベクトル表現は、勘定科目をベクトルの各要素に対応させ、借方に置かれる勘定の金額はプラス、貸方に置かれる勘定の金額をマイナスとして表すことで得られます。

\[ \begin{array}{cr|cr} \hline
資産 & a & 負債 & l\\
& & 純資産 & e\\
費用 & c & 収益 & r\\
\end{array}
= \left(
\begin{array}{r}
a\\
-l\\
-e\\
-r\\
c \end{array} \right)
\leftarrow \left(
\begin{array}{c}
資産\\
負債\\
純資産\\
収益\\
費用
\end{array} \right)\]

このようにして試算表をベクトル表示したものを、バランスベクトルといいます。

 

試算表の借方・貸方の合計額は一致するというのが、複式簿記の大原則です。つまり

\begin{equation} \begin{split}
借方合計金額&=貸方合計金額\\
\Leftrightarrow a+c&=l+e+r
\end{split} \end{equation}

が成り立ちます。右辺を移項すると

\begin{equation} \begin{split}
a-l-e-r+c&=0\\
\Leftrightarrow\left( 1,1,1,1,1\right)\left(
\begin{array}{r}
a\\
-l\\
-e\\
-r\\
c \end{array} \right)&=0
\end{split} \end{equation}

であることがわかります。2つ目の等式は\( \vec{1}\)ベクトル\(=\left(1,\cdots,1\right)\)とバランスベクトルの内積がゼロ、つまり両者が直交することを意味します。

 

バランス行列への拡張

\begin{equation} \begin{split}
b&=\left(
\begin{array}{r}
a_1\\
a_2\\
\vdots\\
a_n \end{array} \right)=\left( a_i\right)
\end{split} \end{equation}

をバランスベクトルとします。つまり\(\sum_{i=1}^na_i=0\)です。

バランスベクトル\( b_1,b_2,\cdots,b_m\)を横に並べて得られる行列

\begin{equation} \begin{split}
M&=\left( b_1,b_2,\cdots,b_m\right)\\
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\ \end{array}
\right)\\
&=\left( a_{i,j}\right)
\end{split} \end{equation}

は、複数のバランスベクトルを行列という形で同時に扱うことができ、バランスベクトルを拡張したものと言えます。これをバランス行列と呼ぶことにしましょう。バランス行列の各列は\( \vec{1}\)ベクトルに直交します。

バランス行列を使うことで、バランスベクトルでは扱えなかった異なる「軸」を扱うことができ、たとえば次のようなケースで活躍します。

  • 異なる「時間」のバランスベクトルを表す(バランスベクトルの時間変化)
  • 異なる「基準」のバランスベクトルを表す(いわゆるGAAP差)
  • 異なる「主体」のバランスベクトルを表す(例えば連結会計)

参考文献[1]ではここで示したようなバランス行列を「時間の経過順に並べたバランスベクトル」として導入し、ある会社のバランスベクトル(試算表)の推移を表すものとして紹介しています。

完全バランス行列

上述の

\begin{equation} \begin{split}
M&=\left( b_1,b_2,\cdots,b_m\right)\\
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\ \end{array}
\right)\\
&=\left( a_{i,j}\right)
\end{split} \end{equation}

は、各「列」がバランスベクトルになっていましたが、各「行」もまたバランスベクトルであるようなものを考えることもできます。すなわち

\begin{equation} \begin{split}
M&=\left( a_{i,j}\right)
\end{split} \end{equation}について、列(縦)方向の要素和がゼロに等しいというバランスベクトルの要件

\begin{equation} \begin{split}
\sum_{i=1}^na_{i,j}=0
\end{split} \end{equation}に加え、行(横)方向の要素和もゼロに等しいもの、つまり

\begin{equation} \begin{split}
\sum_{j=1}^ma_{i,j}=0
\end{split} \end{equation}であるようなものを特殊ケースとして考えることができます。

このように「列」方向にも「行」方向にもバランスベクトルであると考えることができるバランス行列を、完全バランス行列と呼ぶことにします。

例として、次のような\(3\times 3\)完全バランス行列を考えることができます。

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
100&-120&20\\
-50&80&-30\\
-50&40&10\\
\end{array}
\right)
\end{split} \end{equation}

この完全バランス行列の各列の要素はそれぞれ

\begin{equation} \begin{split}
\left(
\begin{array}{c}
資産a\\
負債l\\
純資産e\\
\end{array} \right)
\end{split} \end{equation}をイメージしており、第1列は「連結試算表」、第2列は「単体試算表の合計値(にマイナスをつけたもの)」、第3列は「連結修正仕訳(にマイナスをつけたもの)」をイメージしています。

つまり

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
連a&-単a&-修正a\\
連l&-単l&-修正l\\
連e&-単e&-修正e\\
\end{array}
\right)
\end{split} \end{equation}を意味しています。

列(縦)方向は資産=負債+純資産が成り立っており、バランスベクトルとなっていますが、行(横)方向についても、

\begin{equation} \begin{split}
連結ベースの資産=単体ベースの資産合計+資産に係る連結修正
\end{split} \end{equation}が成り立つので、バランスベクトルになっています。

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
100&-120&20\\
-50&80&-30\\
-50&40&-10\\
\end{array}
\right)
\end{split} \end{equation}を完全バランス行列として具体的に解釈するなら、単体ベースの合計試算表(第2列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
120 & 80\\
& 40
\end{array}
\end{split} \end{equation}に対して、連結修正仕訳(第3列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
-20 & -30\\
& 10
\end{array}
\end{split} \end{equation}を加味した結果、連結試算表(第1列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
100 & 50\\
& 50
\end{array}
\end{split} \end{equation}を得る、ということになります。

 

仕訳の仕訳

\begin{equation} \begin{split}
M
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\
\end{array}
\right)\\
&=\left( b_1,b_2,\cdots,b_m\right)\\
\end{split} \end{equation}が\(n\times m\)完全バランス行列であるとします。このとき\( b_1,b_2,\cdots,b_m\)は(列)バランスベクトルですが、これらの和について、

\begin{equation} \begin{split}
\sum_{j=1}^m b_j&=
\sum_{j=1}^m\left(
\begin{array}{c}
a_{1,j}\\
\vdots\\
a_{n_j}
\end{array}\right)\\
&=
\left(
\begin{array}{c}
\sum_{j=1}^ma_{1,j}\\
\vdots\\
\sum_{j=1}^ma_{n_j}
\end{array}\right)\\
&=\left(
\begin{array}{c}
0\\
\vdots\\
0
\end{array}\right)\\
&={\bf 0}
\end{split} \end{equation}が成り立っています。

完全バランス行列\(M=\left(b_1,\cdots,b_m\right),\sum b_j={\bf 0}\)という式は、バランスベクトル\(b=\left(a_1,\cdots,a_n\right),\sum a_i=0\)と構造が全く同じであることに気づくでしょう。

バランスベクトル\(b=\left(a_1,a_2,a_3\right)\)が、試算表や仕訳のT勘定図

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
a_1 & a_2\\
& a_3
\end{array}
\end{split} \end{equation}に対応していたように、完全バランス行列\(M=\left(b_1,b_2,b_3\right)\)も

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
b_1 & b_2\\
& b_3
\end{array}
\end{split} \end{equation}のようなT勘定図で表せます。さしずめこれは「完全バランス行列のT表現」とでも呼ぶべきものです。

バランスベクトルにおける各要素\(a_i\)は勘定の金額を表していましたが、T表現した完全バランス行列の各要素\(b_j\)はそれぞれがバランスベクトル、つまり試算表や仕訳です。

標語的なフレーズで表すとしたら、完全バランス行列のT表現は「仕訳の仕訳」と呼べるものです。

なぜなら、完全バランス行列\(M\)をT表現した時の各\(b_j\)がそれぞれT表現を持ち、

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
\begin{array}{r|r} \hline
a_{1,1} & a_{2,1}\\
& a_{3,1}
\end{array}
&
\begin{array}{r|r} \hline
a_{1,2} & a_{2,2}\\
& a_{3,2}
\end{array}\\
&
\begin{array}{r|r} \hline
a_{1,3} & a_{2,3}\\
& a_{3,3}
\end{array}
\end{array}
\end{split} \end{equation}と表せるからです。

 

バランステンソル

ベクトルは1次元配列、行列は2次元配列の一種です。3次元以上の配列は、テンソルと呼ばれます(数学的には別の定義があります、参考文献をご覧ください)。

バランスベクトルやバランス行列を考えることができるなら、バランステンソルも同様に考えうるのではないか、というのは素朴なアイデアです。

バランス行列\( M_1,M_2,\cdots,M_K\)を並べた

\begin{equation} \begin{split}
T=\left( M_1,M_2,\cdots,M_K\right)=\left( a_{i,j,k}\right)
\end{split} \end{equation}は3階のテンソルです。

\(M_k\)が(必ずしも完全バランス行列ではない)バランス行列であるとき、これらを並べてできる\(T\)を、バランステンソルと呼ぶことにしましょう。

この\(T\)をさらに並べて、より高階のテンソルも考えることができます。

バランスベクトルは1階のバランステンソル、バランス行列は2階のバランステンソルです。

バランス行列で異なる「軸」を考えることができたように、高階のバランステンソルを考えればより複雑な状況を表せると考えられます。

 

完全バランステンソル

バランス行列(2階バランステンソル)\(M=\left(a_{i,j}\right)\)について

\begin{equation} \begin{split}
\sum_i a_{ i,j  }=\sum_j a_{ i,j  }=0
\end{split} \end{equation}が成り立つとき、\(M\)を完全バランス行列と呼ぶのでした。

同様に、\(D\)階のバランステンソル

\begin{equation} \begin{split}
T^D=\left(a_{ i_1,\cdots,i_D  }\right)
\end{split} \end{equation}について、

\begin{equation} \begin{split}
\sum_{i_1} a_{ i_1,\cdots,i_D  }=\cdots=\sum_{i_D} a_{ i_1,\cdots,i_D  }=0
\end{split} \end{equation}が成り立つとき(つまりどのインデックス\(i_d\)をとってきても、それに関する要素和がゼロ)、\(T^D\)は\(D\)階完全バランステンソルと呼ぶのがふさわしいでしょう。

一般の\(D\)階のテンソル(\(D\)次元配列)\(\left(x_{ i_1,\cdots,i_D  }\right)\)について、\(d\)番目のインデックス\(i_d\)に関する要素和がゼロになるようなもの、つまり

\begin{equation} \begin{split}
\mathrm{ tensor:}~x_{ i_1,\cdots,i_D  } \mathrm{  s.t.}~\sum_{i_d}x_{ i_1,\cdots,i_D  }= 0
\end{split} \end{equation}はバランステンソルと呼んでよいもので、これを\(D\)階の\(d-\)バランステンソルと呼ぶことにしましょう。

バランス行列\(a_{i,j}\)で、列(縦、\(i\))方向にはバランスベクトルであって、行(横、\(j\))方向にはバランスベクトルではないものは、\(2\)階の\( 1-\)バランステンソルです。

 

 

参考文献

複式簿記の代数構造やバランスベクトルの性質について、この本に述べられている内容が最先端と言っていいでしょう。

 

テンソルを「\( n\)次元配列」と考えること、その応用についてはこちらが参考になります。高次元配列を関係データの分析に活用する方法が述べられています。

 

テンソルの直感的定義と具体的な計算方法については、こちらをおすすめします。基礎的な線形代数の理解があれば読めるでしょう。テンソルの計算方法や「アインシュタイン記法」「縮約」などのルールについて、詳しく説明されています。

 

テンソルの数学的な定義については、以下が詳しいです。由緒ある教科書であり、線形代数の基礎から学ぶことができます。

株価が2倍になる確率と1/2になる確率は同じか?

株価が2倍になる確率と1/2になる確率は同じになるのでしょうか?

株価(リターン)がランダムウォークであると仮定して、株価が2倍になる確率と1/2になる確率を計算してみます。

結論としては、両者は一致しません。

 

株価リターンのモデル化、ランダムウォーク

時点\( t\)における株価を\( S_t\)と表すことにします。現在時点は\( t=0\)と約束しましょう。現在株価は\( S_0\)と表すことができます。

時点\( t\)からほんの少し将来に向けての株価の変化を\( \mathrm{d}S_t\)と表します。\( \mathrm{d}S_t\)を\( S_t\)で割った\( \frac{ \mathrm{d}S_t}{ S_t}\)は、時点\( t\)からほんの少し将来に向けての株価リターンと解釈できます。将来に向けてのリターンですから、時点\( t\)において\( \frac{ \mathrm{d}S_t}{ S_t}\)がどんな値になるかはわからず、ランダムです(\( \frac{ \mathrm{d}S_t}{ S_t}\)は時間パラメタ\( t\)に関連した確率変数です)。

株価リターンはランダムウォークである、とよく言われますが、これを数学的に表すと、

\begin{equation} \begin{split}
\frac{ \mathrm{d}S_t}{ S_t}=\sigma \mathrm{d}z_t
\end{split} \end{equation}

となります。ここで\( \sigma\)は株価リターンの変動性を表すパラメタ(ボラティリティといい、正の定数)、\( \mathrm{d}z_t\)は「ランダムなノイズ」を表しており(標準ブラウン運動の微小増分です)、\(z_t \)は正規分布\( N(0,t)\)に従います。

株価をこのように表したとき、瞬間的な株価リターンがプラスになるかマイナスになるかは事前に予測できず、「瞬間的には」上がるか下がるかは\( \frac{ 1}{2 }\)です。

この設定のもとでは、将来時点\( t\)における株価\( S_t\)は以下のような式で表せます。

\begin{equation} \begin{split}
S_t=S_0 \mathrm{e}^{-\frac{ 1}{ 2}\sigma^2t+\sigma z_t}
\end{split} \end{equation}

この式を導くには「伊藤の公式」という確率解析の公式を利用します。計算方法は以下の記事を参照してください

伊藤の公式を直感的に理解する(追記:ブラック・ショールズモデル)

 

株価が倍になる確率、半分になる確率

さて、ここまでの準備を踏まえて「株価が2倍になる(正確には、上回る)確率」と「株価が1/2倍になる(正確には、下回る)確率」は等しいのか、計算してみましょう。

「株価が2倍になる確率」を「将来時点\( t\)における株価\( S_t\)が、現時点の株価\( S_0\)の2倍を超える(つまり\( S_t>2S_0\)となる確率」と解釈すると、以下のように計算できます。

\begin{equation} \begin{split}
P\left( S_t>2S_0\right)&=P\left( \frac{ S_t}{ S_0}>2\right)\\
&=P\left( \mathrm{e}^{-\frac{ 1}{ 2}\sigma^2t+\sigma z_t}>2\right)\\
&=P\left( -\frac{ 1}{ 2}\sigma^2t+\sigma z_t>\mathrm{ln}2\right)\\
&=P\left( \sigma z_t>\frac{ 1}{ 2}\sigma^2t+\mathrm{ln}2\right)\\
&=P\left(  z_t>\frac{ 1}{ 2}\sigma t+\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
\end{split} \end{equation}

\( z_t\)は正規分布\( N(0,t)\)に従う確率変数です。この確率変数には

\begin{equation} \begin{split}
P\left( z_t>a\right)=P\left( z_t<-a\right)
\end{split} \end{equation}

という性質が成り立つことが知られています。期待値が\( 0\)の正規分布はプラスとマイナスの領域が左右対称であることから来る性質です。この性質を上の式に当てはめると

\begin{equation} \begin{split}
P\left( S_t>2S_0\right)&=P\left(  z_t>\frac{ 1}{ 2}\sigma t+\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&=P\left(  z_t<-\frac{ 1}{ 2}\sigma t-\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&=P\left(  -\frac{ 1}{ 2}\sigma t+z_t<-\sigma t-\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&=P\left(  -\frac{ 1}{ 2}\sigma^2 t+\sigma z_t<-\sigma^2 t-\mathrm{ln}2\right)\\
&=P\left(  \mathrm{e}^{-\frac{ 1}{ 2}\sigma^2 t+\sigma z_t}<\mathrm{e}^{-\sigma t}\mathrm{e}^{\mathrm{ln}\frac{ 1}{ 2}}\right)\\
&=P\left(  \frac{ S_t}{ S_0}<\frac{ 1}{ 2}\mathrm{e}^{-\sigma t}\right)\\
&=P\left(  S_t<\frac{ 1}{ 2}S_0\mathrm{e}^{-\sigma t}\right)\\
\end{split} \end{equation}

が成り立ちます。

「株価が1/2倍(を下回る)になる確率」は\( P\left(S_t<\frac{ 1}{ 2}S_0 \right)\)ですから「株価が2倍(を上回る)になる確率」とは一致しません。\(\mathrm{e}^{-\sigma t} \)が掛かっているのが余計です。

つまり、株価リターンがランダムウォークであっても、「株価が2倍(を上回る)になる確率」と「株価が1/2倍(を下回る)になる確率」は一致しません。

 

どちらの確率のほうが大きいのか

「株価が2倍(を上回る)になる確率」と「株価が1/2倍(を下回る)になる確率」は一致しないことはわかりましたが、どちらの確率のほうが大きいのでしょうか。

「株価が2倍(を上回る)になる確率」の途中経過を工夫すると、

\begin{equation} \begin{split}
P\left( S_t>2S_0\right)&=P\left(  z_t>\frac{ 1}{ 2}\sigma t+\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&=P\left(  z_t<-\frac{ 1}{ 2}\sigma t-\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&=P\left(  -\frac{ 1}{ 2}\sigma t+z_t<-\sigma t-\frac{ 1}{ \sigma}\mathrm{ln}2\right)\\
&<P\left(  -\frac{ 1}{ 2}\sigma^2 t+\sigma z_t<-\mathrm{ln}2\right)\\
&=P\left(  S_t<\frac{ 1}{ 2}S_0\right)\\
\end{split} \end{equation}

という不等式が導けます。つまり「株価が2倍(を上回る)になる確率」よりも「株価が1/2倍(を下回る)になる確率」のほうが大きいです。

 

二つの確率が等しくなる条件

ただし、将来時点\(t \)がごく小さければ、両者は近似します。

\( t\)が十分小さい時、

\begin{equation} \begin{split}
P\left( S_t>2S_0\right)&=P\left(  S_t<\frac{ 1}{ 2}S_0\mathrm{e}^{-\sigma t}\right)\\
&\approx P\left(  S_t<\frac{ 1}{ 2}S_0\right)
\end{split} \end{equation}

が成り立ちます。

つまり、ごく短期間の話をするならば「株価が2倍(を上回る)になる確率」と「株価が1/2倍(を下回る)になる確率」は近似し、\( t\to0\)の極限で両者は一致します。

 

注意

この記事では「瞬間的な株価リターンが標準ブラウン運動の微小増分の意味でランダムウォークである」という前提のもとで、「株価が2倍(を上回る)になる確率」と「株価が1/2倍(を下回る)になる確率」は一致しない(後者のほうが大きい)ことを示しました。

当然ながら、前提が変われば結論は変わります。

例えば「将来のある時点までの株価リターンがランダムウォークである」という仮定をおけば、結論は変わります(それが学術的に広く受け入れられているかは別として)。

投資理論において「唯一絶対の正解はない」ことに注意してください。

 

参考文献