기본 콘텐츠로 건너뛰기

방송대 방통대 오픈소스기반데이터분석 15강 - 시계열 데이터 분석 - 요약 노트 시험족보 예상문제 - 올에이클래스

오픈소스기반데이터분석 15강 - 시계열 데이터 분석

오픈소스기반데이터분석 15강 - 시계열 데이터 분석

시계열 데이터는 관측 순서와 시간 간격에 의미가 있어 일반 데이터와 다른 분석법이 필요하다. 이번 강의에서는 시계열의 네 가지 특징을 이해하고, 이동평균과 RSI로 거래 신호를 만드는 방법, 백테스팅의 원리와 한계, Prophet과 GBRT를 이용한 예측 흐름을 학습한다.

1. 시계열 데이터 분석의 이해

1.1 시계열 데이터의 정의

시계열 데이터(time series data)는 일정한 시간 간격으로 수집된 연속적인 데이터의 집합이다. 값이 시간의 흐름에 따라 순차적으로 기록되므로 같은 관측값이라도 언제 발생했는지가 중요하다. 날씨 예보, 전력 수요 예측, 경제 지표 분석, 웹 트래픽 모니터링, 주가 예측 등이 대표적인 응용 분야이다.

일반적인 횡단면 데이터에서는 각 관측치를 비교적 독립적으로 보는 경우가 많다. 반면 시계열 데이터에는 관측치 사이의 시간적 의존성이 존재한다. 과거 값이 현재 값과 미래 값에 영향을 미칠 수 있기 때문에 데이터를 임의로 섞거나 시간 순서를 무시하면 패턴을 훼손하고 잘못된 평가를 만들 수 있다.

핵심 차이
시계열 분석에서는 값 자체뿐 아니라 관측 순서, 시간 간격, 이전 값과의 관계가 분석 대상이다. 따라서 시간의 흐름을 보존하는 전처리·학습·평가 방법이 필요하다.

1.2 시계열 분석의 목적

시계열 분석은 과거부터 현재까지의 흐름 속에서 장기 방향, 반복 패턴, 일시적 충격을 분리해 이해하고 미래 값을 예측하는 데 목적이 있다. 금융 시계열 분석에서는 과거 가격과 거래량을 가공한 기술적 지표로 시장의 추세, 모멘텀, 변동성을 살피고 거래 전략을 구성·평가한다.

주의 시계열에 패턴이 존재하더라도 미래가 확정되는 것은 아니다. 특히 금융 시장은 예측 불가능한 사건과 구조 변화의 영향을 크게 받으므로 분석 결과를 확정적 투자 지침으로 해석해서는 안 된다.

2. 시계열 데이터의 네 가지 특징

2.1 추세와 계절성

추세(trend)는 데이터가 장기간에 걸쳐 상승하거나 하락하는 전반적인 방향이다. 단기적인 오르내림을 넘어 시계열의 기본 골격을 형성한다. 예를 들어 여러 해 동안 전력 수요가 꾸준히 증가한다면 장기 상승 추세가 있다고 볼 수 있다.

계절성(seasonality)은 일정한 시간 주기로 반복되는 패턴이다. 일별, 주간, 월간, 연간처럼 고정된 주기에 따라 유사한 변동이 되풀이된다. 요일별 웹 트래픽이나 계절별 전력 수요처럼 반복 주기가 비교적 명확하다는 점이 중요하다.

2.2 불규칙성과 주기성

불규칙성(irregularity)은 추세나 계절성 등으로 설명하기 어려운 예측 불가능한 무작위 변동이다. 측정 오차나 돌발 사건에 의한 노이즈 등이 여기에 해당한다.

주기성(cyclicality)은 계절성보다 긴 기간에 걸쳐 나타나는 주기적 변동이다. 상승과 하락이 되풀이될 수 있지만 계절성처럼 고정된 주기가 뚜렷하지 않을 수 있다. 장기 경기 순환을 생각하면 두 개념의 차이를 이해하기 쉽다.

구성 요소핵심 의미구분 기준
추세장기적인 상승 또는 하락 방향시계열의 전반적인 골격
계절성고정된 시간 주기로 반복되는 변동일·주·월·연 단위의 규칙적 반복
불규칙성설명하기 어려운 무작위 변동예측 불가능한 노이즈
주기성장기간에 걸친 반복적 변동계절성보다 길고 주기가 고정적이지 않을 수 있음
시험 포인트
계절성은 고정된 주기로 반복되는 패턴이고, 주기성은 계절성보다 긴 기간의 순환이다. 불규칙성은 다른 구성 요소로 설명되지 않는 무작위 변동이다.

