거시경제 지표에 기반한 시장 예측

 

따라서 작업은 사용 가능한 경제 지표를 기반으로 S&P 500 지수를 예측하는 것입니다.

1단계: 지표를 찾습니다. 지표는 http://research.stlouisfed.org/fred2/에서 공개적으로 사용할 수 있습니다. 그 중 240,000개가 있습니다. 가장 중요한 것은 GDP 성장률입니다. 이 지표는 분기마다 계산됩니다. 따라서 우리의 단계 - 3 개월. 더 짧은 기간의 모든 지표는 3개월 동안 다시 계산되고 나머지(연간)는 폐기됩니다. 또한 미국을 제외한 모든 국가의 지표와 역사가 깊지 않은 지표(최소 15년)는 버립니다. 따라서 힘든 작업으로 많은 지표를 걸러내고 약 10,000개의 지표를 얻습니다. 우리는 분기 기간 동안 10,000개의 경제 지표를 사용할 수 있도록 S&P 500 지수를 1~2분기 전에 예측하는 보다 구체적인 작업을 공식화합니다. R에서는 가능하지만 MatLab에서 모든 작업을 수행합니다.

2단계: 미분 및 정규화를 통해 모든 데이터를 고정된 형태로 변환합니다. 여기에는 많은 방법이 있습니다. 가장 중요한 것은 변환된 데이터에서 원본 데이터를 복원할 수 있다는 것입니다. 고정성이 없으면 어떤 모델도 작동하지 않습니다. 전환 전과 후의 S&P 500 시리즈는 아래와 같습니다.

3단계: 모델을 선택합니다. 아마도 신경망일 것입니다. 다변수 선형 회귀 를 수행할 수 있습니다. 다변수 다항식 회귀를 수행할 수 있습니다. 선형 및 비선형 모델을 테스트한 후 데이터가 너무 시끄럽기 때문에 비선형 모델을 입력하는 것이 의미가 없다는 결론에 도달했습니다. y = S&P 500이고 x = 10,000개 지표 중 하나인 y(x) 그래프는 거의 원형에 가까운 구름입니다. 따라서 우리는 작업을 훨씬 더 구체적으로 공식화합니다. 다변수 선형 회귀를 사용하여 분기별 10,000개의 경제 지표가 있는 S&P 500 지수를 1~2분기 전에 예측합니다.

4단계: 10,000에서 가장 중요한 경제 지표를 선택합니다(문제의 차원 축소). 가장 중요하고 어려운 단계입니다. S&P 500의 역사를 30년(120분기)이라고 가정해 보겠습니다. S&P 500을 다양한 종류의 경제 지표의 선형 조합으로 나타내려면 이 30년 동안 S&P 500을 정확하게 설명할 수 있는 120개의 지표로 충분합니다. 더욱이, 120개의 지표와 120개의 S&P 500 값의 정확한 모델을 생성하기 위해 지표는 절대적으로 무엇이든 될 수 있으므로 설명된 함수 값의 수 이하로 입력 수를 줄여야 합니다. 예를 들어, 우리는 10-20개의 가장 중요한 입력 지표를 찾고 있습니다. 엄청난 수의 후보 기반(사전)에서 선택된 적은 수의 입력으로 데이터를 설명하는 이러한 작업을 희소 코딩(sparse coding)이라고 합니다.

예측 변수 입력을 선택하는 방법에는 여러 가지가 있습니다. 나는 그들 모두를 시도했다. 다음은 주요 두 가지입니다.

  1. 10,000개의 데이터를 모두 S&P 500 예측력으로 분류하고 예측력은 상관계수나 상호 정보로 측정할 수 있습니다.
  2. 하단에 있는 10,000개의 지표를 모두 살펴보고 가장 작은 오차로 S&P 500을 설명하는 선형 모델 y_mod = a + b*x1을 제공하는 지표를 선택합니다. 그런 다음 나머지 10,000 -1 표시기를 열거하여 두 번째 입력을 다시 선택하여 오류가 가장 적은 나머지 y - y_mod = c + d*x2를 설명합니다. 등. 이 방법을 단계적 회귀 또는 일치 추적이라고 합니다.

다음은 S&P 500과의 상관 계수가 가장 높은 상위 10개 지표입니다.

시리즈 ID 지연 코르 뮤트 정보
'PPICRM' 2 0.315 0.102
'CWUR0000SEHE' 2 0.283 0.122
'CES1021000001' 하나 0.263 0.095
'B115RC1Q027SBEA' 2 0.262 0.102
'CES1000000034' 하나 0.261 0.105
'A371RD3Q086SBEA' 2 0.260 0.085
'B115RC1Q027SBEA' 하나 0.256 0.102
'CUUR0000SAF111' 하나 0.252 0.117
'CUUR0000SEHE' 2 0.251 0.098
'USMINE' 하나 0.250 0.102

