WTI MARKET MONITOR · 이해 가이드
Beginner's guide · 설계 설명

WTI 예측 시스템,
처음부터 이해하기

유가를 맞히는 숫자 하나를 만드는 프로젝트가 아니에요. 시장 자료를 시간 순서대로 모으고, 상태 변화와 향후 가격의 여러 가능성을 보여주는 의사결정 보조 시스템이에요.

시장 레짐상방압력 OUPI확률분포급변 감지차트 대시보드

1. 시스템은 무엇을 하나요?

매일 “현재 시장이 어떤 상태인가?”, “상방을 지지하는 근거가 갑자기 강해졌는가?”, “앞으로 5·10·20거래일에 어떤 가격 범위가 가능한가?”를 함께 답하도록 설계했어요.

처음부터 화면까지, 여섯 단계

  1. 01 · 자료원천 데이터EIA 재고, CFTC 포지션, 유가, 선물곡선, 날씨·뉴스 등을 받아요.
  2. 02 · 보관원문과 수정 이력받은 원문과 발표·수집 시각을 남겨 과거를 다시 볼 수 있게 해요.
  3. 03 · 점검품질·예측용 지표늦거나 이상한 자료를 표시하고, 당시 알 수 있던 값으로 지표를 만들어요.
  4. 04 · 학습 예정모델과 확률레짐, 향후 수익률 범위, 임계 상승·하락 확률을 계산해요.
  5. 05 · 판단 예정급변·상방압력·상태Slow/Fast 신호와 가격 확인을 묶어 변화의 이유를 설명해요.
  6. 06 · 전달 예정차트·알림근거와 불확실성을 대시보드에 보여주고 중요 변화만 알립니다.
실선 카드 = Task 1~8에서 구현된 기반. 점선 카드 = 앞으로 구현할 기능.
학습할 때과거 가격이 이후 어떻게 움직였는지 정답(label)을 만들고, 과거 → 미래 순서로 검증해요. 이 기반이 Task 8입니다.
매일 사용할 때오늘까지 공개된 지표만 모델에 넣어 새 예측(snapshot)을 만들어요. 실제 자동 실행은 Task 12입니다.

2. 데이터에서 가장 중요한 것은 ‘언제 알 수 있었나’예요

예를 들어 CFTC 포지션은 화요일 시장을 설명하지만 금요일에 발표됩니다. 목요일 예측에 그 숫자를 넣으면, 과거에 몰랐던 미래 정보를 몰래 사용한 셈이에요. 이를 시점 누수(look-ahead bias)라고 합니다.

① observed_at무엇을 측정한 날?예: 화요일 포지션 기준일
② published_at공급자가 언제 발표?예: 금요일 발표 시각
③ available_at언제 사용할 수 있었나?예: 발표 직후 실제 이용 가능 시각
④ ingested_at우리 시스템은 언제 받았나?예: 그날 수집이 끝난 시각
한 줄 규칙

예측 시각보다 available_at이 늦은 자료는 사용하지 않아요. 과거에 우리 시스템이 실제로 갖고 있던 값만 재현할 때는 ingested_at도 확인합니다. 원천이 과거 값을 나중에 수정해도 원래 값을 덮어쓰지 않고 수정본을 따로 보관해요.

어떤 자료를 모으나요?

공개·무료 원천

EIA 재고·정제, FRED/ALFRED 가격·거시, CFTC 포지션, Baker Hughes 시추기, NOAA/NHC 폭풍, GDELT 뉴스를 사용해 기본 시스템을 구성해요.

권한 확인이 필요한 원천

CME 선물·옵션, Kpler 물류, S&P Global physical 데이터는 계약에 따라 붙여요. 현재 이 유료 연결은 비활성 상태이고, 없는 값을 임의로 채우지 않아요.

7개 신호 영역

영역쉽게 말하면예시
Physical원유가 실제로 얼마나 생산·이동하나요?생산량, 수출입, 시추기 수
Inventory저장고가 차고 있나요, 비고 있나요?미국 상업 원유, Cushing 재고
Products정유제품과 정제 활동은 어떤가요?휘발유·경유 재고, 정제율
Futures Curve이번 달과 먼 달 선물 가격 관계는 어떤가요?CL1~CL12 곡선, 근월·원월 가격차
Positioning시장 참여자는 어느 방향에 포지션을 쌓나요?CFTC managed money long/short
Options옵션 시장은 어느 쪽 위험에 더 값을 매기나요?변동성, 콜·풋 쏠림
Geopolitics공급 차질을 부를 사건이 있나요?허리케인, 공급중단 관련 뉴스