3. 기술적 지표 1: 이동평균

3.1 이동평균의 의미

이동평균(MA: Moving Average)은 일정 기간 동안의 가격 평균을 계산하는 기술적 지표이다. 날마다 새 관측값을 포함하고 가장 오래된 관측값을 제외하며 계산 구간을 이동시킨다. 이 과정은 짧은 기간의 급격한 변동을 완화하여 중장기적인 추세를 파악하기 쉽게 한다.

주가 분석에서는 50일 이동평균선인 MA50과 200일 이동평균선인 MA200이 대표적으로 사용된다. 짧은 기간 이동평균은 최근 가격 변화에 빠르게 반응하고, 긴 기간 이동평균은 더 부드럽게 움직이며 장기 흐름을 보여 준다.

3.2 pandas의 rolling과 mean

pandas의 rolling()은 시계열에서 연속적인 윈도우를 생성하고, mean()은 각 윈도우 내부 값의 평균을 구한다.

df['MA3'] = df['Close'].rolling(window=3).mean()
df['MA50'] = df['Close'].rolling(window=50).mean()
df['MA200'] = df['Close'].rolling(window=200).mean()

window=3이면 현재 행을 포함한 최근 3개 종가의 평균이 계산된다. 처음 두 행은 3개의 값이 아직 모이지 않았으므로 기본 설정에서는 NaN이 된다. 이동평균은 원자료를 없애는 것이 아니라 원자료로부터 추세 파악을 돕는 새로운 지표를 생성한다.

윈도우 크기의 효과 윈도우가 작으면 최근 변화에 민감하지만 잡음도 많이 반영한다. 윈도우가 크면 곡선이 부드러워지지만 가격 변화에 늦게 반응한다.

4. 기술적 지표 2: 상대강도지수

4.1 RSI의 의미와 계산식

상대강도지수(RSI: Relative Strength Index)는 특정 기간 동안 상승폭과 하락폭의 상대적 강도를 측정하는 모멘텀 오실레이터이다. 최근 가격 움직임에서 상승의 힘과 하락의 힘을 비교하여 시장의 모멘텀을 수치로 표현한다.

RSI = 100 - (100 / (1 + 평균 상승폭 / 평균 하락폭))

평균 상승폭이 평균 하락폭보다 커질수록 RSI는 높아지고, 하락의 힘이 상대적으로 커질수록 RSI는 낮아진다. 강의에서는 70과 30을 대표적인 판단 경계로 사용한다.

4.2 과매수와 과매도

RSI가 70 이상인 영역은 일반적으로 과매수, 30 이하인 영역은 과매도 상태를 살펴보는 기준으로 사용한다. 그러나 임계값에 도달한 사실만으로 즉시 매수·매도를 확정하는 것이 아니라, 어느 방향으로 경계를 통과하는지와 다른 지표를 함께 살펴야 한다.

지표측정 대상대표 활용
이동평균일정 기간 가격의 평균단기 변동을 완화하고 추세 파악
RSI상승폭과 하락폭의 상대적 강도모멘텀과 과매수·과매도 구간 파악
구분
이동평균은 가격 수준을 평활화해 추세를 보여 주고, RSI는 상승과 하락의 상대적인 힘을 0~100 범위의 모멘텀으로 나타낸다.

5. 거래 신호와 포지션 전략

5.1 이동평균 교차 신호

골든 크로스는 단기 이동평균인 MA50이 장기 이동평균인 MA200을 아래에서 위로 돌파하는 현상이다. 강의에서는 이를 매수 신호 조건으로 사용한다. 반대로 데드 크로스는 MA50이 MA200을 위에서 아래로 돌파하는 현상이며 매도 신호 조건에 해당한다.

단순히 어느 한 시점에 MA50이 MA200보다 큰지만 보는 것이 아니라, 이전 시점과 비교하여 두 선의 상대적 위치가 실제로 바뀌었는지 확인해야 교차 신호를 탐지할 수 있다.

5.2 RSI 반등과 반락 신호

RSI 반등은 RSI가 30 이하에 있다가 30 위로 상승하는 경우이며 매수 신호 조건이다. RSI 반락은 RSI가 70 이상에 있다가 70 아래로 하락하는 경우이며 매도 신호 조건이다. 이는 과매도·과매수 영역에 단순 진입하는 순간보다 해당 영역에서 되돌아 나오는 방향을 신호로 삼는 방식이다.

