오일캐스트

방법론

무엇을 쓰는지, 무엇을 못 하는지 전부 적습니다. "AI가 예측했습니다"는 신뢰를 얻지 못합니다. 우리에게 불리한 것도 여기 있습니다.

1. 무엇을 맞히려 하나

7일 뒤 전국 평균 소매가입니다. 휘발유(보통)와 자동차용 경유 둘 다 냅니다. 개별 주유소 가격이 아니라 전국 평균이라, 우리 동네 가격과는 다릅니다. 대답하려는 질문은 하나입니다 — 지금 넣을까, 다음 주에 넣을까.

2. 데이터

계열출처주기기간
전국 평균 소매가한국석유공사 오피넷일별2011~
국제 제품가 (싱가포르)한국석유공사 오피넷일별2011~
국제 원유가 (Dubai·Brent·WTI)한국석유공사 오피넷일별2011~
원/달러 환율미국 세인트루이스 연준(FRED)일별1981~

국제 제품가는 달러/배럴이라 환율을 곱해 원/리터로 바꿔서 씁니다. 달러값이 그대로여도 환율이 오르면 국내 기름값은 오르기 때문에, 둘을 따로 보면 그 경로를 놓칩니다.
주말·공휴일에는 국제시장이 쉬고 주유소는 쉬지 않습니다. 빈 날은 직전 값으로 채웁니다 — 뒤의 값을 당겨오면 백테스트가 거짓말이 됩니다.

3. 모델

최소제곱 회귀 하나입니다. 신경망도 부스팅도 쓰지 않습니다. 설명할 수 없는 모델은 적중률이 같아도 이 사이트에서 쓸 수 없습니다. 쓰는 값은 다섯 가지입니다.

입력내용
관성국내 소매가의 3·7·14·28일 변화
국제 제품가7·14·21·35·42일 변화 (원/리터 환산)
시차항15·21일 전의 국제가 변화 — 실측한 반영 시차가 15일입니다
오차수정국제가는 올랐는데 소매가가 아직 안 따라온 정도
환율14일 변화

계수는 코드에 없습니다. 매번 그 시점까지의 데이터로 다시 적합합니다. 채점에 쓰는 과거 예보도 전진 검증으로 만듭니다 — 726개 예보 각각이 그 날짜까지의 데이터만 보고 만들어졌습니다. 미래를 본 예보는 하나도 없습니다.

4. 우리에게 불리한 사실

이 사이트를 만들 때의 전제는 "다음 주 기름값은 국제 유가에 이미 적혀 있다"였습니다. 백테스트를 해보니 틀렸습니다.

입력을 하나씩 빼보면, 관성을 빼면 오차가 45% 나빠지고 국제 제품가를 빼면 4.5% 나빠집니다. 경유는 관성만 쓴 모델이 국제가를 넣은 모델보다 낫습니다. 정확히 말하면 다음 주 기름값은 이번 주 국내 기름값에 거의 다 적혀 있습니다.

그래서 이 사이트가 파는 것은 모델의 정교함이 아닙니다. 기름값에 관성이 있다는 사실을 "지금 넣으세요"로 번역하는 일입니다. 오피넷도 언론도 그 번역을 해주지 않습니다. 국제 제품가는 휘발유에서 실제로 도움이 되고 급변기 경보로도 쓰이므로 계속 넣습니다.

5. 확신도

예측폭이 클수록 실제로 잘 맞습니다. 그래서 예측폭 자체가 확신도입니다. 아래는 실제 채점 결과이고, 첫 화면의 확신도 막대가 이 표를 가리킵니다.

확신도방향 적중
확신 높음 237 97.5%
확신 있음 166 96.4%
보통 178 88.8%
불확실 145 67.6%

'불확실' 구간은 동전던지기에 가깝습니다. 그런 주에는 방향을 말하지 않습니다.
여기에 하나를 더 겁니다 — 국제가 변동성이 상위 20%에 들면 확신도를 강제로 한 단계 낮춥니다. 급변기에는 오차가 평소의 다섯 배까지 벌어지기 때문입니다(아래 한계 참고).

6. 신호등

신호조건
기다리세요 리터당 5원 넘게 내릴 것으로 볼 때
지금 넣으세요 리터당 5원 넘게 오를 것으로 볼 때
아무 때나그 사이 — 기다릴 값어치가 없을 때
모르겠습니다확신도가 가장 낮을 때

'아무 때나'가 기본 상태입니다. 실제 7일 변동폭의 중앙값은 리터당 6원 남짓이고, 40L로 치면 240원입니다. 네 주 중 세 주는 40L 기준 500원도 차이가 안 납니다. 매주 "지금 넣으세요"를 외치는 화면은 넷 중 셋이 거짓말이 됩니다.

7. 채점

주 1회 결정으로 셉니다. 매일 세면 같은 구간을 일곱 번 세는 셈이라 성적이 부풀려집니다.
공개 지표는 적중률이 아니라 누적 절약액입니다. 우리가 '기다려'라고 한 주에만 40L 기준 차액을 더하고, 빗나가서 손해 본 주는 마이너스로 그대로 더합니다. 현재 726주 누적 123,650원입니다.

전략연 절약 (40L 기준)
이 모델+8,856원
관성만 (지난주 방향이 이어진다)+8,125원
동전던지기+650원
항상 기다린다+258원
항상 지금 넣는다 (기준)0원

"항상 기다린다"가 거의 0원인 것이 중요합니다. 15년간 7일 변화의 평균이 −0.05원/L라 추세가 없습니다. 절약액이 추세를 판 것이 아니라 예측에서 나왔다는 뜻입니다. 다만 관성만 써도 8,125원이라는 것도 같이 보셔야 합니다 — 모델이 더한 몫은 연 700원쯤입니다.

8. 한계

급변기에는 잘 맞지 않습니다. 국제 유가가 크게 흔들린 구간에서 오차가 평소의 다섯 배까지 벌어졌고, 그때는 관성 베이스라인에도 졌습니다. 확신도를 낮춰 표시하지만 낮춘다고 맞아지는 것은 아닙니다.

지역별 예보가 없습니다. 시도별 과거 시계열이 무료로 공개되지 않아 검증할 수 없습니다. 현재가는 매일 모으고 있으므로 표본이 쌓이면 그때 만듭니다.

유류세 변경이 모델에 안 들어가 있습니다. 사전 공고되니 넣을 수 있는데 아직 안 넣었고, 지금은 그냥 오차로 흡수됩니다. 유류세 페이지는 별도로 계산합니다.

전국 평균입니다. 상표·셀프 여부·동네에 따라 실제 가격은 크게 다릅니다.

9. 하지 않는 것

확정한 예보를 나중에 고치지 않습니다 — 실현값만 채웁니다.
가장 싼 주유소를 찾아주지 않습니다. 그건 오피넷이 우리보다 정확합니다.
유류세가 연장될지 환원될지 전망하지 않습니다. 그건 정부가 정하는 일입니다.
유가 선물이나 정유주 이야기를 하지 않습니다. 소비 판단을 돕는 정보이고 투자 조언이 아닙니다.