割安株、成長株への長期投資によって資産倍増を目指す、真面目な長期投資家のサイト  株価低迷の今が株式投資のチャンスです

賢く儲ける株式投資

FX  エクセルまにあ  あらのHP   麻雀研究所  数独まにあ

株式投資トップ

はじめに

株式投資入門

株式投資講座

長期投資のすすめ

投資家心理

コラム

おすすめ証券会社

日経平均株価の分析

株の用語集

株の格言集

注目銘柄

おすすめの本

ポートフォリオ

これまでの投資成績

Counterpropagation Network による株価の予測

2004/12/6
 あら ( ara999 あっと gmail.com )

概要

ここでは人工ニューラルネットワークの一種である、Counterpropagation ネットワーク(CP)を用いて株価を予測した結果について示します。

Counterpropagation ネットワークとはKohonen ニューラルネットワークを拡張した、教師あり学習を行うニューラルネットワークであり、説明変数と目的変数との間の関係を表現する定量モデルを構築するために用いられています。Kohonen ニューラルネットワークは2次元平面上に配置されたニューロンに多次元情報を写像することにより非線形に次元縮約を行うニューラルネットワークであり、主にクラスタリングなどの目的でさまざまな分野で用いられています。サンプル間のトポロジカルな関係を維持した写像が可能であり、自己組織化マップ(SOM : Self Organization Map)とも呼ばれています。Counterpropagation ネットワークではこれに応答局面と呼ばれる層を加え、説明変数の写像と同時に対応する目的変数の写像を行います。これにより説明変数と目的変数との間の関係を表すネットワークが構築され、未知の説明変数に対応する目的変数値の定量的な予測が可能となります。

ここでは直前の10日間の株価の変動率を説明変数、その日の変動率を目的変数としてネットワークの構築を行います。そしてそのモデルを用いて将来の株価の予測が可能かどうかを検証していきます。

CPの学習および関連するデータ処理などについては私がC++で開発したプログラムを用いて行いました。そのモデルを用いたシミュレーションについては、カブロボ・コンテストのAPIを使用してJavaで行っています。またここで構築したモデルを搭載したロボットをカブロボ・コンテストへ参加させています。カブロボ・コンテストとは、カブロボ・コンテスト実行委員会によって2005/1/24-2/25に行われるソフトウェアロボットコンテストです。Javaを用いて株の売買アルゴリズムをプログラムし、その収益を競うコンテストです。

手法

学習データ

コンテストでは主催者が選択した40銘柄の売買が可能となっています。しかし選択される銘柄については事前に発表されず、どの銘柄が対象となるのかは分かりません。そこで日経平均株価を学習データとして用いることとしました。これにより個別銘柄のクセに影響を受けない一般的なモデルの構築が可能となります。

用いたデータは1991年1月から2004年6月までの13年6ヶ月分の日足データです。下にその期間中の日足チャートを示します。この期間の日経平均株価の解析についてはこちらを参照して下さい。

この期間の営業日数は3322日ですが、この中から500日を無作為に抽出し学習データとしました。目的変数は当日の株価変動率、説明変数は過去10日間の株価変動率としています。つまり説明変数は500*10の行列となります。

CPの学習

CPのマップは25*25の正方形としました。ニューロンの数は625ということになります。SOMを用いてクラスタリングを行う場合、ニューロンの数はサンプル数の半分程度にするのが一般的です。しかし今回の目的はCPによるマッピングであるため、サンプル数(500)よりもやや多くのニューロンを用いることで精度の高い内挿を実現することが可能ではないかと考えました。

マップの形状は正方形ですが、通常のSOMと同様にトーラス型を用いています。また各世代における各サンプルの学習順序はランダムとしました。近傍範囲の初期値は5、学習係数の初期値は1とし、共に世代に対して線形に減少させています。学習回数は1000回です。

結果と考察

CPの結果