신호조건전략상 의미
골든 크로스MA50이 MA200을 상향 돌파매수 신호
RSI 반등30 이하에서 30 위로 상승매수 신호
데드 크로스MA50이 MA200을 하향 돌파매도 신호
RSI 반락70 이상에서 70 아래로 하락매도 신호

5.3 포지션 생성 원칙

신호를 실제 전략의 보유 상태인 포지션으로 바꿀 때는 세 가지 원칙을 고려한다. 첫째, 신호를 한 시점 지연해 적용하여 종가를 확인한 뒤 다음 거래 시점에 행동하는 현실적인 상황을 모사한다. 둘째, 새로운 신호가 발생할 때까지 기존 포지션을 유지한다. 셋째, 분석 시작 시점의 기본 상태인 초기 포지션을 정한다.

미래 정보 누출 방지 같은 시점의 가격으로 신호를 계산하고 이미 그 가격에 거래한 것으로 처리하면 미래 정보를 이용한 비현실적 성과가 생길 수 있다. 신호 지연은 이러한 문제를 줄이고 실제 거래 시점을 모사하는 데 중요하다.

6. 백테스팅과 성과 해석

6.1 백테스팅의 정의

백테스팅(back testing)은 과거 데이터를 이용해 투자 전략의 효과성을 검증하는 과정이다. 실제 시장에 전략을 적용하기 전에 과거 구간에서 수익성과 위험을 평가한다. 신호를 포지션으로 변환하고, 포지션을 적용한 일별 수익률을 계산한 뒤 시간에 따른 누적 성과를 확인한다.

여러 날의 성과를 합칠 때는 단순히 일별 수익률을 더하는 것보다 자산 가치가 전날 결과를 바탕으로 계속 변한다는 복리 효과를 반영해야 한다.

daily_return = df['Close'].pct_change()
strategy_return = position.shift(1) * daily_return
cumulative_return = (1 + strategy_return).cumprod()

위 코드는 개념을 보여 주는 예이다. shift(1)은 이전 시점에 확정한 포지션을 다음 시점 수익률에 적용하고, cumprod()는 기간별 성장률을 곱해 누적 복리 성과를 계산한다.

6.2 백테스팅의 한계

과거 데이터에서 좋은 성과가 나왔더라도 미래 성과를 보장하지 않는다. 시장 환경이 변할 수 있고, 거래 비용이나 체결 조건 등 실제 거래 요소가 결과를 악화시킬 수 있다.

데이터 스누핑 편향(data snooping bias)은 동일한 데이터셋을 반복 탐색하거나 여러 모델과 규칙을 비교하는 과정에서 우연히 통계적으로 유의해 보이는 결과가 선택되는 현상이다. 많은 전략 중 과거 데이터에 우연히 잘 맞은 것만 선택하면 실제 미래 성능을 과대평가하게 된다.

해석 원칙
백테스팅은 전략을 검토하는 도구이지 미래 수익의 보증서가 아니다. 시간 순서를 지킨 평가, 미래 정보 누출 방지, 데이터 스누핑 편향과 실제 거래 위험에 대한 고려가 필요하다.

7. Meta Prophet 시계열 예측

7.1 Prophet의 특징

Prophet은 Meta가 개발한 시계열 예측 프레임워크이다. 시계열의 추세, 계절성, 휴일 효과를 자동으로 포착하여 미래 값을 예측한다. 전통적인 시계열 방법론과 달리 베이지안 접근법을 활용해 각 구성 요소를 추정하며, 결측값·추세 변화·특이점에 강건한 특성을 갖는다.

Prophet은 시계열을 해석 가능한 구성 요소로 분해하여 모델링한다는 점이 핵심이다. 장기 방향과 반복 변동, 특정 휴일의 영향을 나누어 추정하므로 각 요소가 예측에 어떻게 기여했는지 이해하기 쉽다.

7.2 기본 학습과 예측 절차

prophet_df = df[:'2018']
model = Prophet()
model.fit(prophet_df)
future = model.make_future_dataframe(periods=periods)
forecast = model.predict(future)
  1. 학습에 사용할 과거 시계열 구간을 준비한다.
  2. Prophet()으로 모델 객체를 생성한다.
  3. fit()으로 과거 데이터를 학습한다.
  4. make_future_dataframe()으로 예측할 미래 날짜를 포함한 DataFrame을 만든다.
  5. predict()로 미래 날짜의 예측 결과를 생성한다.
시간 분할 시계열 모델 평가는 미래 구간을 학습 데이터에 섞지 않고 과거 구간으로 학습한 뒤 뒤쪽 기간에서 평가해야 한다. 시간 순서를 보존해야 실제 미래 예측 상황에 가까운 검증이 된다.

