엑셀을 이용한 백테스팅

모델링에서 백테스팅은 과거 데이터를 사용하여 예측 모델을 테스트하는 것을 말합니다. 이 문서는 백테스팅의 이론적 배경이 아니라 Microsoft Excel에서 백테스팅을 수행하는 방법에 관한 것입니다.

백테스팅은 어떻게 수행하나요? 시간을 시계열의 시작 시점으로 되돌리고 해당 시점까지 사용 가능한 데이터를 사용하여 대상 모델 매개변수를 보정하고 다음 기간에 대한 예측(즉, 예측)을 수행합니다. 그런 다음 시간을 앞당기고 매개변수 값을 재보정하고 다른 예측을 수행하는 등의 과정을 반복합니다. 연습이 끝나면 일련의 예측 결과를 얻게 됩니다.

각 시점에서 우리가 가정하는 유일한 것은 일반적인 모델 정의(예: ARMA(1,1))라는 점에 유의하세요. 그래도 해당 시점까지의 정보만 사용하여 매개변수 값을 보정합니다.

이 접근 방식은 실제 사례와 일치합니다. 먼저 초기 모델로 시작하여 다음 기간에 대한 예측을 수행합니다. 시간은 계속 흐릅니다. 새로운 기간이 발생했으므로 현재 입력 데이터 집합에 새 데이터 포인트를 추가하고 매개 변수를 재보정하고 다음 기간에 대한 예측을 수행한 후 반복합니다.

내가 왜 신경 써야 하나요?

이 문서에서는 백테스팅을 수행하는 데 필요한 Microsoft Excel의 단계를 안내합니다. 주로 두 가지 강력한 Excel 내장 함수를 사용할 것입니다: 인덱스(.) 및 시퀀스(.)를 사용하고, Excel의 "데이터 테이블" 메커니즘을 활용하여 다양한 시나리오를 실행합니다.

백테스팅은 예측 오류를 생성하므로 직렬 상관관계, 분포, 이상값 등에 대한 예측 오류 시계열을 면밀히 검토하여 모델의 정확성과 성능을 더 잘 이해할 수 있습니다.

시작해 보죠!

이번 호에서는 200개의 관측치로 구성된 합성 고정 데이터 세트를 사용합니다. 데이터 세트는 다음 그림과 같이 ARMA(1,1) 프로세스를 따릅니다.

이 그림은 200개의 관측치로 구성된 합성 고정 데이터 집합을 보여줍니다.

제안된 모델은 ARMA(1,1)입니다.

이 그림은 원본 ARMA 모델 테이블을 보여줍니다.

백테스팅 절차

모든 반복에 대해 다음을 수행해야 합니다: (1) 입력 데이터 집합(원래 시계열의 하위 집합)을 정의하고, (2) (1)의 데이터 집합을 사용하여 ARMA(1,1) 모델의 매개 변수 값을 보정하고, (3) (2)의 모델과 (1)의 데이터 집합을 사용하여 한 주기 전의 예측을 계산합니다.

1. 입력 데이터 세트

입력 데이터 집합을 완전히 설명하려면 시작과 끝의 두 인덱스가 필요하며, SEQUENCE(.) 함수를 사용하여 시작과 끝 사이에 인덱스 집합을 생성합니다. 이제 INDEX(.) 함수를 사용하여 원본 데이터 세트의 모든 셀 범위를 시퀀스 세트의 행 인덱스와 함께 반환합니다.

예: 

원본 입력 데이터 세트는 \$A\$3:\$A\$202입니다. 인덱스 1부터 50까지의 셀을 선택합니다.

=INDEX(\$A\$3:\$A\$202,SEQUENCE(50,1,1,1),1)

입력 데이터의 이름을 정의하고 입력 셀 범위 대신 이 이름을 참조할 수 있다는 점에 유의하세요.

2. 모델 보정

보정된 매개변수에 대해 NumXL ARMA_PARAM(.) 함수를 사용하고 반환 유형=2를 지정합니다.

이 그림은 보정된 ARMA 모델을 보여줍니다.

ARMA_PARAM(.)은 모델 파라미터의 압축된 형태를 반환하므로 위 그림에서 ARMA 프로세스는 다음과 같습니다: \[\begin{array}{l} {X_t} = 1.485 + 0.401{X_{t - 1}} + 0.734{a_{t - 1}} + {a_t}\\ {a_t} \sim N(0,1.14) \end{array}\]

3. 예측

(1)의 데이터 세트와 2에서 계산한 모델 매개변수인 ARMA_FORE(.)를 사용하여 앞으로 1주일의 예측 값을 계산할 수 있습니다.