3. 모델은 서로 다른 질문에 따로 답해요

“강한 신호”와 “높은 상승확률”은 같은 말이 아닙니다. 그래서 모델 출력도 나눠 두었어요.

시장 배경레짐(Regime)상태 이름 + 그 상태일 확률

지금이 공급 타이트닝, 약세, 충격성 변동, 박스권 중 어느 환경에 가까운지 추정해요.

증거의 강도OUPI · 상방압력0~100점, 확률 아님

7개 신호가 상방을 얼마나 지지하는지 합칩니다. 하루 변화량도 함께 봐야 급변을 알 수 있어요.

미래의 여러 가능성확률예측확률 0~100% + 가격 범위

1·5·10·20거래일 뒤 수익률 분포와 +5%, -5% 같은 사건 확률을 별도로 예측해요.

Slow와 Fast

Slow는 재고·생산·포지셔닝처럼 수일~수주에 걸쳐 바뀌는 배경이에요. Fast는 선물곡선·가격·옵션·뉴스처럼 수시간~수일에 움직이는 변화예요. 둘이 함께 강해지는지 보는 것이 중요합니다.

가격 확인과 이미 반영된 정도

Price confirmation은 가격·거래량·곡선이 신호를 실제로 따라오는지 봅니다. Priced-in은 그 변화가 이미 가격에 얼마나 반영됐는지 봅니다. 강한 신호라도 가격이 먼저 크게 올랐다면 해석이 달라져요.

가상 예시 · 실제 예측이 아닙니다

Slow 72점, Fast 43→79점, OUPI 74점, price confirmation 48점, priced-in 29점이라면 “기초 환경과 빠른 변화가 함께 강해졌지만 가격 확인은 아직 부족하다”라고 읽어요. 이 숫자만으로 매수 결정을 내리지는 않습니다.

왜 3~6개월만 학습하지 않나요?

일별 3~6개월은 표본이 적어서 우연한 패턴을 외우기 쉬워요. 긴 과거로 기본 관계를 배우고, 최근 자료는 현재 시장에 맞게 보정하는 데 써요.

10~15년기본 관계 학습여러 시장 국면을 경험하게 해요.
최근 2~3년최근 구조에 가중오래된 사례보다 최근 시장을 조금 더 반영해요.
최근 3~6개월현재 레짐 보정확률이 과하거나 약한지 다시 맞춰요.
최근 20~60일빠른 변화 적응새로운 변화에 모델의 반응을 조절해요.

이 학습 절차는 설계 목표예요. 실제 10~15년 backfill과 walk-forward 학습 실행은 아직 Task 16 범위로 남아 있습니다.

시스템이 표시할 시장 상태

상태사람이 읽을 뜻주의할 점
CASH / NEUTRAL상방 근거가 부족하거나 섞여 있어요.현금 보유 명령은 아니에요.
WATCH평소보다 빠르게 변하는 신호가 보여요.상승 확정은 아니에요.
BULLISH SETUP구조와 단기 촉매가 정렬되고 있어요.가격 확인이 더 필요할 수 있어요.
CONFIRMED가격과 여러 내부 지표도 같은 방향을 확인해요.손실 가능성이 없어지는 건 아니에요.
EXTENDED강한 신호가 가격에 상당 부분 반영됐을 수 있어요.“더 좋은 진입”이라는 뜻이 아니에요.

상태 계산은 Task 11 예정 기능이에요. 지금은 위 상태가 실제로 매일 산출되지 않습니다.

4. 완성되면 대시보드는 이렇게 읽어요

아래는 Task 14에서 구현할 화면의 설명용 배치예요. 차트는 관계를 보여주기 위한 그림이며 실제 WTI 데이터가 아닙니다.

WTI MARKET MONITOR · BULLISH SETUPOUPI / 확률 / 자료 신선도 / 모델 버전

① WTI 가격 + forecast cone

실제 가격 뒤에 미래 50/80/90% 범위를 겹쳐 표시

② OUPI · Slow · Fast 추이

절대값보다 갑작스러운 변화도 확인

③ 7개 구성요소

강도와 자료 coverage를 함께 표시
재고
선물곡선
포지션

④ CL1~CL12 선물곡선

오늘·어제·한 주 전 월물 가격 비교

⑤ Market internals

재고·정제·옵션·거래량의 동조 확인
Cushing 재고정제율Managed Money옵션 skew

⑥ 이상 신호 heatmap

