マクロ経済指標に基づく市場予測

 

したがって、タスクは、利用可能な経済指標に基づいてS&P500インデックスを予測することです。

ステップ1:インジケーターを見つけます。指標はここで公開されています:http://research.stlouisfed.org/fred2/それらの240,000があります。最も重要なのはGDPの成長です。この指標は四半期ごとに計算されます。したがって、私たちのステップ-3ヶ月。短期間のすべての指標は3か月間再計算され、残り(年次)は破棄されます。また、米国を除くすべての国の指標と、深い歴史(少なくとも15年)がない指標も破棄します。そのため、骨の折れる作業で、多数のインジケーターを除外し、約1万のインジケーターを取得します。 S&P 500指数を1〜2四半期先に予測するというより具体的なタスクを策定し、四半期ごとに1万の経済指標を利用できるようにします。私はMatLabですべてを行いますが、Rでは可能です。

ステップ2:微分と正規化により、すべてのデータを定常形式に変換します。ここには多くの方法があります。主なことは、変換されたデータから元のデータを復元できることです。定常性がなければ、モデルは機能しません。転換前後のS&P500シリーズを以下に示します。

ステップ3:モデルを選択します。多分ニューラルネットワーク。多変数線形回帰を行うことができます。多変数多項式回帰を行うことができます。線形モデルと非線形モデルをテストした後、データのノイズが非常に大きいため、非線形モデルを入力しても意味がないという結論に達しました。 y(x)グラフ(y = S&P 500、x = 1万の指標の1つ)は、ほぼ円形の雲です。したがって、タスクをさらに具体的に定式化します。多変数線形回帰を使用して、四半期ごとに1万の経済指標を持ち、1〜2四半期先のS&P500インデックスを予測します。

ステップ4: 1万から最も重要な経済指標を選択します(問題の次元を減らします)。これは最も重要で難しいステップです。 S&P 500の歴史を30年(120四半期)と考えているとしましょう。 S&P 500をさまざまな種類の経済指標の線形結合として表すには、この30年間のS&P500を正確に説明するための120の指標があれば十分です。さらに、120個のインジケーターと120個のS&P 500値の正確なモデルを作成するために、インジケーターは絶対に任意にすることができます。したがって、入力の数を記述された関数値の数より少なくする必要があります。たとえば、10〜20個の最も重要な入力インジケーターを探しています。膨大な数の候補ベース(辞書)から選択された少数の入力でデータを記述するこのようなタスクは、スパースコーディングと呼ばれます。

予測子入力を選択する方法はたくさんあります。私はそれらすべてを試しました。主な2つは次のとおりです。

  1. 10,000個のデータすべてをS&P 500の予測力で分類します。予測力は、相関係数または相互情報量で測定できます。
  2. 下部にある1万の指標すべてを調べて、誤差が最小のS&P500を表す線形モデルy_mod= a + b*x1を与える指標を選択します。次に、残りの10,000 -1インジケーターを列挙して、2番目の入力を再度選択します。これにより、残りのy --y_mod = c + d*x2が最小のエラーで記述されます。等。この方法は、ステップワイズ回帰またはマッチング追跡と呼ばれます。

S&P500との相関係数が最も高い上位10の指標は次のとおりです。

シリーズID遅れCorrミュート情報
「PPICRM」 2 0.315 0.102
「CWUR0000SEHE」 2 0.283 0.122
'CES1021000001' 1 0.263 0.095
「B115RC1Q027SBEA」 2 0.262 0.102
'CES1000000034' 1 0.261 0.105
「A371RD3Q086SBEA」 2 0.260 0.085
「B115RC1Q027SBEA」 1 0.256 0.102
「CUUR0000SAF111」 1 0.252 0.117
「CUUR0000SEHE」 2 0.251 0.098
「USMINE」 1 0.250 0.102

S&P500との相互情報量が最も多い上位10の指標は次のとおりです。

シリーズID遅れCorrミュート情報
「CPILEGSL」 3 0.061 0.136
「B701RC1Q027SBEA」 3 0.038 0.136
「CUSR0000SAS」 3 0.043 0.134
「GDPPOT」 3 0.003 0.134
「NGDPPOT」 5 0.102 0.134
「OTHSEC」 4 0.168 0.133
'LNU01300060' 3 0.046 0.132
「LRAC25TTUSM156N」 3 0.046 0.132
「LRAC25TTUSQ156N」 3 0.046 0.131
「CUSR0000SAS」 1 0.130 0.131

ラグは、シミュレートされたS&P 500シリーズに対する入力シリーズの遅延です。これらの表からわかるように、最も重要な入力を選択する方法が異なると、入力のセットも異なります。私の最終的な目標はモデルエラーを最小限に抑えることなので、2番目の入力選択方法を選択しました。すべての入力の列挙と、エラーが最小の入力の選択。

