多くの市場参加者は、市場平均に負けると言われています。
アクティブ投資家の大多数が市場平均に負け、その負け分が少数の大勝ち投資家の利益になります。シミュレーションの結果を参考に、その仕組みを説明します。
シミュレーション
四半期での平均リターンが2%、リスク20%で資産運用を行う10,000人の投資家がいたとします。彼らがそれぞれ運用を行った時、何が起こるのかを乱数シミュレーションした結果が下記の動画です。
t は時間(運用した四半期の数)、横軸がリターン(何倍か)、ave.は全投資家の平均パフォーマンスで市場平均と呼ばれる値、maxは最も成績の良い投資家の運用パフォーマンス、loserは市場平均に負けた投資家の人数です。
多数が負け、少数が大勝ちする
アクティブ投資家の大多数が市場平均に負け、その負け分が少数の大勝ち投資家の利益になります。
多数の負組投資家
多くの投資家は市場平均に届きません。時間が経つにしたがって、市場平均に負ける投資家は増え続けます。シミュレーションでloserの人数が増え続ける事からも分かります。
四半期の市場平均に対する勝率は50%あるものの、負けて元本を減らした後に、勝っても元本が減った分だけ上昇相場の恩恵を享受できないため、ジリ貧になるわけです。負ければ市場平均に追いつけなくなりやすい事が、市場平均に負ける投資家が増える原因です。
少数の大勝ち投資家
多くの投資家が負ける一方で、一部の投資家は勝ち、増やした元本で更に勝ち、大儲けをします。シミュレーションでも最終的に20倍を超える運用成果を残す者が出てきます。一部の大勝ち投資家のリターンを支えているのは、先述した多くの負組み投資家です。
また、この一部の大勝ち投資家の成績は市場平均の値を引っ張り上げます。人数が少ないですが、成績の平均からの乖離があまりに大きいため、平均値をプラス側に寄せる影響が少なからずあります。
現実の市場参加者
実際の市場参加者の成績分布も、シミュレーションと概ね似た構造になっています。多くの市場参加者は市場平均に負け、少数の投資家が市場平均に対して大勝ちします。そうして市場平均は形成されます。
勿論、実際の市場平均は上がったり下がったりするものです。その影響までを考慮するならば、動画の平均値からの乖離をアクティブリターン(ポートフォリオのリターンとベンチマークのリターンとの差:超過リターンとも呼ばれる)と読み替えて考えます。
参考・関連
対数正規分布
ちなみにこの成績分布は横軸を対数表記にすると、正規分布になります。そのためこの分布は、対数正規分布(log-normal distribution)と呼ばれています。
最頻値<中央値<平均値(期待値)は、対数正規分布の特徴の一つです。
インデックス投資
多数の投資家に勝つ、勝率の高い資産運用を行ないたい場合はインデックス投資が有効です。市場平均(つまり時価総額加重平均型指数)に連動するタイプのインデックス・ファンドを保有すれば、比較的良い成績で資産運用を行う事が可能になります。
集計・表示のソースコード
シミュレーションを集計・表示する際に用いたコードを公開します。個別の投資家の成績が入ったbbb.txtのファイルをPAWで読み込み、プロットしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
macro main opt grid global/create hid global/create vn zone 1 1 v/read q1,a1,w1,s1,e1,d1,r1,f1,t1,g1,y1,h1,u1,j1,i1,k1 bbb.txt hid = 1; vn = q ; exec fil1d ;wait hid = 2; vn = a ; exec fil1d ;wait hid = 3; vn = w ; exec fil1d ;wait hid = 4; vn = s ; exec fil1d ;wait hid = 5; vn = e ; exec fil1d ;wait hid = 6; vn = d ; exec fil1d ;wait hid = 7; vn = r ; exec fil1d ;wait hid = 8; vn = f ; exec fil1d ;wait hid = 9; vn = t ; exec fil1d ;wait hid =10; vn = g ; exec fil1d ;wait hid =11; vn = y ; exec fil1d ;wait hid =12; vn = h ; exec fil1d ;wait hid =13; vn = u ; exec fil1d ;wait hid =14; vn = j ; exec fil1d ;wait hid =15; vn = i ; exec fil1d ;wait hid =16; vn = k ; exec fil1d return macro fil1d import * vn1 = [vn]1 ; hid1 = [hid] + 0 *パラメータ取得 sig mean1=vsum([vn1])/nco([vn1]) sig max1=vmax([vn1]) mean = $format(mean1(1),F4.2) max = $format(max1(1),F3.1) sig loser1=vsum([vn1] lt [mean]) loser=loser1(1) title t=[hid] htitle= ave.=[mean] max=[max] loser=[loser] 1d [hid1] [htitle] 100 0 4 v/hfill [vn1] [hid1] set hcol 1 ; h/pl [hid1] ; atitle 'return' set plci 2 ; set lwid 5 ; line [mean] 0 [mean] 3000 set txci 2 ; text [mean] 10 ' ave. ' 0.5 set txci 1 ; pic/pri [hid].gif return |