평소와 달라진 지표가 언제, 얼마나 많았는지
설계 개념도 · 실제 서비스 화면이나 실제 예측이 아닙니다. 가격·확률·OUPI 점수의 단위를 분리해 표시하도록 설계했습니다.

완성 후 매일 5~10분 사용 순서

  1. 자료가 신선한지 먼저 확인해요. 마지막 가격 날짜와 EIA/CFTC 발표 시각, 결측 경고를 봅니다.
  2. 상태가 어떻게 바뀌었는지 봐요. OUPI의 하루·5일 변화와 Slow/Fast가 함께 움직였는지 확인합니다.
  3. 확률과 가격 범위를 비교해요. +5%와 -5% 확률, 예측구간의 폭을 함께 봅니다.
  4. 근거와 반대 근거를 확인해요. 재고·곡선·포지션·옵션·뉴스 중 무엇이 실제로 변했는지 펼쳐 봅니다.
  5. priced-in과 개인 위험 기준을 확인해요. 시스템 상태를 별도의 투자 판단 규칙과 결합합니다. 시스템은 주문을 내리지 않습니다.

5. Task 1~16, 각각 무슨 일인가요?

네 구간으로 나누면 전체 순서가 보입니다. Task 1~8은 코드와 테스트가 구현된 기반이고, Task 9~16은 앞으로 만들 기능이에요. ‘완료’가 실제 시장 데이터 학습이나 대시보드 가동을 뜻하지는 않습니다.

A. 자료를 믿고 다시 볼 수 있게 만들기

Task 1~4 · 구현
TASK 01구현

프로젝트 뼈대와 시각 규칙

앱의 폴더·설정·비밀값 취급과 시간대 변환 규칙을 정해요. 공급자 시간이 달라도 내부에서는 한 기준으로 비교할 수 있게 합니다.

산출물: 실행 가능한 Python 기반, 설정 검사, UTC 시각 계약.

TASK 02구현

과거를 덮어쓰지 않는 데이터베이스

값의 관측일·발표일·사용 가능일·우리 수집일과 수정본을 함께 저장해요. “당시 시장에 공개된 값”과 “당시 우리 DB에 있던 값”을 따로 물을 수 있습니다.

산출물: bitemporal DB, 수정 이력 조회, 한 번에 발행되는 snapshot.

TASK 03구현

원본 수집 상자

공급자가 보낸 원문을 변경 없이 저장하고 중복 수집을 알아봐요. 해석 중 오류가 나도 원본을 남겨 다시 처리할 수 있게 합니다.

산출물: 공통 수집 규격, 원본 checksum, 오류 격리 기록.

TASK 04구현 · 별도 검수 생략

무료 데이터 연결기

EIA, FRED/ALFRED, CFTC, Baker Hughes, NOAA/NHC, GDELT 자료를 같은 형식으로 바꿔요. 서로 다른 공급자 문법은 여기에서 처리합니다.

산출물: 6개 연결기와 고정 응답 fixture. Live 확인은 공급자·키에 따라 일부 제한돼 있어요.

B. 예측에 쓸 입력과 정답 만들기

Task 5~8 · 구현
TASK 05구현

선물·옵션 데이터의 공통 규격

어느 업체에서 받든 WTI 가격·CL1~CL12·옵션·물류 데이터를 같은 이름으로 다루도록 해요. 월물이 바뀔 때 원가격을 보존하며 연속 가격을 계산합니다.

산출물: 시장 데이터 인터페이스와 롤 규칙. 유료 업체 실연결은 권한 미확인으로 비활성입니다.

TASK 06구현

발표 달력과 품질 신호등

발표 전이라 없는 값인지, 발표됐는데 수집이 실패한 건지 구별해요. 핵심 가격이 없으면 발행을 막고, 선택 자료가 없으면 경고를 붙입니다.

산출물: PASS / DEGRADED / BLOCK 판정. 2026년 외 휴일 예외는 임시 표시입니다.

TASK 07구현

시점 안전한 예측용 지표

7개 영역에서 33개 feature를 만들어요. 예측 시각 전에 공개된 값만 사용하고 유료 자료가 없으면 결측과 coverage 감소를 명시합니다.

산출물: 같은 cutoff에서 다시 만들 수 있는 feature snapshot과 계보.

TASK 08구현

학습 정답과 공정한 시험지

이후 가격의 단순수익률·달러 변화·최대 유리/불리 이동을 정답으로 만들고, 학습 기간과 시험 기간이 겹치지 않게 시간 순서로 나눕니다.

