프로젝트 뼈대와 시각 규칙
앱의 폴더·설정·비밀값 취급과 시간대 변환 규칙을 정해요. 공급자 시간이 달라도 내부에서는 한 기준으로 비교할 수 있게 합니다.
산출물: 실행 가능한 Python 기반, 설정 검사, UTC 시각 계약.
유가를 맞히는 숫자 하나를 만드는 프로젝트가 아니에요. 시장 자료를 시간 순서대로 모으고, 상태 변화와 향후 가격의 여러 가능성을 보여주는 의사결정 보조 시스템이에요.
매일 “현재 시장이 어떤 상태인가?”, “상방을 지지하는 근거가 갑자기 강해졌는가?”, “앞으로 5·10·20거래일에 어떤 가격 범위가 가능한가?”를 함께 답하도록 설계했어요.
예를 들어 CFTC 포지션은 화요일 시장을 설명하지만 금요일에 발표됩니다. 목요일 예측에 그 숫자를 넣으면, 과거에 몰랐던 미래 정보를 몰래 사용한 셈이에요. 이를 시점 누수(look-ahead bias)라고 합니다.
예측 시각보다 available_at이 늦은 자료는 사용하지 않아요. 과거에 우리 시스템이 실제로 갖고 있던 값만 재현할 때는 ingested_at도 확인합니다. 원천이 과거 값을 나중에 수정해도 원래 값을 덮어쓰지 않고 수정본을 따로 보관해요.
EIA 재고·정제, FRED/ALFRED 가격·거시, CFTC 포지션, Baker Hughes 시추기, NOAA/NHC 폭풍, GDELT 뉴스를 사용해 기본 시스템을 구성해요.
CME 선물·옵션, Kpler 물류, S&P Global physical 데이터는 계약에 따라 붙여요. 현재 이 유료 연결은 비활성 상태이고, 없는 값을 임의로 채우지 않아요.
| 영역 | 쉽게 말하면 | 예시 |
|---|---|---|
| Physical | 원유가 실제로 얼마나 생산·이동하나요? | 생산량, 수출입, 시추기 수 |
| Inventory | 저장고가 차고 있나요, 비고 있나요? | 미국 상업 원유, Cushing 재고 |
| Products | 정유제품과 정제 활동은 어떤가요? | 휘발유·경유 재고, 정제율 |
| Futures Curve | 이번 달과 먼 달 선물 가격 관계는 어떤가요? | CL1~CL12 곡선, 근월·원월 가격차 |
| Positioning | 시장 참여자는 어느 방향에 포지션을 쌓나요? | CFTC managed money long/short |
| Options | 옵션 시장은 어느 쪽 위험에 더 값을 매기나요? | 변동성, 콜·풋 쏠림 |
| Geopolitics | 공급 차질을 부를 사건이 있나요? | 허리케인, 공급중단 관련 뉴스 |
“강한 신호”와 “높은 상승확률”은 같은 말이 아닙니다. 그래서 모델 출력도 나눠 두었어요.
지금이 공급 타이트닝, 약세, 충격성 변동, 박스권 중 어느 환경에 가까운지 추정해요.
7개 신호가 상방을 얼마나 지지하는지 합칩니다. 하루 변화량도 함께 봐야 급변을 알 수 있어요.
1·5·10·20거래일 뒤 수익률 분포와 +5%, -5% 같은 사건 확률을 별도로 예측해요.
Slow는 재고·생산·포지셔닝처럼 수일~수주에 걸쳐 바뀌는 배경이에요. Fast는 선물곡선·가격·옵션·뉴스처럼 수시간~수일에 움직이는 변화예요. 둘이 함께 강해지는지 보는 것이 중요합니다.
Price confirmation은 가격·거래량·곡선이 신호를 실제로 따라오는지 봅니다. Priced-in은 그 변화가 이미 가격에 얼마나 반영됐는지 봅니다. 강한 신호라도 가격이 먼저 크게 올랐다면 해석이 달라져요.
Slow 72점, Fast 43→79점, OUPI 74점, price confirmation 48점, priced-in 29점이라면 “기초 환경과 빠른 변화가 함께 강해졌지만 가격 확인은 아직 부족하다”라고 읽어요. 이 숫자만으로 매수 결정을 내리지는 않습니다.
일별 3~6개월은 표본이 적어서 우연한 패턴을 외우기 쉬워요. 긴 과거로 기본 관계를 배우고, 최근 자료는 현재 시장에 맞게 보정하는 데 써요.
이 학습 절차는 설계 목표예요. 실제 10~15년 backfill과 walk-forward 학습 실행은 아직 Task 16 범위로 남아 있습니다.
| 상태 | 사람이 읽을 뜻 | 주의할 점 |
|---|---|---|
| CASH / NEUTRAL | 상방 근거가 부족하거나 섞여 있어요. | 현금 보유 명령은 아니에요. |
| WATCH | 평소보다 빠르게 변하는 신호가 보여요. | 상승 확정은 아니에요. |
| BULLISH SETUP | 구조와 단기 촉매가 정렬되고 있어요. | 가격 확인이 더 필요할 수 있어요. |
| CONFIRMED | 가격과 여러 내부 지표도 같은 방향을 확인해요. | 손실 가능성이 없어지는 건 아니에요. |
| EXTENDED | 강한 신호가 가격에 상당 부분 반영됐을 수 있어요. | “더 좋은 진입”이라는 뜻이 아니에요. |
상태 계산은 Task 11 예정 기능이에요. 지금은 위 상태가 실제로 매일 산출되지 않습니다.
아래는 Task 14에서 구현할 화면의 설명용 배치예요. 차트는 관계를 보여주기 위한 그림이며 실제 WTI 데이터가 아닙니다.
네 구간으로 나누면 전체 순서가 보입니다. Task 1~8은 코드와 테스트가 구현된 기반이고, Task 9~16은 앞으로 만들 기능이에요. ‘완료’가 실제 시장 데이터 학습이나 대시보드 가동을 뜻하지는 않습니다.
앱의 폴더·설정·비밀값 취급과 시간대 변환 규칙을 정해요. 공급자 시간이 달라도 내부에서는 한 기준으로 비교할 수 있게 합니다.
산출물: 실행 가능한 Python 기반, 설정 검사, UTC 시각 계약.
값의 관측일·발표일·사용 가능일·우리 수집일과 수정본을 함께 저장해요. “당시 시장에 공개된 값”과 “당시 우리 DB에 있던 값”을 따로 물을 수 있습니다.
산출물: bitemporal DB, 수정 이력 조회, 한 번에 발행되는 snapshot.
공급자가 보낸 원문을 변경 없이 저장하고 중복 수집을 알아봐요. 해석 중 오류가 나도 원본을 남겨 다시 처리할 수 있게 합니다.
산출물: 공통 수집 규격, 원본 checksum, 오류 격리 기록.
EIA, FRED/ALFRED, CFTC, Baker Hughes, NOAA/NHC, GDELT 자료를 같은 형식으로 바꿔요. 서로 다른 공급자 문법은 여기에서 처리합니다.
산출물: 6개 연결기와 고정 응답 fixture. Live 확인은 공급자·키에 따라 일부 제한돼 있어요.
어느 업체에서 받든 WTI 가격·CL1~CL12·옵션·물류 데이터를 같은 이름으로 다루도록 해요. 월물이 바뀔 때 원가격을 보존하며 연속 가격을 계산합니다.
산출물: 시장 데이터 인터페이스와 롤 규칙. 유료 업체 실연결은 권한 미확인으로 비활성입니다.
발표 전이라 없는 값인지, 발표됐는데 수집이 실패한 건지 구별해요. 핵심 가격이 없으면 발행을 막고, 선택 자료가 없으면 경고를 붙입니다.
산출물: PASS / DEGRADED / BLOCK 판정. 2026년 외 휴일 예외는 임시 표시입니다.
7개 영역에서 33개 feature를 만들어요. 예측 시각 전에 공개된 값만 사용하고 유료 자료가 없으면 결측과 coverage 감소를 명시합니다.
산출물: 같은 cutoff에서 다시 만들 수 있는 feature snapshot과 계보.
이후 가격의 단순수익률·달러 변화·최대 유리/불리 이동을 정답으로 만들고, 학습 기간과 시험 기간이 겹치지 않게 시간 순서로 나눕니다.
산출물: label, 모호한 경로 표시, purge·embargo가 있는 walk-forward 분할.
“그냥 최근 평균을 쓰는 방법”과 새 모델을 먼저 비교해요. 시장이 공급 타이트닝·약세·충격·횡보 중 어디에 가까운지도 추정합니다.
산출물: benchmark 점수, 4개 레짐 확률과 불확실성 표시.
1·5·10·20거래일 뒤 수익률의 중간값·넓은 범위와 +5% 같은 사건 확률을 학습해요. 과신하지 않도록 확률을 검증하고 모델 버전을 관리합니다.
산출물: 예측분포, 보정된 확률, 승인 전에는 운영 모델로 바뀌지 않는 registry.
평소 패턴이 갑자기 달라졌는지 찾고 7개 신호를 OUPI로 요약해요. 가격 확인과 priced-in을 따로 계산해 다섯 시장 상태로 해석합니다.
산출물: 급변 이벤트, 상방압력, 상태 전환과 근거.
수집→품질→지표→모델→상태를 정해진 시각에 실행해요. EIA 발표 같은 중요한 사건 뒤에는 빠른 부분만 다시 계산하고 이전 발표와 연결합니다.
산출물: 매일 예측 snapshot, 실패 시 이전 성공본 유지, 재생 검증.
대시보드가 가격·확률·점수·이상 신호를 안전하게 조회할 통로를 만들어요. 과거 날짜를 보면 당시 저장된 예측을 그대로 돌려줍니다.
산출물: 버전이 붙은 /v1 데이터 API.
가격과 forecast cone, OUPI 추이, 구성요소, CL1~CL12 곡선, 시장 내부 지표, 이상 신호의 여섯 핵심 차트를 한 화면에 모아요.
산출물: 매일 확인하는 분석 화면과 “당시 알 수 있었던 값” 재생 화면.
왜 점수와 확률이 변했는지 찬성·반대 근거를 보여줘요. 같은 사건으로 알림을 반복하지 않고, 데이터 지연이나 모델 성능 저하도 감시합니다.
산출물: 설명 카드, 중요 변화 알림, 운영·장애 대응 문서.
권한이 있는 실제 데이터를 과거부터 채우고 매 시점의 예측을 재현해요. 성능·확률 보정·누수를 검증하고 대시보드 사용자 가이드를 완성합니다.
산출물: 실제 데이터 walk-forward 보고서, 최종 acceptance, 사용 안내서.
구현 순서상 다음은 Task 9의 기준선·레짐 모델이에요. 다만 이 HTML은 설계 안내서이며, 실제 예측 성능이나 투자 판단의 근거가 되지는 않습니다.