다음은 S&P 500과 가장 상호 정보가 풍부한 상위 10개 지표입니다.

시리즈 ID 지연 코르 뮤트 정보
'CPILEGSL' 0.061 0.136
'B701RC1Q027SBEA' 0.038 0.136
'CUSR0000SAS' 0.043 0.134
'GDPPOT' 0.003 0.134
'NGDPOT' 5 0.102 0.134
'오섹' 4 0.168 0.133
'LNU01300060' 0.046 0.132
'LRAC25TTUSM156N' 0.046 0.132
'LRAC25TTUSQ156N' 0.046 0.131
'CUSR0000SAS' 하나 0.130 0.131

지연은 시뮬레이션된 S&P 500 시리즈에 대한 입력 시리즈의 지연입니다. 이 표에서 볼 수 있듯이 가장 중요한 입력을 선택하는 다양한 방법으로 인해 다른 입력 세트가 생성됩니다. 최종 목표는 모델 오류를 최소화하는 것이므로 두 번째 입력 선택 방법, 즉 모든 입력의 열거 및 가장 적은 오류를 제공한 입력의 선택.

5단계: 모델의 오류 및 계수를 계산하는 방법을 선택합니다. 가장 간단한 방법은 COEX 방법이므로 이 방법을 사용한 선형 회귀가 널리 사용됩니다. RMS 방법의 문제점은 이상값에 민감하다는 것입니다. 이러한 이상치는 모델의 계수에 상당한 영향을 미칩니다. 이 민감도를 줄이기 위해 제곱 오차의 합 대신 오차의 절대값 합을 사용할 수 있으며, 이는 최소 계수(MLM) 또는 강력한 회귀 방법으로 이어집니다. 이 방법은 선형 회귀와 달리 모델 계수에 대한 분석 솔루션이 없습니다. 일반적으로 모듈은 평활/미분 가능한 근사 함수로 대체되며 솔루션은 수치적 방법으로 수행되며 오랜 시간이 걸립니다. 나는 두 가지 방법(린 회귀 및 MHM)을 모두 시도했지만 MHM의 많은 이점을 알아차리지 못했습니다. MHM 대신 우회했습니다. 고정 데이터를 미분하여 얻는 두 번째 단계에서 비선형 정규화 연산을 추가했습니다. 즉, 원래 계열 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 사이에 있습니다.

데이터를 고정 형식으로 변환하는 인기 있는 방법 중 하나는 계열 값을 이러한 값의 로그 차이로 바꾸는 것입니다. log(x[i]) - log(x[i-1]) 또는 log(x[i]/x[i-1]). 10,000개 항목의 사전에는 0과 음수 값이 있는 행이 많기 때문에 이러한 변환을 선택하는 것은 제 경우에 위험합니다. 로그는 또한 이상값에 대한 RMS 방법의 민감도를 줄이는 이점이 있습니다.기본적으로 내 변환 함수 sign(x)*|x|^u는 log(x)와 동일한 목적을 갖지만 0과 관련된 문제는 없습니다. 음수 값.

6단계: 새로운 입력 데이터를 대체하고 이전 히스토리 세그먼트에서 선형 회귀로 찾은 동일한 모델 계수를 사용하여 모델 출력을 계산하여 모델 예측을 계산합니다. 여기서 경제 지표와 S&P 500의 분기별 가치는 거의 동시에 나온다는 점을 명심하는 것이 중요합니다(정확도 3개월). 따라서 다음 분기의 S&P 500을 예측하려면 S&P 500의 현재 분기별 가치와 최소 1/4 지연된 항목 사이에 모델을 구축해야 합니다(지연>=1). 한 분기 앞서 S&P 500을 예측하려면 S&P 500의 현재 분기별 가치와 최소 2분기 지연된 항목(지연>=2) 사이에 패턴을 구축해야 합니다. 등. 2보다 큰 지연이 증가하면 예측의 정확도가 크게 감소합니다.

7단계: 이전 이력에 대한 예측의 정확성을 확인합니다. 위에서 설명한 원래 기술(각 입력을 이전 기록에 넣고, 가장 작은 MSD를 제공하는 입력을 선택하고, 해당 입력의 새로운 값에서 예측을 계산)은 무작위 또는 null 예측보다 훨씬 더 나쁜 예측 MSD를 생성했습니다. 나는 스스로에게 이런 질문을 던졌다. 과거에 잘 맞는 입구가 미래에 대한 예측 가능한 능력이 있어야 하는 이유는 무엇인가? 알려진 데이터에 대한 가장 작은 회귀 오류를 기반으로 하기보다는 이전 예측 오류를 기반으로 모델 입력을 선택하는 것이 합리적입니다.