산출물: label, 모호한 경로 표시, purge·embargo가 있는 walk-forward 분할.

C. 예측·급변 감지·매일 실행

Task 9~12 · 예정
TASK 09예정

기준선과 시장 레짐 모델

“그냥 최근 평균을 쓰는 방법”과 새 모델을 먼저 비교해요. 시장이 공급 타이트닝·약세·충격·횡보 중 어디에 가까운지도 추정합니다.

산출물: benchmark 점수, 4개 레짐 확률과 불확실성 표시.

TASK 10예정

여러 미래를 예측하고 확률을 보정

1·5·10·20거래일 뒤 수익률의 중간값·넓은 범위와 +5% 같은 사건 확률을 학습해요. 과신하지 않도록 확률을 검증하고 모델 버전을 관리합니다.

산출물: 예측분포, 보정된 확률, 승인 전에는 운영 모델로 바뀌지 않는 registry.

TASK 11예정

급변·OUPI·상태 판단

평소 패턴이 갑자기 달라졌는지 찾고 7개 신호를 OUPI로 요약해요. 가격 확인과 priced-in을 따로 계산해 다섯 시장 상태로 해석합니다.

산출물: 급변 이벤트, 상방압력, 상태 전환과 근거.

TASK 12예정

매일 자동으로 한 번 발행

수집→품질→지표→모델→상태를 정해진 시각에 실행해요. EIA 발표 같은 중요한 사건 뒤에는 빠른 부분만 다시 계산하고 이전 발표와 연결합니다.

산출물: 매일 예측 snapshot, 실패 시 이전 성공본 유지, 재생 검증.

D. 사람이 쓰는 화면과 실제 데이터 검증

Task 13~16 · 예정
TASK 13예정

읽기 전용 API

대시보드가 가격·확률·점수·이상 신호를 안전하게 조회할 통로를 만들어요. 과거 날짜를 보면 당시 저장된 예측을 그대로 돌려줍니다.

산출물: 버전이 붙은 /v1 데이터 API.

TASK 14예정

차트 중심 대시보드

가격과 forecast cone, OUPI 추이, 구성요소, CL1~CL12 곡선, 시장 내부 지표, 이상 신호의 여섯 핵심 차트를 한 화면에 모아요.

산출물: 매일 확인하는 분석 화면과 “당시 알 수 있었던 값” 재생 화면.

TASK 15예정

설명·알림·운영 감시

왜 점수와 확률이 변했는지 찬성·반대 근거를 보여줘요. 같은 사건으로 알림을 반복하지 않고, 데이터 지연이나 모델 성능 저하도 감시합니다.

산출물: 설명 카드, 중요 변화 알림, 운영·장애 대응 문서.

TASK 16예정

실제 10~15년 데이터로 최종 시험

권한이 있는 실제 데이터를 과거부터 채우고 매 시점의 예측을 재현해요. 성능·확률 보정·누수를 검증하고 대시보드 사용자 가이드를 완성합니다.

산출물: 실제 데이터 walk-forward 보고서, 최종 acceptance, 사용 안내서.

6. 자주 나오는 말만 다시 보기

WTI / CL
WTI는 미국 원유 가격 기준이고, CL은 WTI 선물 계약의 대표 코드예요.
선물곡선(CL1~CL12)
가까운 달부터 먼 달까지 선물 가격을 나란히 놓은 선이에요.
Feature / Label
Feature는 예측할 때 이미 아는 입력, label은 나중에 확인한 결과예요.
레짐(Regime)
시장이 비슷한 방식으로 움직이는 큰 환경이나 국면을 말해요.
Forecast cone
한 줄의 예상가격 대신 가능한 가격 범위를 부채꼴로 보여주는 차트예요.
Walk-forward
과거로 배우고 그다음 기간을 시험하는 일을 시간을 앞으로 옮기며 반복해요.
MFE / MAE
진입 기준 가격에서 이후 가장 유리했던 움직임 / 가장 불리했던 움직임이에요.
Coverage
필요한 자료 가운데 실제로 유효하게 채워진 비율이에요. 낮으면 확신도도 낮춰야 해요.
현재의 다음 단계

구현 순서상 다음은 Task 9의 기준선·레짐 모델이에요. 다만 이 HTML은 설계 안내서이며, 실제 예측 성능이나 투자 판단의 근거가 되지는 않습니다.

상세 명세는 전체 구현 계획서, 현재 구현 상태는 작업 추적 파일에서 확인할 수 있어요.