1피리어드 앞의 예측값을 계산합니다.

평균 예측, 예측 오차 및 신뢰 구간을 생성했다는 점에 유의하세요.

데이터 테이블

이제 한 단계의 계산을 완료했습니다. Excel의 '데이터 테이블' 기능을 사용하여 200단계까지 남은 기간에 대해 동일한 계산을 수행하겠습니다.

먼저 출력 테이블을 준비해야 합니다:

데이터 테이블 설정

이제 아래와 같이 출력 행부터 시작하여 마침 인덱스 열을 포함한 전체 데이터 테이블을 선택합니다:

데이터 테이블 셀 범위 선택

다음으로 "데이터" 도구 모음으로 전환하고 "가정 시나리오" 아래에서 "데이터 테이블" 항목을 찾습니다.

이 그림은 Excel 데이터 테이블 메뉴를 보여줍니다.

"데이터 테이블" 대화 상자가 나타납니다. "열 입력 셀"을 찾아 데이터 집합의 "마침" 인덱스에 대한 참조를 입력한 다음 확인 버튼을 클릭합니다.

이 그림은 데이터 테이블 대화 상자를 보여줍니다.

데이터 테이블은 마무리 인덱스의 값을 데이터 테이블의 값으로 대체하고 출력을 저장합니다.

이 그림은 실제 오류가 있는 데이터 테이블 출력을 보여줍니다.

'표준 오차'는 ARMA_FORE(.) 함수에 의해 생성되며, 가장 오른쪽 열('오류')은 예측값과 실제 실현값 사이의 오차라는 점에 유의하세요.

백 테스트 분석

먼저 백테스팅 예측 결과를 실제 실현된 값과 비교하여 시각적으로 살펴본 다음 통계적 속성에 대해 자세히 알아보겠습니다.

이 그림은 데이터 플롯 백테스팅 예측과 실제의 비교를 보여줍니다.

플롯의 음영 영역은 95% 예측 신뢰 구간에 해당합니다.

이 플롯은 모델 적합도가 양호하여 예측 정확도가 높습니다.

다음으로 NumXL 툴바의 요약 통계를 사용하여 예측 오차(예측 - 실제) 통계 속성을 살펴보겠습니다.

이 그림은 백 테스트 오류 요약 통계를 보여줍니다.

요약 통계 표에 따르면 예측 오차는 평균과 표준 편차가 1.0인 가우스 노이즈입니다.

이 그림은 백 테스트 KDE와 가우시안 비교를 보여줍니다.

결론적으로 ARMA(1,1)는 주어진 데이터 세트에 적합한 예측 모델입니다.

다음 단계는 무엇인가요?

지금쯤이면 모델의 파라미터 값이 궁금하실 겁니다. 안정적일까요?

먼저 두 번째 '데이터 테이블'을 구성하되 출력 행에 모델 매개변수 값을 넣고 앞에서 한 것과 마찬가지로 데이터 테이블을 실행합니다.

이 그림은 데이터 테이블 매개 변수를 보여줍니다.

이제 예측 오류에서 했던 것처럼 모든 매개변수의 값을 분석합니다.

Backcasting ARMA (1,1) mu plotBackcasting ARMA (1,1) - sigma plot
Backcasting ARMA (1,1) -phi plotBackcasting ARMA (1,1) - theta plot

매개변수 값(세타 제외)은 안정적이며 일정한 값을 향한 추세를 보입니다. 세타(MA 계수) 값은 변동성이 더 크지만 0.6에서 0.9 사이로 묶여 있습니다.

다음으로 설명 통계와 매개변수 값의 기본 분포를 살펴봐야 하지만, 이 연습은 여러분에게 맡기겠습니다.

데이터 세트 및 분석은 첨부된 스프레드시트를 참조하세요.

결론

이 문서에서는 중간 계산을 최소화하거나 전혀 하지 않고 예측 모델에 대한 백테스팅을 수행하는 단계를 설명했습니다. 여기서는 Excel의 기본 제공 함수인 INDEX(.) 및 SEQUENCE(.)를 사용하고 '데이터 테이블' 기능을 활용하여 미리 정의된 모든 인덱스에 대한 계산을 실행했습니다.

백테스팅 결과를 얻은 후에는 통계 분석으로 눈을 돌려 그 속성과 분포를 평가하여 결과의 편향성(예: 직렬 상관관계)을 파악합니다.

  첨부 파일

댓글

댓글을 남기려면 로그인하세요.

도움이 되었습니까?
8명 중 7명이 도움이 되었다고 했습니다.