방법론
무엇을 쓰는지, 무엇을 못 하는지 전부 적습니다. "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일 변화 |
계수는 코드에 없습니다. 매번 그 시점까지의 데이터로 다시 적합합니다. 채점에 쓰는 과거 예보도 전진 검증으로 만듭니다 — 734개 예보 각각이 그 날짜까지의 데이터만 보고 만들어졌습니다. 미래를 본 예보는 하나도 없습니다.
4. 우리에게 불리한 사실
이 사이트를 만들 때의 전제는 "다음 주 기름값은 국제 유가에 이미 적혀 있다"였습니다.
백테스트를 해보니 틀렸습니다.
입력을 하나씩 빼보면, 관성을 빼면 오차가 45% 나빠지고 국제 제품가를 빼면 4.5%
나빠집니다. 경유는 관성만 쓴 모델이 국제가를 넣은 모델보다 낫습니다.
정확히 말하면 다음 주 기름값은 이번 주 국내 기름값에 거의 다 적혀 있습니다.
그래서 이 사이트가 파는 것은 모델의 정교함이 아닙니다. 기름값에 관성이 있다는 사실을
"지금 넣으세요"로 번역하는 일입니다. 오피넷도 언론도 그 번역을 해주지 않습니다.
국제 제품가는 휘발유에서 실제로 도움이 되고 급변기 경보로도 쓰이므로 계속 넣습니다.
5. 확신도
예측폭이 클수록 실제로 잘 맞습니다. 그래서 예측폭 자체가 확신도입니다. 아래는 실제 채점 결과이고, 첫 화면의 확신도 막대가 이 표를 가리킵니다.
| 확신도 | 주 | 방향 적중 |
|---|---|---|
| 확신 높음 | 242 | 95.9% |
| 확신 있음 | 166 | 96.4% |
| 보통 | 181 | 87.8% |
| 불확실 | 145 | 67.6% |
'불확실' 구간은 동전던지기에 가깝습니다. 그런 주에는 주유 시점을 권하지 않습니다.
여기에 하나를 더 겁니다 — 국제가 변동성이 상위 20%에 들면 '확신 높음'·'확신 있음'을 '보통'으로 낮추고, 첫 화면에서 적중률을 말하지 않습니다.
크게 예측한 주에 예측폭이 작은 주의 적중률을 붙이면 믿음의 정도를 잘못 전하기 때문입니다.
급변기에는 오차가 평소의 다섯 배까지 벌어지기 때문입니다(아래 한계 참고).
첫 화면 가격 그림에서 예보점 위아래의 옅은 막대는 최근 156주(10월 20일부터) 휘발유 예보가 실제와 얼마나 벌어졌는지에서 나옵니다. (실제 − 예측)을 줄 세워 가운데 80%가 들어온 폭, 곧 예보 −8.1원부터 +9.4원까지입니다. 이 값도 다시 계산한 채점에서 나왔으므로 실제 오차는 이보다 클 수 있고, 급변기에는 막대 밖으로 나가는 주가 더 많습니다. 경유는 따로 채점하지 않아 막대를 그리지 않습니다.
6. 신호등
| 신호 | 조건 |
|---|---|
| 기다리세요 | 리터당 5원 넘게 내릴 것으로 볼 때 |
| 지금 넣으세요 | 리터당 5원 넘게 오를 것으로 볼 때 |
| 아무 때나 | 그 사이 — 기다릴 값어치가 없을 때 |
| 모르겠습니다 | 확신도가 가장 낮을 때 |
'아무 때나'가 기본 상태입니다. 실제 7일 변동폭의 중앙값은 리터당 6원 남짓이고, 40L로 치면 240원입니다. 네 주 중 세 주는 40L 기준 500원도 차이가 안 납니다. 매주 "지금 넣으세요"를 외치는 화면은 넷 중 셋이 거짓말이 됩니다.
7. 채점
주 1회 결정으로 셉니다. 매일 세면 같은 구간을 일곱 번 세는 셈이라 성적이 부풀려집니다.
공개 지표는 적중률이 아니라 누적 절약액입니다. 우리가 '기다려'라고 한 주에만
40L 기준 차액을 더하고, 빗나가서 손해 본 주는 마이너스로 그대로 더합니다.
현재 734주 누적 123,661원입니다.
아래 표는 2026년 8월 22일 연구 당시(표본 2011~2026년 8월) 값입니다. 전략끼리 비교하려고 그때 한 번 계산했고 매일 갱신하지 않습니다. 지금 기록으로는 이 모델이 연 8,761원입니다(적중률).
| 전략 (2026-08-22 연구) | 연 절약 (40L 기준) |
|---|---|
| 이 모델 | +8,856원 |
| 관성만 (지난주 방향이 이어진다) | +8,125원 |
| 동전던지기 | +650원 |
| 항상 기다린다 | +258원 |
| 항상 지금 넣는다 (기준) | 0원 |
"항상 기다린다"가 거의 0원인 것이 중요합니다. 15년간 7일 변화의 평균이 −0.05원/L라 추세가 없습니다. 절약액이 추세를 판 것이 아니라 예측에서 나왔다는 뜻입니다. 다만 관성만 써도 8,125원이라는 것도 같이 보셔야 합니다 — 모델이 더한 몫은 연 700원쯤입니다.
8. 한계
급변기에는 잘 맞지 않습니다. 국제 유가가 크게 흔들린 구간에서 오차가 평소의
다섯 배까지 벌어졌고, 그때는 관성 베이스라인에도 졌습니다. 확신도를 낮춰 표시하지만
낮춘다고 맞아지는 것은 아닙니다.
설정은 결과를 보고 골랐습니다. 어떤 입력을 쓸지, 5원 기준, 확신도 경계는
2026년 8월에 2011~2026년 전체 결과를 보고 정했습니다. 매주 예보의 계수는 그 주까지의
자료로만 다시 맞추지만, 설정 자체는 사후에 가장 잘 맞은 것을 고른 셈입니다.
그래서 채점 기록은 그때 실제로 예보했을 때보다 좋게 나왔을 수 있습니다.
후보가 셋뿐이었고 기간을 다섯 구간으로 나눠도 모두 관성을 이겼으니 크게 부풀지는
않았다고 보지만, 0은 아닙니다.
지역 예보는 따로 채점하지 않습니다. 전국 예보에 그 지역의 오늘 격차를 더해 만듭니다.
격차의 7일 변화는 대부분 리터당 2~5원이라 안정적이지만(제주는 17원), 지역 예보 자체의
적중률은 재지 않았습니다.
유류세 변경이 모델에 안 들어가 있습니다. 사전 공고되니 넣을 수 있는데 아직 안 넣었고,
지금은 그냥 오차로 흡수됩니다. 유류세 페이지는 별도로 계산합니다.
전국 평균입니다. 상표·셀프 여부·동네에 따라 실제 가격은 크게 다릅니다.
9. 하지 않는 것
결과가 나쁜 주를 골라내지 않습니다 — 채점은 그 주까지의 자료로 다시 계산하고, 전부 남깁니다.
주유소 가격을 따로 조사하지 않습니다. 내 주변 주유소 목록은 오피넷이 받은 값을 그대로 보여줍니다.
유류세가 연장될지 환원될지 전망하지 않습니다. 그건 정부가 정하는 일입니다.
유가 선물이나 정유주 이야기를 하지 않습니다. 소비 판단을 돕는 정보이고 투자 조언이 아닙니다.