결국 내 모델은 다음과 같이 단계별로 설명할 수 있습니다.

  1. stlouisfed에서 경제 데이터 업로드(약 10,000개의 지표).
  2. Preobrazeum 데이터를 고정된 형태로 정규화합니다.
  3. RMS 방법(선형 회귀)으로 분석적으로 해결된 S&P 500 지수의 선형 모델을 선택합니다.
  4. 히스토리의 길이(1960 - Q2 2015)를 선택하고 훈련 세그먼트(1960 - Q4 1999)와 테스트 세그먼트(Q1 2000 - Q2 2015)로 나눕니다.
  5. 1960 + N + 1부터 예측을 시작합니다. 여기서 N*4는 알려진 분기별 S&P 500 값의 초기 수입니다.
  6. 첫 번째 N 데이터에서 선형 모델은 각 경제 지표에 대해 y_mod = a + b*x로 작성됩니다. 여기서 y_mod는 S&P 500 모델이고 x는 경제 지표 중 하나입니다.
  7. 각 모델에 대해 N + 1 bar를 예측합니다.
  8. 각 모델별로 N + 1개 막대의 예측 오차를 계산합니다. 우리는 이러한 실수를 기억합니다.
  9. 알려진 S&P 500 값의 수를 1만큼 늘립니다. N + 1을 입력하고 훈련 세그먼트의 끝에 도달할 때까지 6-9단계를 반복합니다(Q4 1999). 이 단계에서 우리는 각 경제 지표에 대해 1960년 + N +1에서 1999년 4분기까지의 예측 오차를 저장했습니다.
  10. 두 번째 역사 기간(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 - Q4 1999)에 대한 예측의 RMS가 가장 낮은 선택된 입력의 예측이 2000년 Q1의 주요 예측으로 선택됩니다.
  16. 2000년 1분기에 대한 모든 입력의 예측 오차를 계산하고 이전 기간(1960~1999년 4분기)에 대한 동일한 입력의 RMS에 추가합니다.
  17. 2000년 2분기로 이동하여 S&P 500의 미지수 값으로 테스트 영역(2015년 2분기)이 끝날 때까지 12-17단계를 반복합니다. 예측이 우리의 주요 목표입니다.
  18. 2000년 1분기 - 2014년 4분기에 대한 예측 오류를 이전 세그먼트에서 예측의 표준 편차가 가장 낮은 입력으로 누적합니다. 이 오류(err2)는 샘플 외 예측 오류 모델입니다.

요컨대, 예측 변수의 선택은 이전 S&P 500 예측의 RMS에 따라 달라집니다. 예측자는 시간이 지남에 따라 변경될 수 있지만 테스트 세그먼트가 끝나면 기본적으로 변경을 멈춥니다. 내 모델은 2015년 2분기를 예측하기 위한 첫 번째 입력으로 2/4 지연이 있는 PPICRM을 선택했습니다. 1960 - Q4 2014에 대해 선택한 PPICRM(2) 입력을 사용한 S&P 500의 선형 회귀가 아래에 나와 있습니다. 검은색 원 - 선형 회귀. 다양한 색상의 원 - 1960년 - 2014년 4분기의 과거 데이터. 원의 색상은 시간을 나타냅니다.


고정 S&P 500 예측(빨간색 선):

원시 형태의 S&P 500 예측(빨간색 선):

그래프는 모델이 2015년 2분기 S&P 500의 성장률을 예측함을 보여줍니다. 두 번째 입력을 추가하면 예측 오류가 증가합니다.

1 err1=0.900298 err2=0.938355 PPICRM(2)

2 err1=0.881910 err2=0.978233 PERMIT1 (4)

여기서 err1은 회귀 오류입니다. 두 번째 입력이 추가되면서 감소하는 것이 분명합니다. err2는 제곱 평균 제곱근 예측 오차를 랜덤 예측 오차로 나눈 값입니다. 즉, err2>=1은 내 모델의 예측이 무작위 예측보다 좋지 않음을 의미합니다. err2<1은 내 모델의 예측이 무작위 예측보다 낫다는 것을 의미합니다.

PPICRM = 생산자 물가 지수: 추가 처리를 위한 원유

PERMIT1 = 건축 허가에 의해 승인된 신규 민간 주택 유닛 - 1 유닛이 있는 구조

위에서 설명한 모델은 이런 식으로 다시 표현될 수 있습니다. 우리는 10,000명의 경제학자를 모아 그들에게 앞으로 분기의 시장을 예측하도록 요청합니다. 각 경제학자는 자신의 예측을 내립니다. 그러나 그들이 집필한 교과서의 수나 과거에 수상한 노벨상 수를 기반으로 예측을 선택하는 대신 예측을 수집하기 위해 몇 년을 기다립니다. 상당한 수의 예측 후에 우리는 어떤 경제학자가 더 정확한지 확인하고 다른 경제학자가 그의 정확도를 능가할 때까지 그의 예측을 믿기 시작합니다.

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&P 500 지수를 예측하는 것입니다.