ステップ5:モデルの誤差と係数を計算する方法を選択します。最も単純な方法はCOEX法です。そのため、この方法を使用した線形回帰が非常に人気があります。 RMS法の問題は、外れ値に敏感であるということです。これらの外れ値は、モデルの係数に大きく影響します。この感度を下げるために、誤差の二乗和の代わりに絶対誤差値の和を使用して、最小係数(LSM)またはロバスト回帰の方法を導き出すことができます。この方法には、線形回帰とは異なり、モデル係数の分析ソリューションがありません。通常、モジュールは滑らかで微分可能な近似関数に置き換えられ、解は数値的方法で実行され、長い時間がかかります。私は両方の方法(リーン回帰とMHM)を試しましたが、MHMの利点にはあまり気づきませんでした。 MHMの代わりに、私は回り道をしました。定常データを微分して取得する2番目のステップでは、非線形正規化操作を追加しました。つまり、元の系列x [1]、x [2]、... x [i-1]、x[i]...は最初に差分系列x[2]-x[1]に変換されます。 .. x [i] -x [i-1] ...次に、各差をsign(x [i] -x [i-1])* abs(x [i] -x [ i-1])^ u、ここで0 <u<1。u=1の場合、外れ値に対する感度を備えた従来のCOSEメソッドを取得します。 u = 0では、入力系列のすべての値が、外れ値がほとんどないバイナリ値+/-1に置き換えられます。 u = 0.5の場合、MNMに近いものが得られます。 uの最適値は、0.5から1の間のどこかにあります。

データを定常形式に変換するための一般的な方法の1つは、系列の値をこれらの値の対数の差に置き換えることです。 log(x [i])-log(x [i-1])またはlog(x [i] / x [i-1])。私の場合、このような変換を選択するのは危険です。1万エントリのディクショナリには、ゼロと負の値を持つ行が多数あるためです。対数には、外れ値に対するRMSメソッドの感度を下げるという利点もあります。基本的に、変換関数sign(x)* | x | ^ uはlog(x)と同じ目的ですが、ゼロと負の値。

ステップ6:新しい入力データを代入し、前の履歴セグメントで線形回帰によって検出されたものと同じモデル係数を使用してモデル出力を計算することにより、モデル予測を計算します。ここで重要なのは、経済指標とS&P 500の四半期値がほぼ同時に(3か月の精度で)得られることです。したがって、次の四半期のS&P 500を予測するには、S&P 500の現在の四半期値と、少なくとも1四半期遅れたエントリ(Lag> = 1)の間にモデルを構築する必要があります。 S&P 500を4分の1先に予測するには、S&P 500の現在の四半期値と、少なくとも2四半期遅れたエントリ(ラグ> = 2)の間にモデルを構築する必要があります。等。予測の精度は、遅延が2を超えると大幅に低下します。

ステップ7:前の履歴の予測の精度を確認します。上記の元の手法(各入力を前の履歴に入れ、最小のMSDを与える入力を選択し、その入力の新しい値から予測を計算する)は、ランダムまたはヌルの予測よりもさらに悪い予測MSDを生成しました。私は自分自身にこの質問をしました:過去にうまく適合する入口が将来のために良い予測可能な能力を持っているべきなのはなぜですか?既知のデータの最小の回帰誤差に基づくのではなく、以前の予測誤差に基づいてモデル入力を選択することは理にかなっています。

最後に、私のモデルは次のように段階的に説明できます。

  1. stlouisfedからの経済データのアップロード(約1万の指標)。
  2. Preobrazeumデータを静止形式に変換して正規化します。
  3. RMS法(線形回帰)によって分析的に解かれたS&P500インデックスの線形モデルを選択します。
  4. 履歴の長さ(1960年から2015年第2四半期)を選択し、トレーニングセグメント(1960年から1999年第4四半期)とテストセグメント(2000年第1四半期から2015年第2四半期)に分割します。
  5. 1960 + N + 1から予測を開始します。ここで、N * 4は既知の四半期S&P500値の初期数です。
  6. 最初のN個のデータで、各経済指標に対して線形モデルが作成されます。y_mod= a + b * xここで、y_modはS&P 500モデルであり、xは経済指標の1つです。
  7. 各モデルでN+1バーを予測します。
  8. モデルごとにN+1バーの予測誤差を計算します。私たちはこれらの間違いを覚えています。
  9. 既知のS&P 500値の数を1つ増やします。つまり、 N + 1で、トレーニングセグメントの最後(1999年第4四半期)に到達するまで手順6〜9を繰り返します。このステップでは、各経済指標について1960 +N+1から1999年第4四半期までの予測誤差を保存しました。
  10. 履歴の第2期間(2000年第1四半期から2015年第2四半期)にモデルのテストを開始します。
  11. 10,000の入力のそれぞれについて、1960年から1999年第4四半期までの予測の標準誤差を計算します。
  12. 10,000の入力から、1960年から1999年第4四半期のRMS予測が最も低いものを選択します。
  13. 1960年から1999年第4四半期までの各経済指標について、線形モデルy_mod = a + b*xを作成します。
  14. 各モデルで2000年第1四半期を予測します。
  15. 前の時間間隔(1960年から1999年第4四半期)の予測のRMSが最も低い選択された入力の予測が、2000年第1四半期の主な予測として選択されます。
  16. 2000年第1四半期のすべての入力の予測誤差を計算し、それらを前の時間間隔(1960年から1999年第4四半期)の同じ入力のRMSに追加します。
  17. 2000年第2四半期に進み、予測の主な目標であるS&P 500の値が不明なテスト領域の終わり(2015年第2四半期)に到達するまで、手順12〜17を繰り返します。
  18. 前のセグメントの予測の標準偏差が最も低い入力によって作成された2000年第1四半期から2014年第4四半期の予測誤差を累積します。このエラー(err2)は、サンプル外の予測エラーモデルです。