学習を行った結果、得られたCPモデルのR2乗値は0.196となりました。相関係数Rは0.443です。下に実測値-計算値プロットを示します。横軸が実際の株価変動率、縦軸がCPモデルによる計算値で、共に%で示してあります。

相関係数は0.443であり、一般的な基準で言えば明確な相関があるとは言えません。しかしこちらで示しているように、日本の株式市場は高度に効率的であり、日経平均株価はおおむねランダムウォークであると言えます。このことを考慮するとこの結果はややオーバーフィッティングを起こしていると考えられます。分布が横に広がっていることからも明らかなように、学習率を上げて学習回数を増やすことによって相関係数を向上させることは可能です。しかしこれ以上の過学習はモデルの予測性を著しく悪化させることになると判断し、このモデルを採用することとしました。

以下に応答局面および各層の重みベクトルの等高線図を示します。

 

応答局面

 

1日前

2日前 3日前
4日前 5日前 6日前
7日前 8日前 9日前
10日前

縦軸と横軸のサイズは共に25であり、ニューロンに対応しています。各ニューロンの重みベクトルの要素を用いて等高線図を描いたものが上の図です。色の赤いところが値が大きいことを、青いところが小さいことを示しています。相関の高いモデルであれば、この等高線図を見ることで目的変数に影響を与えている要因を考察することが出来るのですが、このモデルでは明確な関係を見出すことは難しいようです。

予測結果

次にCPモデルを組み込んだJavaプログラムを作成し、カブロボの環境において予測実験を行った結果を示します。

取引可能なすべての銘柄について、各営業日における過去10日間の株価変動率を求めます。次にその株価変動率をCPマップへと発火させることによって、期待される当日の変動率を予測します。そして全銘柄の予測値を比較し、絶対値が最大となる銘柄を取引対象銘柄とします。予測値がプラスであれば全力買い、マイナスであれば全力売りを行います。次の営業日には反対売買を行った後、同じプロセスによって取引を行います。

この実験を1ヶ月を単位として、2004年4月から9月までのデータを用い6回行いました。実行開始時点での所持金は1000万円です。

各実行の終了時点での資金量を以下に示します。

2004/4 10,449,900
2004/5 11,984,000
2004/6 10,651,100
2004/7 10,091,900
2004/8 9,915,800
2004/9 9,816,600

一番成績の良かったのは5月で20%近い利益をあげています。逆に一番悪かったのは9月ですが2%の損失で済んでいます。

4月1日から9月30日まで連続して実行した場合には13,793,200円となりました。4月1日の日経平均株価が11,683円、9月30日が10,823円であることを考えれば、この結果は非常に良いものであると言えます。下にこの期間中の資金量の推移を示します。

まとめ

ここではCPネットワークを用いて過去10日間の株価変動率に基づく株価の予測実験を行いました。その結果、相関係数0.443のモデルが得られ、半年間の検証実験においては+38%というすばらしい結果が得られました。

もちろん、このモデルが株価形成における何らかの知識を獲得しており、有意なものであるという可能性もあります。しかし株式市場の効率性を考慮した場合、このモデルで恒常的に利益が得られるというのは受け入れがたい結果です。行動経済学によれば現状のほとんどのテクニカル分析は無意味なものであり、このようなモデルで将来の株価が予測できることはありそうもないことです。

ここでの検証にはわずか半年間の情報しか用いておらず、より多くの検証を行えばまた違った結果がでるのかもしれません。しかし、ここで行った実験の範囲では良好な結果が得られたわけであり、これはこれで意味のあることかも知れないと思っています。


エクセルまにあ あらのホームページ 賢く痩せるダイエット あらの(一人)麻雀研究所 数独まにあ お釣 り FX なたでぽぽ

割安株、成長株への長期投資によって資産倍増を目指す、真面目な長期投資家のためのサイト
 Copyright (C) 2005-2019 賢く儲ける株式投資 All Right Reserved