8. GBRT 기반 예측

8.1 GBRT의 원리

GBRT(Gradient Boosting Regression Trees)는 여러 개의 약한 예측 모델을 순차적으로 결합하여 강한 예측 모델을 만드는 앙상블 기법이다. 한 번에 복잡한 모델 하나를 만드는 대신, 이전 모델이 예측하지 못한 오차인 잔차(residual)를 다음 모델이 보완하도록 학습을 반복한다.

각 단계의 회귀 트리는 앞선 예측의 부족한 부분에 집중한다. 여러 트리의 결과가 합쳐지면서 단일 트리보다 복잡한 비선형 패턴을 효과적으로 모델링할 수 있다.

8.2 Prophet과 GBRT의 역할 비교

구분ProphetGBRT
핵심 관점추세·계절성·휴일 효과의 구성 요소 추정여러 회귀 트리가 잔차를 순차적으로 보완
주요 강점시계열 구조를 자동 포착하고 해석하기 쉬움특성 변수를 활용한 비선형 패턴 모델링
학습 준비날짜와 목표값 중심의 시계열 형식예측에 사용할 특성 변수 설계가 중요
강의 실습단기 주가 예측 모델 학습 및 평가예측 모델과 예측 기반 전략의 백테스팅
핵심 구분
Prophet은 시계열을 추세·계절성·휴일 효과로 분해해 예측하고, GBRT는 이전 모델의 잔차를 다음 트리가 반복적으로 학습하여 비선형 관계를 모델링한다.

9. S&P500 실습 프로젝트 흐름

강의의 실습 프로젝트는 S&P500 지수 데이터를 수집·전처리·분석하여 간단한 투자 전략을 만들고, 예측 모델로 미래 가격 움직임을 살펴보는 과정이다. 전체 흐름은 다음 네 단계로 구성된다.

단계주요 내용
1. 데이터 수집yfinance를 이용해 데이터를 수집하고 데이터 구조를 이해한다.
2. 금융 시계열 분석이동평균과 RSI를 계산하고, 거래 신호와 전략을 구성한 뒤 백테스팅한다.
3. Prophet 기반 예측단기 주가 예측 모델을 학습하고 평가한다.
4. GBRT 기반 예측특성 변수를 설계해 모델을 학습하고, 예측 기반 투자 전략을 백테스팅한다.

이 프로젝트는 데이터 확보에서 끝나지 않는다. 데이터의 시간 구조를 이해하고 기술적 지표를 생성한 뒤, 신호를 포지션과 수익률로 변환하여 전략을 평가한다. 이후 서로 다른 원리를 가진 Prophet과 GBRT로 예측 문제를 다루며 전처리, 분석, 모델링, 평가를 하나의 흐름으로 연결한다.

교육 목적의 실습 강의에서 주가를 사용하는 이유는 시계열 분석 절차를 학습하기 위해서이다. 실제 투자 결정을 위한 가이드로 사용할 수 없으며, 금융 시장의 불확실성과 예측 불가능한 사건으로 상당한 손실 위험이 존재한다.

10. 핵심 개념 정리

  • 시계열 데이터는 시간 순서에 따라 수집되며 관측치 사이에 시간적 의존성이 존재한다.
  • 시계열의 주요 특징은 장기 방향인 추세, 고정 주기의 계절성, 장기 순환인 주기성, 무작위 변동인 불규칙성이다.
  • 이동평균은 연속 윈도우의 평균으로 단기 변동을 완화하고 추세를 파악하게 한다.
  • RSI는 평균 상승폭과 평균 하락폭의 상대적 강도로 모멘텀과 과매수·과매도 영역을 살핀다.
  • 골든 크로스와 RSI 반등은 매수 조건, 데드 크로스와 RSI 반락은 매도 조건으로 사용된다.
  • 포지션 전략은 신호 지연, 다음 신호까지 포지션 유지, 초기 포지션 설정을 고려한다.
  • 백테스팅은 과거 데이터로 전략의 수익성과 위험을 평가하지만 미래 성과를 보장하지 않으며 데이터 스누핑 편향에 주의해야 한다.
  • Prophet은 추세·계절성·휴일 효과를 추정하고, GBRT는 잔차를 순차적으로 보완하여 비선형 패턴을 학습한다.
최종 정리: 시계열 분석의 출발점은 시간 순서와 의존성을 보존하는 것이다. 기술적 지표로 추세와 모멘텀을 설명하고, 현실적인 신호 지연과 복리 수익률을 반영해 전략을 평가한 뒤, Prophet과 GBRT의 서로 다른 원리를 이해하여 예측에 적용해야 한다.

11. 예상문제 20선

1. 시계열 데이터와 일반 데이터의 가장 중요한 차이로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
시계열 데이터에서는 과거 값이 현재와 미래 값에 영향을 미칠 수 있으므로 관측 순서와 시간 간격을 보존해야 한다.

2. 시계열 데이터의 정의로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
시계열 데이터는 일정한 시간 간격으로 관측한 연속적인 값의 집합이며 시간 순서 자체가 분석에 중요하다.

3. 데이터가 여러 해에 걸쳐 지속적으로 상승하는 전반적 방향을 나타내는 요소는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
추세는 시계열의 장기적인 상승 또는 하락 방향으로 데이터 흐름의 기본 골격을 형성한다.

4. 계절성과 주기성의 차이에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
계절성은 일·주·월·연처럼 고정된 주기를 갖지만, 주기성은 계절성보다 긴 기간에 걸쳐 나타나며 주기가 고정적이지 않을 수 있다.

5. 시계열의 불규칙성에 해당하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
불규칙성은 추세·계절성·주기성으로 설명되지 않는 무작위적 변동이나 노이즈를 의미한다.

6. df['Close'].rolling(window=3).mean()의 결과에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
rolling(window=3)은 3개 값으로 이루어진 연속 윈도우를 만들고 mean()은 각 윈도우의 평균을 구한다.

7. 이동평균 윈도우를 크게 설정했을 때 일반적으로 나타나는 효과는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
긴 기간의 평균은 단기 잡음을 더 많이 완화하지만 최근 변화가 평균에 반영되는 속도는 느려진다.

8. RSI가 측정하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
RSI는 평균 상승폭과 평균 하락폭을 비교하여 시장의 모멘텀을 나타내는 오실레이터이다.

9. 강의에서 제시한 RSI 기반 매수 신호 조건은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
RSI 반등은 과매도 기준인 30 이하에서 30 위로 되돌아오는 움직임이며 매수 신호 조건으로 사용된다.

10. 데드 크로스에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
단기 이동평균이 장기 이동평균을 아래 방향으로 교차하면 데드 크로스이며 강의의 매도 신호 조건이다.

11. 거래 신호를 한 시점 지연하여 포지션에 적용하는 주된 이유는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
현재 가격으로 계산한 신호를 같은 가격에 이미 거래한 것으로 처리하지 않도록 지연을 적용해 미래 정보 누출을 줄인다.

12. 포지션 유지 전략의 의미로 알맞은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
한 번 정한 매수·매도 상태는 반대 신호 등 새로운 신호가 나오기 전까지 이어지도록 구성한다.

13. 백테스팅에 대한 설명으로 옳지 않은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
백테스팅은 과거 성과를 평가할 뿐 미래 시장 환경과 돌발 사건까지 보장하지 못한다.

14. 데이터 스누핑 편향을 가장 잘 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
많은 비교 중 우연히 과거 데이터에 잘 맞은 결과만 선택하면 통계적으로 유의해 보이는 성과가 만들어지고 미래 성능을 과대평가할 수 있다.

15. Meta Prophet이 자동으로 포착하는 주요 구성 요소의 조합은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
Prophet은 시계열을 추세, 계절성, 휴일 효과 등의 구성 요소로 나누어 추정하고 미래 값을 예측한다.

16. Prophet에서 예측할 미래 날짜를 포함한 DataFrame을 만드는 메서드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
make_future_dataframe(periods=...)은 학습 날짜에 지정한 수의 미래 기간을 추가한 DataFrame을 생성한다.

17. 시계열 모델을 평가할 때 적절한 데이터 분할 방법은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
시간 순서를 지킨 분할은 과거 정보로 미래를 예측하는 실제 상황을 모사하고 미래 정보 누출을 막는다.

18. GBRT의 핵심 학습 원리로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
GBRT는 약한 회귀 트리를 순차적으로 추가하며 앞선 모델의 오차인 잔차를 반복적으로 줄여 강한 모델을 만든다.

19. Prophet과 GBRT의 비교로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
Prophet은 추세·계절성·휴일 효과 중심의 시계열 프레임워크이고, GBRT는 여러 트리가 이전 예측의 잔차를 순차 학습하는 앙상블이다.

20. S&P500 실습 프로젝트의 올바른 진행 순서는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
실습은 yfinance 데이터 수집, 기술적 지표·거래 전략·백테스팅, Prophet 단기 예측, GBRT 특성 설계와 예측 기반 백테스팅 순으로 진행한다.

댓글