要するに、予測子の選択は、以前のS&P500予測のRMSに依存します。先を見据えることはありません。予測子は時間の経過とともに変化する可能性がありますが、テストセグメントの終了時に、基本的に変化を停止します。私のモデルは、2015年第2四半期を予測する最初の入力として2クォーターラグのPPICRMを選択しました。1960年から2014年第4四半期に選択したPPICRM(2)入力を使用したS&P500の線形回帰を以下に示します。黒丸-線形回帰。マルチカラーの円-1960年の履歴データ-2014年第4四半期。円の色は時間を示します。


静止S&P 500予測(赤い線):

生の形でのS&P 500予測(赤い線):

グラフは、モデルが2015年の第2四半期のS&P500の成長を予測していることを示しています。 2番目の入力を追加すると、予測エラーが増加します。

1 err1 = 0.900298 err2 = 0.938355 PPICRM(2)

2 err1 = 0.881910 err2 = 0.978233 PERMIT1(4)

ここで、err1は回帰エラーです。 2番目の入力を追加すると減少することは明らかです。 err2は、二乗平均平方根予測誤差をランダム予測誤差で割ったものです。つまり、err2> = 1は、私のモデルの予測がランダムな予測よりも優れていることを意味します。 err2 <1は、モデルの予測がランダムな予測よりも優れていることを意味します。

PPICRM =生産者物価指数:さらなる処理のための原油

PERMIT1=建築許可によって認可された新しい民間住宅ユニット-1ユニットの構造物

上記のモデルは、このように言い換えることができます。私たちは1万人のエコノミストを集め、次の四半期の市場を予測するように依頼します。各エコノミストは自分の予測を思いつきます。しかし、彼らが書いた教科書の数や過去に獲得したノーベル賞の数に基づいて予測を選ぶ代わりに、私たちは彼らの予測を収集するのに数年待ちます。かなりの数の予測の後、どのエコノミストがより正確であるかを確認し、他のエコノミストが正確さで彼を超えるまで、彼の予測を信じ始めます。

Federal Reserve Economic Data - FRED - St. Louis Fed
Federal Reserve Economic Data - FRED - St. Louis Fed
  • fred.stlouisfed.org
Download, graph, and track 240,000 economic time series from 77 sources.
 
gpwr:
続きはこちら ...
米国政府全般、特に公開市場委員会が、金融市場に影響を与えるために、米国の労働市場や GDPに関する米国のマクロ経済統計を偽造・操作した疑いが何度も浮上しているのは、恥ずかしくないのだろうか?
 
Demi:
米国政府全般と公開市場委員会が、金融市場に影響を与えるために、米国の労働市場やGDPのマクロ経済統計を改竄・操作した疑いが繰り返し指摘されているのは、紛れもない事実だろうか。
そうですね、恥ずかしいですね。また、発表されたデータが、発表後に何度も調整されることにも違和感を覚えます。しかし一方で、トレーダーはアメリカ政府から与えられたデータに反応し、そのデータが改ざんされていようが、不完全であろうが、時期尚早であろうが、市場を一方向に動かしてしまうのである。だから、このデータをもとに相場を予測する手法は原理的にうまくいくはずだ。
 
gpwr:
そうですね、紛らわしいですね。また、発表されたデータは、発表後に何度も調整されることも混乱の元です。しかし一方で、トレーダーはアメリカ政府から与えられたデータに反応し、そのデータが改ざんされていようが、不完全であろうが、時期尚早であろうが、市場を一方向に動かしてしまうのである。だから、このデータをもとに相場を予測する手法は原理的にうまくいくはずだ。

