【文献】
熊添 勇人,進化型ニューラルネットワークとフル板情報による株価変動の分析,第79回(平成29年)全国大会講演論文集(2) 人工知能と認知科学,2017年 3月16日,pp.347-348
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、図に基づいて本発明の実施の形態を説明する。
【0014】
図1は、本発明の実施の形態に係る取引市場予測システムの構成を示すブロック図である。
図2は、
図1に示す取引市場予測システムにおけるデータフローについて説明する図である。
図1に示す取引市場予測システムは、1台の情報処理装置(パーソナルコンピュータなど)で構成されているが、後述の処理部やユニットを、互いにデータ通信可能な複数の情報処理装置に分散させてもよい。また、そのような複数の情報処理装置には、特定の演算を並列処理するGPU(Graphics Processing Unit)が含まれていてもよい。
【0015】
図1に示す取引市場予測システムは、金融取引市場などの取引市場における所定時点の価格などを予測するシステムであって、記憶装置1、通信装置2、ユーザーインターフェイス3、および演算処理装置4を備える。
【0016】
記憶装置1は、フラッシュメモリー、ハードディスクなどの不揮発性の記憶装置であって、各種データやプログラムを格納する。
【0017】
ここでは、記憶装置1には、取引市場予測プログラム11が格納されており、また、予測すべき銘柄を指定する銘柄設定データ12、およびパラメータデータセット13,14(後述のニューラルネットワークの結合係数(重み)、バイアスなどのパラメータなど)が必要に応じて格納される。
【0018】
通信装置2は、ネットワークインターフェイス、周辺機器インターフェイス、モデムなどのデータ通信可能な装置であって、必要に応じて、他の装置とデータ通信を行う。
【0019】
ユーザーインターフェイス3は、操作画面などを表示するディスプレイなどの表示装置3a、およびユーザー操作を受け付けるキーボードなどの入力装置3bを備える。
【0020】
なお、
図1では、ユーザーインターフェイス3は、演算処理装置4に、内部バスや周辺機器インターフェイスで接続されているが、その代わりに、例えば、演算処理装置4がネットワーク(インターネット、LAN(Local Area Network)など)上のサーバーに内蔵されている場合、ユーザーインターフェイス3は、そのサーバーと通信可能な端末装置のユーザーインターフェイスデバイスとされ、そのサーバーとその端末装置との間のデータ通信によって、演算処理装置4において実現される処理部やユニットのユーザーインターフェイスとして機能する。
【0021】
演算処理装置4は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)などを備えるコンピュータであって、プログラムを、ROM、記憶装置1などからRAMにロードしCPUで実行することで、各種処理部として動作する。
【0022】
ここでは、プログラム11を実行することで、演算処理装置4は、銘柄選択部21、入力データ取得部22、複数の銘柄にそれぞれ固有な銘柄時系列特徴抽出ユニット23−1〜23−N(N>1)、共通予測ユニット24、取引時間内学習処理部25、およびオフライン学習処理部26として動作する。
【0023】
銘柄選択部21は、入力装置3bに対するユーザー操作や銘柄設定データ12に従って、取引市場で売買可能な銘柄(株式銘柄、ETF銘柄、REIT銘柄、先物銘柄、オプション銘柄などを含む)から、予測すべき複数の銘柄を選択する。なお、予測すべき銘柄およびその数は任意であり、ユーザーが選択できる。
【0024】
この取引市場は、例えば証券取引市場であって、上述の銘柄は、例えば、ある企業の株式、つまり株式銘柄であり、例えば固有な銘柄コードで指定される。また、この取引市場は、為替市場、電力取引市場、商品取引市場、天候デリバティブ取引市場などといった他の取引市場でもよい。
【0025】
入力データ取得部22は、通信装置2を使用して、少なくとも、上述の選択された銘柄の履歴データを外部(外部サーバーなど)から取得し、履歴データの正規化処理を行う。
【0026】
履歴データは、銘柄ごとに、所定の複数時間帯の取引関連データを含む。第iの時間帯の取引関連データは、その時間帯の始値、終値、高値、安値、売買高(売買件数、売買数量など)、時間帯終了時点での板情報(つまり、買い気配値リストおよび売り気配値リスト)などといった特定の複数(K個)のデータ項目ν(i,1),・・・,ν(i,K)の値(実数値)を含む。なお、買い気配値リストは、所定の複数の買い気配値とその買い気配値での注文数量とを含む。また、売り気配値リストは、所定の複数の売り気配値とその売り気配値での注文数量とを含む。
【0027】
例えば、各時間帯が所定時間長Tを有し、履歴データは、連続するn個(n>1)の時間帯の取引関連データを含み、その場合、履歴データの時間ウィンドウサイズPは、T×nとなる。
【0028】
履歴データの正規化処理では、各データ項目ν(i,j)(なお、j=1,・・・,K)の値が、前段ニューラルネットワークの入力値として許容される範囲内になるように正規化される。
【0029】
例えばデータ項目ν(i,j)の値は、次式に従って正規化される。
【0030】
ν(i,j)=(ν(i,j)−ν(i−1,j))/ν(i−1,j)
【0031】
あるいは、例えばデータ項目ν(i,j)の値は、次式に従って正規化される。
【0032】
ν(i,j)=log(ν(i,j))−log(ν(i−1,j))
【0033】
複数の銘柄時系列特徴抽出ユニット23−1〜23−Nは、
図2に示すように、選択された複数の銘柄のそれぞれの正規化された履歴データを入力データとして前段ニューラルネットワークで、選択された複数の銘柄のそれぞれの時系列特徴ベクトル(埋め込まれた時系列に沿った複数の特徴ベクトル)を出力データとして計算する。
【0034】
つまり、銘柄時系列特徴抽出ユニット23−sは、特定の銘柄#sに対応し、特定の銘柄#sに対応する前段ニューラルネットワークで、その銘柄#sの履歴データから、その銘柄#sの時系列特徴ベクトルV(s,t)を計算する。具体的には、銘柄時系列特徴抽出ユニット23−sは、前段ニューラルネットワークのパラメータ(重みおよびバイアス)に基づいて順伝播の演算を行い、複数の時系列特徴ベクトルV(s,t)(t=1,・・・,P)を計算する。
【0035】
ここで、銘柄#sの時系列特徴ベクトルV(s,t)は、埋め込み表現データであって、時系列内の1つのタイミングt(t=1,・・・,P,P:時間ウィンドウサイズ)での、所定要素数のベクトルである。
【0036】
なお、V(s,t)の要素数および時間ウィンドウサイズP(つまり、銘柄時系列特徴抽出ユニット23−sの出力データとしてのV(s,t)の数)は、共通予測ユニット24の出力データ(予測データ)の精度や銘柄時系列特徴抽出ユニット23−1〜23−Nおよび共通予測ユニット24の計算量に応じて適宜設定される。
【0037】
このように、ある銘柄#s1の前段ニューラルネットワークに対しては、別の銘柄#s2(s1≠s2)の履歴データは入力されず、ある銘柄#s1の前段ニューラルネットワークからは、別の銘柄#s2(s1≠s2)の時系列特徴ベクトルV(s2,t)の要素は出力されない。つまり、選択された銘柄#1〜#Nの前段ニューラルネットワークは、互いに独立している。
【0038】
共通予測ユニット24は、複数の銘柄時系列特徴抽出ユニット23−1〜23−Nの時系列特徴ベクトルV(1,t),・・・,V(N,t)を連結した時系列tに沿った連結ベクトルVc(t)を入力データとして1つの後段ニューラルネットワークで、選択された複数の銘柄#1〜#Nのそれぞれの、予測時刻tpについての予測データPR(tp)を出力データとして計算する。具体的には、共通予測ユニット24は、後段ニューラルネットワークのパラメータ(重みおよびバイアス)に基づいて順伝播の演算を行い、予測データPR(tp)を計算する。
【0039】
つまり、その複数の銘柄#1〜#Nで構成される、取引市場の全体または一部が予測される。ユーザーが予測したい銘柄(例えば1つの銘柄)以外の銘柄についても併せて複数の銘柄#1〜#Nとして予測することで、銘柄間の関連性が反映されて予測および学習が実行されるため、ユーザーが予測したい銘柄の予測精度が向上する。
【0040】
銘柄#sの予測データは、予測時刻tp(履歴データの複数の時間帯の終了時点tから所定時間p後の時点t+p)での、価格Price(s,tp)、価格リターンRp(s,tp)、出来高Volume(s,tp)、価格トレンドTrendP(s,tp)、出来高トレンドTrendV(s,tp)などといった特定の1または複数のデータ項目の予測値を含む。なお、価格Price(s,tp)および出来高Volume(s,tp)以外のデータ項目の値は、以下のように、価格Price(s,tp)および出来高Volume(s,tp)などから得られる値である。
【0041】
また、出来高Volume(s,tp)は、例えば取引関連データの時間帯の時間長Tあたりの出来高、あるいは単位時間あたりの出来高である。
【0042】
なお、上述の所定時間pは、上述の履歴データの時間ウィンドウサイズP以下であることが好ましい。例えば、1日以内の取引時間内で予測が繰り返し行われる場合、所定時間pは、例えば1分〜60分のいずれかとされる。
【0043】
Rp(s,tp)=(Price(s,tp)−Price(s,t))/Price(s,t)
【0044】
TrendP(s,tp)=1(Rp(s,tp)≧0の場合),0(Rp(s,tp)<0の場合)
【0045】
TrendV(s,tp)=1((Volume(s,tp)−Volume(s,t))/Volume(s,t)≧0の場合),0((Volume(s,tp)−Volume(s,t))/Volume(s,t)<0の場合)
【0046】
つまり、前段ニューラルネットワークは、エンコーダ・デコーダモデルにおける、履歴データから特徴ベクトルを生成するエンコーダとされ、後段ニューラルネットワークは、エンコーダ・デコーダモデルにおける、特徴ベクトルから予測ベクトルを生成するデコーダとされている。このように、複数の前段ニューラルネットワークおよび1つの後段ニューラルネットワークによって1つのディープニューラルネットワークが構成される。
【0047】
各銘柄#sのための前段ニューラルネットワークは、それぞれ、時系列データ用の畳み込みニューラルネットワーク(CNN)、リカレントニューラルネットワーク(RNN)、並びに、時系列データ用のCNNおよびRNNを組み合わせたニューラルネットワークのいずれかであり、ここでは、長短期記憶(LSTM:Long Short-Term Memory)を含む。各銘柄#sのための前段ニューラルネットワークは、1または複数の中間層(隠れ層)を含む。
【0048】
後段ニューラルネットワークは、時系列データ用のCNN、RNN、並びに、時系列データ用のCNNおよびRNNを組み合わせたニューラルネットワークのいずれかであり、ここでは、長短期記憶(LSTM)を含む。後段ニューラルネットワークは、1または複数の中間層(隠れ層)を含む。
【0049】
取引時間内学習処理部25は、取引時間内に前段ニューラルネットワークおよび後段ニューラルネットワークの機械学習を行う。
【0050】
具体的には、共通予測ユニット24により得られた特定時点(予測時刻tp)の予測データについて、取引時間内学習処理部25は、(a)その特定時点(予測時刻tp)における予測データの各データ項目についての実測値を取引関連データから特定し、(b)予測データに設定されている各データ項目についての実測値と予測値とに対する所定の誤差関数に基づいて、誤差逆伝播法に従って、後段ニューラルネットワークおよび前段ニューラルネットワークのパラメータ(重みおよびバイアス)を更新する。
【0051】
なお、特定時点(予測時刻tp)での価格の実測値は、例えば、(a)上述の特定時点を取引関連データの時間帯の開始時点とし、取引関連データの始値を上述の実測値としてもよいし、(b)上述の特定時点を取引関連データの時間帯の終了時点とし、取引関連データの終値を上述の実測値としてもよいし、(c)上述の特定時点を取引関連データの時間帯の終了時点とし、その終了時点での最高売り気配値と最低買い気配値との平均値としてもよい。なお、最高売り気配値と最低買い気配値は、取引関連データにおける板情報から特定可能である。
【0052】
また、継続的に連続して履歴データを取得して予測データを計算する場合には、学習のために新たに履歴データを取得することなく、予測データの計算のために取得した履歴データにおける取引関連データを使用して、実測値を特定すればよい。
【0053】
オフライン学習処理部26は、予測すべき複数の銘柄に変更があった場合に、取引時間内の予測を行う前に、前段ニューラルネットワークおよび後段ニューラルネットワークの機械学習を行う。
【0054】
例えば、オフライン学習処理部26は、(a)取引時間開始前に、その取引時間で予測すべき複数の銘柄#1〜#Nを銘柄設定データ12やユーザー操作に基づいて特定し、(b)前回の取引時間(例えば前営業日の取引時間)内において得られた複数の履歴データを使用して、その複数の銘柄のために構成される複数(N個)の前段ニューラルネットワークおよび後段ニューラルネットワークの学習データセット(入力データとしての履歴データおよび教師データとしての予測時刻tpでの出力データの実測値)を生成し、(c)その学習データセットを使用して、取引時間内学習処理部25と同様にして後段ニューラルネットワークおよび前段ニューラルネットワークのパラメータ(重みおよびバイアス)を更新する。
【0055】
なお、各銘柄時系列特徴抽出ユニット23−sは、その銘柄時系列特徴抽出ユニット23−sの前段ニューラルネットワークのパラメータ値を、その銘柄時系列特徴抽出ユニット23−s(つまり、銘柄#s)のパラメータデータセット13として記憶装置1に記憶する。同様に、共通予測ユニット24は、後段ニューラルネットワークのパラメータ値をパラメータデータセット14として記憶装置1に記憶する。したがって、前回の取引時間での銘柄に対比して予測すべき複数の銘柄に変更があった場合、新たに追加された銘柄の前段ニューラルネットワークのパラメータデータセット13が、新たに追加された銘柄の前段ニューラルネットワークのパラメータの初期値としてセットされた後、オフライン学習処理部26は、複数の前段ニューラルネットワークおよび後段ニューラルネットワークの機械学習を行う。
【0056】
また、オフライン学習処理部26は、取引時間内学習処理部25での学習データセット数より多くの学習データセットを生成し、取引時間内学習処理部25での学習回数より多い回数、それらの学習データセットで前段ニューラルネットワークおよび後段ニューラルネットワークの機械学習を行う。
【0057】
次に、上記取引市場予測システムの動作について説明する。
図3は、
図1に示す取引市場予測システムの動作について説明するフローチャートである。
図4は、
図1に示す取引市場予測システムの取引時間内の動作について説明するタイミングチャートである。
【0058】
取引時間開始前に、銘柄選択部21は、予測すべき複数(N個)の銘柄#1〜#Nを選択し(ステップS1)、選択された銘柄#1〜#Nに対応する銘柄時系列特徴抽出ユニット23−1〜23−Nの初期設定を行う(ステップS2)。銘柄設定データ12が記憶装置1に記憶されている場合には、銘柄選択部21は、銘柄設定データ12により指定されている銘柄を選択する。なお、ユーザーがユーザーインターフェイス3を使用して銘柄設定データ12を事前に編集できるようにしてもよい。
【0059】
具体的には、銘柄選択部21は、各銘柄#sの前段ニューラルネットワークのパラメータの初期値をセットする。銘柄#sに固有の前段ニューラルネットワークのパラメータデータセット13が記憶装置1に記憶されている場合には、銘柄選択部21は、銘柄#sについてのパラメータデータセット13を読み出し、銘柄#sの前段ニューラルネットワークのパラメータの初期値としてセットする。
【0060】
さらに、共通予測ユニット24は、後段ニューラルネットワークの初期設定を行う(ステップS2)。具体的には、共通予測ユニット24は、後段ニューラルネットワークのパラメータの初期値をセットする。後段ニューラルネットワークのパラメータデータセット14が記憶装置1に記憶されている場合には、共通予測ユニット24は、そのデータセットを読み出し、後段ニューラルネットワークのパラメータの初期値としてセットする。
【0061】
次に、オフライン学習処理部26は、上述のように、前回の取引時間の履歴データを取得し、その履歴データに基づいて、後段ニューラルネットワークおよび今回選択された銘柄#1〜#Nの前段ニューラルネットワークの学習を行う(ステップS3)。
【0062】
取引時間開始後(ステップS4)、
図4に示すように、入力データ取得部22は、時間ウィンドウサイズPの履歴データを取得し、銘柄時系列特徴抽出ユニット23−1〜23−Nおよび共通予測ユニット24は、取得した履歴データの時点tから相対的に将来の時点(予測時刻tp)における、選択された銘柄#1〜#Nの予測データにおける各データ項目(価格など)の値を予測する(ステップS5)。各データ項目(価格など)の予測値は、表示装置3aで表示されたり、所定プロトコルで所定の宛先に送信されたりする。これにより、予測時刻tpより前の時点でユーザーにその予測値が報知される。
【0063】
なお、演算処理装置4は、銘柄時系列特徴抽出ユニット23−1〜23−Nの演算処理を逐次的に行ってもよいし、並列的に行ってもよい。また、演算処理装置4は、共通予測ユニット24の演算処理を逐次的に行ってもよいし、並列的に行ってもよい。
【0064】
そして、
図4に示すように、予測時刻tpが到来した後、ただちに、取引時間内学習処理部25は、その予測時点tpでの、予測データにおけるデータ項目の実測値を履歴データから特定し、その実測値と履歴データとを学習データセット(入力データと教師データとしての出力データとの対)として、後段ニューラルネットワークおよび前段ニューラルネットワークの学習を行い、後段ニューラルネットワークおよび前段ニューラルネットワークのパラメータを更新する(ステップS6)。
【0065】
以後、取引時間終了まで(ステップS7)、予測(ステップS5)および学習(ステップS6)が繰り返し実行される。
【0066】
そして、取引時間終了時に、銘柄選択部21は、その時点で選択されている銘柄を銘柄設定データ12として記憶装置1に記憶し、各銘柄時系列特徴抽出ユニット23−sは、その銘柄時系列特徴抽出ユニット23−sの前段ニューラルネットワークのパラメータ値を、その銘柄時系列特徴抽出ユニット23−s(つまり、銘柄#s)のパラメータデータセット13として記憶装置1に記憶し、共通予測ユニット24は、後段ニューラルネットワークのパラメータ値をパラメータデータセット14として記憶装置1に記憶する(ステップS8)。
【0067】
以上のように、上記実施の形態によれば、銘柄選択部21は、複数の銘柄を選択する。複数の銘柄時系列特徴抽出ユニット23−1〜23−Nは、選択された複数の銘柄のそれぞれの正規化された履歴データを入力データとして前段ニューラルネットワークで、選択された複数の銘柄のそれぞれの特徴ベクトルを出力データとして計算する。そして、共通予測ユニット24は、複数の銘柄時系列特徴抽出ユニット23−1〜23−Nの特徴ベクトルを連結したベクトルを入力データとして後段ニューラルネットワークで、選択された複数の銘柄のそれぞれの予測データを出力データとして計算する。
【0068】
これにより、各銘柄に固有の前段ニューラルネットワークは、その銘柄の履歴データに基づいて個別的に学習されていき、後段ネットワークは、複数の前段ニューラルネットワークから出力される銘柄ごとの時系列特徴ベクトルの相互関連性を考慮しつつ、複数の銘柄の予測データを出力する。このように、前段ニューラルネットワークは互いに独立しているため、予測や学習時の計算量が少なくなり、互いに関連する多くの銘柄の予測が精度良く行われる。また、銘柄ごとの前段ニューラルネットワークのパラメータを再利用することで、銘柄の入れ替え時の再学習が効率良く行われる。
【0069】
なお、上述の実施の形態に対する様々な変更および修正については、当業者には明らかである。そのような変更および修正は、その主題の趣旨および範囲から離れることなく、かつ、意図された利点を弱めることなく行われてもよい。つまり、そのような変更および修正が請求の範囲に含まれることを意図している。
【0070】
例えば、上記実施の形態において、取引市場予測プログラム11を、CD(Compact Disk)などの可搬性のあるコンピュータ読取可能な記録媒体に格納されていてもよい。その場合、例えば、その記録媒体から記憶装置1へプログラム11がインストールされる。また、プログラム11は、1つのプログラムでも、複数のプログラムの集合体でもよい。
【0071】
また、上記実施の形態において、複数回の取引時間を1つの取引時間として取り扱うようにしてもよい。例えば、株式市場において、午前の取引時間(前場)および午後の取引時間(後場)を、1つの(1日の)取引時間として取り扱うようにしてもよい。
【0072】
また、上記実施の形態において、銘柄選択部21は、取引時間外において、各銘柄#sについて前回の取引時間での所定の予測パフォーマンス値を予測データから計算し、その予測パフォーマンス値が所定の閾値以下である銘柄を、選択すべき銘柄から自動的に除外するようにしてもよい。例えば、予測パフォーマンス値として、予測データの特定のデータ項目(価格リターンRp(s,tp)など)の予測値と実測値との誤差の総和が計算される。
【0073】
また、上記実施の形態において、取引関連データには、板情報が含まれていなくてもよい。
【0074】
また、上記実施の形態において、記憶装置1の代わりに、ネットワーク上のストレージ(ファイルサーバー、クラウドストレージなど)を使用するようにしてもよい。
【0075】
また、上記実施の形態において、初期状態の(つまり、予測に未使用の)前段ニューラルネットワークおよび初期状態の(つまり、予測に未使用の)後段ニューラルネットワークに対して、既知の方法で事前学習を行うようにしてもよい。
【0076】
また、上記実施の形態において、今回の取引時間での予測対象の銘柄が、前回の取引時間での予測対象の銘柄から変更されていない場合には、オフライン学習処理部26は、ステップS3の学習を行わないようにしてもよい。