매우 흥미로운 주제입니다. 고용, 새 주택 건설, 새 주택 판매 등 데이터 파일을 기반으로 지표를 만들려고 했습니다. 그리고 맨눈으로 보면 일부 데이터가 주식 시장과 일종의 상관 관계가 있음을 알 수 있습니다. 그러나 분명히 통화와 상관관계는 없습니다. 기본적인 미국 통계를 사용했습니다.

데이터 유형을 너무 많이 선택했다고 생각하지 않습니까? 제 생각에는 시장에 영향을 미치는 가치 있는 데이터에서 중요하지 않은 데이터를 제거해야 합니다.

그러나 나는 신경 분석에 익숙하지 않습니다. 나는 그것에 대해 계속 읽고 있지만 아직 그 행동 원리가 명확하게 설명되어 있는 곳을 찾지 못했습니다.

 
회귀 알고리즘은 데이터 사이에 명백한 연결이 없는 경우에도 모든 데이터를 기반으로 지표를 예측하는 데 도움이 됩니다.
 
forexman77 :

매우 흥미로운 주제입니다. 고용, 새 주택 건설, 새 주택 판매 등 데이터 파일을 기반으로 지표를 만들려고 했습니다. 그리고 알다시피, 육안으로 일부 데이터는 주식 시장과 일종의 상관 관계가 있음을 알 수 있습니다. 그러나 분명히 통화와 상관관계는 없습니다. 기본적인 미국 통계를 사용했습니다.

데이터 유형을 너무 많이 선택했다고 생각하지 않습니까? 제 생각에는 시장에 영향을 미치는 가치 있는 데이터에서 중요하지 않은 데이터를 제거해야 합니다.


크거나 작은 양의 입력 데이터는 모두 상대적입니다.

다른 것이 더 중요합니다.

모든 입력은 두 가지 범주로 나뉩니다.

  • 대상 변수에 영향을 미치는
  • 영향력이 거의 없거나 전혀 없습니다.

나는 의도적으로 "영향"이라는 단어를 사용하고 상관 관계가 아닙니다. 상관 관계에는 항상 어떤 값이 있고 대상 변수에 대한 소스 데이터의 영향을 결정하는 데 기본이 되는 "값 없음 - NA" 값이 없기 때문에 상관 관계는 빈 도구입니다.

없는 변수(약한 영향을 가짐 - 나는 이것이 정성적 특성임에 유의)는 목표 변수에 대한 영향을 결정하는 데 노이즈입니다. 동시에 알고리즘적으로 결정되지 않은 특정 양에서 시작하여 이 노이즈가 중요한 변수를 "막히게" 하고 이 총량에서 "중요한" 변수를 알고리즘적으로 선택하는 것이 불가능하다는 사실에 의미가 있습니다.

따라서 입력 변수의 전체 목록을 수동으로 고려하고 "이 입력 변수는 그럴 가능성이 가장 높고 이 변수는 그렇지 않을 것"이라고 직관적으로 결정하거나 다른 고려 사항을 기반으로 결정해야 합니다.

나는 내 기사와 책(최대 100개 입력 변수)의 세트에 대해 테스트한 변수의 중요성을 결정하기 위한 수십 가지 알고리즘을 알고 있습니다. 결과는 설명된 대로입니다. 펜으로 특정 목록을 선택하고 알고리즘으로 필터링하여 목록을 얻었습니다. 더욱이, 그러한 목록의 값은 근본적인 성격을 띠고 있습니다. 이러한 "영향력 있는" 초기 데이터 세트를 사용하는 모델(저는 3가지 다른 유형의 모델을 사용합니다)에는 주요 매복 인 과적합 속성이 없습니다 . "잡음" 초기 데이터 사용의 주요 결과인 과적합입니다.

추신.

고정성은 내 모델에서 어떤 역할도 하지 않지만 randomForest, ada, SVM입니다.

 
gpwr :

...

.... 고정 없이 작동하는 모델은 없습니다.

...

정지 요구 사항은 매우 엄격하며 완전히 정당화되지 않습니다.

.

그리고 "정상이 없는" 모델은 자체적으로 잘 작동합니다.)

 
transcendreamer :
회귀 알고리즘은 데이터 사이에 명백한 연결이 없는 경우에도 모든 데이터를 기반으로 지표를 예측하는 데 도움이 됩니다.
이것은 회귀뿐만 아니라 신경 모델, ARMA 등 모든 모델에 대해 말할 수 있습니다. 입력과 출력 사이에 연결이 없으면 모든 모델이 예측을 생성하지만 정확하지 않은 예측만 생성합니다.
사유: