오늘은
PatchTST,TFT,iTransformer를 아주 깊게 구현하기보다, "무엇을 더 잘 보려고 만든 모델인가?"를 이해하는 날입니다.
- 최신 시계열 모델 이름을 덜 무섭게 느끼게 합니다.
- 각 모델이 어떤 힌트에 강한지 감을 잡습니다.
- 웹앱에서 "여러 힌트를 함께 보는 문제"를 체험할 준비를 합니다.
| 모델 | 쉬운 그림 | 잘하는 일 |
|---|---|---|
| PatchTST | 긴 주가 차트를 며칠씩 잘라 읽기 | 긴 차트를 조각으로 보기 |
| TFT | 가격, 거래량, 계절을 같이 읽기 | 여러 힌트를 함께 보기 |
| iTransformer | 여러 종목 관계를 함께 보기 | 변수끼리 연결 읽기 |
| 낱말 | 한자·영어 | 쉬운 뜻 |
|---|---|---|
| patch | 패치 / patch | 조각. 긴 시계열을 일정 길이로 잘라낸 하나의 데이터 덩어리 |
| fusion | 融合 / fusion | 여러 힌트를 합치기. 融(녹을 융)+合(합할 합). 여러 입력 정보를 하나의 벡터로 섞는 과정 |
| variable | 變數 / variable | 바뀌는 입력값 하나. 變(바뀔 변)+數(셀 수). 모델이 입력으로 받는 각각의 특성(예: 종가, 거래량) |
| multivariate | 多變量 / multivariate | 여러 입력을 함께 쓰는 것. 多(많을 다)+變量(변하는 양). 단일 변수가 아닌 여러 특성을 동시에 넣어 예측하는 방식 |
기본 Transformer도 똑똑하지만, 시계열 문제에서는 더 보고 싶은 것이 있습니다.
- 긴 구간을 더 편하게 읽고 싶다
- 가격 말고 거래량, 계절, 이벤트도 같이 보고 싶다
- 종목 여러 개가 함께 움직이는 관계도 보고 싶다
그래서 시계열용 Transformer 가족이 생겼다고 생각하면 쉽습니다.
| 시간 | 할 일 |
|---|---|
| 8분 | 이 문서에서 세 모델 차이를 읽습니다. |
| 5분 | 메인 학습 허브에서 chapter103 설명을 다시 봅니다. |
| 4분 | 주가 예측 타겟팅 실험실에서 PatchTST/iTransformer 대응 예시 카드를 읽습니다. |
| 3분 | 호텔-주가 실험실에서 TFT 대응 멀티팩터 예시를 확인합니다. |
- 메인 학습 허브에서
chapter103을 열어 attention 개념을 다시 봅니다. - 주가 예측 타겟팅 실험실로 이동해
Transformer 계열 투자 예시 가이드를 읽습니다. - PatchTST는 긴 차트, iTransformer는 여러 종목 비교에 닿아 있다는 설명을 확인합니다.
- 이어서 호텔-주가 실험실로 이동해
Transformer 계열 주식 예시 매핑을 봅니다. - 계절성, 신호, 혼동 행렬 같은 탭 이름을 읽으며 TFT식 멀티팩터 입력을 연결합니다.
오늘은 결과 숫자를 다 외우지 않아도 됩니다.
중요한 것은 **"한 가지 힌트만 보는 문제가 아니구나"**를 느끼는 것입니다.
현재 웹앱은 PatchTST/TFT/iTransformer를 전용 모델 버튼으로 직접 학습시키지는 않습니다.
대신 아래처럼 투자 상황 예시로 연결되어 있습니다.
| 모델 | 현재 웹앱 대응 화면 | 투자 예시 |
|---|---|---|
| PatchTST | /predict | 6~12개월 단일 종목 CSV를 올려 장기 추세, 모멘텀, 변동성 특성이 어떻게 읽히는지 비교 |
| TFT | /hotel-stock | 실적·레짐·가격 파생 특성을 함께 넣어 외생 변수까지 반영하는 멀티팩터 투자 판단 |
| iTransformer | /predict, /hotel-stock | 여러 종목을 같은 날짜축으로 비교하거나 업종별 반응 차이를 함께 해석 |
- 가격 말고 또 어떤 힌트가 필요할 것 같나요?
- 계절이나 이벤트가 주가와 함께 움직일 수 있을까요?
- 여러 힌트를 한 번에 보는 모델이 왜 필요할까요?
반도체주는 실적 발표 전후로 갑자기 움직일 수 있습니다.
이때 모델은 하루치 가격만 보는 것보다 발표 전 몇 주 흐름을 같이 보는 편이 더 좋습니다.
모델이 같이 볼 수 있는 힌트:
- 가격
- 거래량
- 5일 이동평균
- 20일 이동평균
- RSI
이처럼 여러 신호를 한 번에 보면 "그냥 올랐다"보다
"거래량까지 붙은 상승인지"를 더 잘 구분할 수 있습니다.
자동차주를 본다고 해봅시다.
- 환율 상승
- 유가 하락
- 금리 동결
같은 거시경제 힌트도 함께 보면
기업 뉴스만 볼 때보다 더 넓은 그림을 읽을 수 있습니다.
flowchart TD
A["긴 시계열 입력\n(수백 시점 주가)"] --> B["패치 분할\n일정 길이 P씩 잘라 N개 조각 생성"]
B --> C["패치 임베딩\n각 조각 → d차원 벡터"]
C --> D["위치 인코딩 추가\n시간 순서 정보 부여"]
D --> E["Transformer Encoder\nSelf-Attention으로 패치 간 관계 학습"]
E --> F["예측 헤드\n미래 H시점 값 출력"]
flowchart TD
A["과거 시계열\n(가격·거래량)"] --> B["LSTM 인코더\n시계열 패턴 추출"]
C["외생 변수\n(거시경제·달력 특성)"] --> D["Variable Selection Network\n중요 변수 가중 선택"]
E["정적 특성\n(종목·섹터 코드)"] --> D
D --> F["Gated Residual Network\n불필요 정보 게이팅"]
B --> F
F --> G["Temporal Self-Attention\n시간 중요도 학습"]
G --> H["분위수 예측 출력\n(10%, 50%, 90%)"]
flowchart TD
A["다변량 시계열 입력\n(여러 종목·변수 동시 입력)"] --> B["변수 축 임베딩\n각 변수를 독립 토큰으로 변환"]
B --> C["변수 간 Self-Attention\n종목·변수 상관관계 학습"]
C --> D["피드포워드 네트워크\n각 변수 표현 강화"]
D --> E["다변량 예측 출력\n여러 종목·변수 동시 예측"]
flowchart TD
RNN["RNN\n(1986)"]
LSTM["LSTM\n(1997)"]
Trans["Transformer\n(2017, Vaswani 외)"]
PatchTST["PatchTST\n(2022, Nie 외)\n시계열 패치 토큰화"]
TFT["TFT\n(2019, Lim 외)\n외생변수·게이팅 융합"]
iTrans["iTransformer\n(2023, THUML)\n변수 축 어텐션"]
RNN -->|"기울기 소실 해결"| LSTM
LSTM -->|"순차 처리 병목 해소"| Trans
Trans -->|"패치 분할로 긴 시계열 처리"| PatchTST
Trans -->|"정적·과거·미래 공변량 융합"| TFT
Trans -->|"변수 간 상관관계 강화"| iTrans
style RNN fill:#d4e6ff
style LSTM fill:#c8e6c9
style Trans fill:#e1bee7
style PatchTST fill:#f8bbd0
style TFT fill:#f8bbd0
style iTrans fill:#f8bbd0
| 모델 | 수학적 의미 | 탄생 배경 | 주식투자 활용 | 만든 사람/대표 GitHub |
|---|---|---|---|---|
| PatchTST | 긴 시계열을 패치 토큰으로 분할해 Transformer attention으로 학습합니다. | 긴 입력에서 계산량을 줄이면서 정보 손실을 최소화하려고 제안되었습니다. | 장기 가격 흐름(수백 시점) 예측, 멀티호라이즌 수익률 예측에 적합합니다. | Yuqi Nie 외 · https://github.com/yuqinie98/PatchTST |
| TFT (Temporal Fusion Transformer) | 정적/과거/미래 공변량을 게이팅·어텐션으로 융합해 예측합니다. | 실제 산업 데이터의 다중 입력(달력/외생변수) 반영 필요에서 등장했습니다. | 가격+거래량+거시지표+달력 특성을 함께 넣는 투자 예측에 강합니다. | Bryan Lim 외 · https://github.com/google-research/google-research/tree/master/tft |
| iTransformer | 시점 축 대신 변수 축 중심 attention으로 다변량 상관관계를 강화합니다. | 변수 수가 많은 시계열에서 변수 간 관계를 더 잘 포착하려는 목적입니다. | 섹터·멀티자산 동시 예측처럼 변수 상호영향이 큰 문제에 유리합니다. | THUML 연구팀 · https://github.com/thuml/iTransformer |
| 모델 | 데이터셋 형태 | 헬스케어 | 자율주행 | 주식투자 | 로봇 | AI Ops |
|---|---|---|---|---|---|---|
| PatchTST | 장기 단변량·다변량 시계열(수백 시점 이상) | 웨어러블 장기 생체신호 예측, 환자 장기 모니터링 | 장거리 주행 패턴 예측, 장기 센서 신호 분석 | 장기 가격 흐름·멀티호라이즌 수익률 예측 | 장기 동작 계획, 환경 변화 장기 예측 | 서버 부하 장기 예측, SLA 이상 사전 감지 |
| TFT | 다변량 시계열 + 외생변수(달력·이벤트 포함) | 복약 순응도·입원 수요 예측, 외부 변수 반영 | 날씨·교통 외생변수 통합 주행 패턴 예측 | 가격·거래량·거시지표·달력 특성 통합 예측 | 다중 센서·외부 환경 융합 동작 예측 | 트래픽 + 이벤트 결합 장애 예측, 운영 계획 |
| iTransformer | 변수 수가 많은 다변량 시계열 데이터 | 다중 생체신호(ECG·SpO₂·혈압) 동시 분석 | 다중 센서 채널 간 상관관계 학습 | 섹터·멀티자산 동시 예측, 변수 간 영향 해석 | 다관절 로봇 다변량 상태 동시 분석 | 다중 메트릭 동시 이상 감지, 상관 장애 탐지 |
PatchTST, TFT, iTransformer는 각각 **"어디를 어떻게 보는가"**가 다릅니다.
주식 투자 솔루션에서 세 모델을 역할별로 나눠 섞으면 강력한 파이프라인이 됩니다.
| 혼합 방법 | 어떻게 섞나요? | 왜 좋을까요? |
|---|---|---|
| 역할 분담 앙상블 | PatchTST로 단일 종목 장기 가격 패턴을 읽고, TFT로 거시경제·계절성 외생변수를 함께 반영하고, iTransformer로 여러 종목 간 상관관계를 잡아 세 신호를 가중 평균 | 각 모델이 서로 다른 "창문"으로 시장을 보기 때문에 정보 손실이 줄어듦 |
| 순차 필터링 | iTransformer로 섹터 내 강세 종목 후보를 먼저 고르고, TFT로 선택된 후보의 외생변수 반응을 추가 분석 | 종목 선별과 상세 분석을 단계별로 나눠 효율이 높아짐 |
| 확률 합의 방식 | 세 모델 중 2개 이상이 "상승" 신호를 낼 때만 매수, 1개 이하면 관망 | 다수결로 거짓 신호를 걸러냄 |
- 롤링 윈도우 검증: 고정된 크기의 학습 창(예: 180일)을 1주일씩 앞으로 밀면서 반복 검증합니다. 시계열 데이터의 분포 변화를 자연스럽게 반영합니다.
- 외생변수 민감도 분석: 금리, VIX, 환율 같은 거시 변수를 하나씩 빼봐서 어떤 변수가 모델에 가장 큰 영향을 미치는지 확인합니다.
- 다변량 예측 오차 분해: 전체 예측 오차 중 "단일 가격 패턴"에서 오는 오차와 "외생변수"에서 오는 오차를 분리해 각 모델의 기여를 파악합니다.
- 멀티호라이즌 검증: 1일 후, 5일 후, 20일 후 예측을 각각 따로 평가해 모델이 어느 기간 예측에 더 강한지 비교합니다.
아주 쉽게 말하면: PatchTST는 차트 패턴 전문가, TFT는 경제 날씨 전문가, iTransformer는 종목 관계 전문가입니다.
세 전문가의 의견을 모아 종합 판단을 내리면 혼자 판단하는 것보다 더 믿을 수 있습니다.
데이터셋 허브는 아래 주소로 움직입니다.
GET /api/datasets: 어떤 CSV가 있는지 목록 보기GET /api/datasets/{id}: 열 이름, 미리보기, 차트 힌트 보기GET /api/datasets/{id}/adapted/stock-lab: 주식 AI 실험실 형식으로 자동 변환
특히 chart_hint 는 이 데이터를 timeseries, scatter, bar 중 어떤 그림으로 읽으면 좋은지 알려줍니다.
POST /api/hotel-stock/train 은 단일 주가만 보지 않고 아래 묶음을 같이 봅니다.
- 호텔 예약률 특성 30개
- 계절성 특성 4개
- 가격 파생 특성 7개
그래서 Day 4에서 말한 “여러 힌트를 한 번에 보기”가 웹앱에서는 실제 특성 묶음으로 구현됩니다.
Transformer 계열 모델은 이름은 복잡하지만 흐름은 비교적 일정합니다.
- 가격·거래량 같은 특성을 만듭니다.
- 각 날짜를 벡터로 바꿉니다.
- 날짜 순서를 알려주는
Positional Encoding을 더합니다. Self-Attention으로 중요한 날짜끼리 연결합니다.- 마지막 표현으로 상승/하락이나 미래 값을 예측합니다.
| 부품 | 역할 |
|---|---|
| Positional Encoding | 날짜 순서 정보 추가 |
| Multi-Head Attention | 여러 관점에서 중요 날짜 계산 |
| Feed-Forward | 비선형 패턴 강화 |
| Residual Connection | 깊은 네트워크 안정화 |
- LSTM 스타일: 최근 흐름을 순서대로 누적해 기억
- Transformer 스타일: 멀리 떨어진 시점도 바로 연결
- 따라서 이벤트 전후나 긴 구간 패턴에서는 Transformer 설명이 더 직관적일 수 있습니다.
PatchTST는 하루를 한 토큰으로 보지 않고, 며칠치 묶음 자체를 하나의 패턴으로 봅니다.
| 개념 | 쉬운 뜻 | 실전 감각 |
|---|---|---|
| Patch | 5일, 7일 같은 짧은 구간 조각 | "3일 연속 상승" 같은 패턴 묶음 |
| Stride | 다음 조각으로 얼마나 이동할지 | 1이면 촘촘, 2면 조금 띄엄띄엄 |
| Patch Attention | 조각끼리 중요도 계산 | 어떤 구간 패턴이 지금과 닮았는지 보기 |
- 장기 차트에서 반복되는 패턴을 찾고 싶을 때
- 하루 단위 잡음보다 며칠 묶음 추세를 보고 싶을 때
- 종목별로 "패턴이 읽히는 정도"를 비교하고 싶을 때
- 삼성전자와 SK하이닉스를 같은
patch_len으로 비교합니다. patch_len=5,stride=2와patch_len=10,stride=5를 바꿔 봅니다.- 어느 설정에서 더 안정적인 정확도가 나오는지 기록합니다.
| 챕터 | 주제 | 실행 방법 |
|---|---|---|
| chapter104 | PatchTST 기초 | cd chapters/chapter104 && python practice.py |
Multi-Head Attention은 "중요 날짜를 여러 방식으로 본다"는 뜻입니다.
| 헤드가 볼 수 있는 관점 | 예시 |
|---|---|
| 단기 모멘텀 | 최근 3~5일 급등·급락 |
| 거래량 이상 | 평소보다 거래가 크게 늘어난 날 |
| 장기 추세 | 이동평균이 꺾이거나 이어지는 흐름 |
| 노이즈 분리 | 중요하지 않은 흔들림 구분 |
- 삼성전자와 SK하이닉스처럼 함께 움직이는 종목은 비슷한 attention 패턴이 나올 수 있습니다.
- 반도체와 IT 서비스처럼 성격이 다른 종목군은 헤드별 반응이 달라질 수 있습니다.
- ETF와 개별 종목을 비교하면, 어떤 쪽이 더 매끄럽고 예측하기 쉬운지도 볼 수 있습니다.
| 챕터 | 주제 | 실행 방법 |
|---|---|---|
| chapter103 | Transformer 기초 | cd chapters/chapter103 && python practice.py |
| chapter105 | Multi-Head Attention | cd chapters/chapter105 && python practice.py |
- 삼성전자, SK하이닉스, 카카오, NAVER를 두 섹터로 나눠 attention 패턴 차이를 적어봅니다.
- 헤드 수를
2,4,8로 바꿔 어떤 설정이 가장 해석하기 쉬운지 비교합니다. - "헤드가 많을수록 무조건 좋은가?"를 직접 실험 결과로 판단해 봅니다.