S&Pにしか興味がないのか、それとも単なる例として捉えているのか?

ただ、S&Pは為替比率とは違い、独特の動き方をしています。

 
Urain:

S&Pにしか興味がないのか、それとも単なる例として捉えているのか?

ただ、S&Pは通貨間の関係とは異なり、特異な動きのパターンを持っているのです。

一般に公開されている)入力データを見つけやすいので、例として取り上げました。ロシア経済、為替など、何でもこの方法でモデル化することができる。市場価格はノイズが多いので、予測が最も難しい。物理過程の予測は、もっと簡単です。
 
gpwr:
そうですね、紛らわしいですね。また、発表されたデータは、発表後に何度も調整されることも混乱の元です。しかし一方で、トレーダーはアメリカ政府が出すデータに反応し、そのデータが改ざんされていようが、不完全であろうが、時期尚早であろうが、市場を一方向に動かしてしまうのである。だから、このデータをもとに相場を予測する手法は原理的にうまくいくはずだ。

よし、見てみよう。私もそうしてきました。

しつこいほどのヒント・ウォンテッド・フォワード・テスト

 
gpwr:

そこで、入手可能な経済データからS&P500指数を予測するという作業が発生します。

なかなか面白いテーマですね。雇用、新築住宅建設、新築住宅販売など、データファイルをもとに指標を作ってみたのですが、あるデータが株式市場と何らかの相関があることが肉眼でわかるんですね。しかし、為替市場との相関はないようです。アメリカの基本的な統計データを使ってみました。

データの種類を選びすぎではないか?私の考えでは、価値のあるデータから重要でないもの、つまり市場に影響を与えるものを除外する必要があります。

しかし、私は神経解析に詳しくない。読み始めたのですが、その機能についての明確な説明は見つかりませんでした。

 
回帰アルゴリズムにより、たとえ明らかな関係がなくても、あらゆるデータからあらゆる指標を予測することができます
 
forexman77:

なかなか面白いテーマですね。雇用、新築住宅建設、新築住宅販売など、データファイルをもとに指標を作ってみたのですが、あるデータは株式市場と何らかの相関があることが肉眼でわかるんですね。しかし、為替市場との相関はないようです。アメリカの基本的な統計データを使用しました。

データの種類を選びすぎではないか?私 の考えでは、価値のあるデータから重要でないもの、市場に影響を与えるものを除外する必要があります。


入力データの量が多いか少ないかは、すべて相対的なものです。

もうひとつは、もっと重要なことです。

すべての入力は、2つのカテゴリーに分類されます。

  • 対象変数に影響を与えるもの
  • 影響力のないもの、または影響力の弱いもの

私はあえて相関ではなく、影響という言葉を使いました。相関は常に何らかの値を持ち、値がNAであることは、生データが対象変数に与える影響を判断する上で基本となるため、空しいツールである。

ターゲット変数への影響を判断する上で、No(影響が少ない-定性的特性であることに注意)を持つ変数はノイズとなる。ここでの落とし穴は、アルゴリズムで決定されていないある量から始めると、このノイズが重要な変数を「詰まらせて」しまい、この集合量から「重要な」変数をアルゴリズムで取り出すことができなくなることである。

したがって、入力変数のリスト全体を手作業で見て、直感的に、あるいは他の何らかの考察に基づいて、"この入力変数は影響しそうだ、これは影響しなさそうだ "と判断しなければならない。

私は、変数の重要度を決定するアルゴリズムを数十種類知っており、私の論文や書籍にあるセット(最大100個の入力変数)で試したことがあります。結果は説明の通りです。あるリストを手動で選択し、それをアルゴリズムでフィルタリングして、リストを得た。そして、このようなリストの価値は基本的なもので、このような「影響を与える」入力データのセットを使ったモデル(3種類のモデルを使用)は、主要な問題である過学習の特性を 持たない。オーバーフィッティングは、「ノイズの多い」入力データを使用した場合の主な結果である。

PS.

私のモデル(randomForest、ada、SVM)には、定常性は関係ありません。

 
gpwr:

...

....定常性がなければ、どんなモデルも機能しない。

...

定常性の要件は非常に厳格であり、全く正当化できない。

.

そして、「非定常」モデルはうまく機能する ;)

 
transcendreamer:
回帰アルゴリズムは、たとえ両者の間に明確な関係がなくても、あらゆるデータに基づいてあらゆる指標を予測することができる
これは、回帰に限らず、ニューラルモデルやARMAなど、どのモデルにも言えることです。入力と出力の間に関係がなければ、どんなモデルでも予測値を生成するが、それは不正確なものでしかない。
理由: