NOONOO TRADING봇에서 시작하기

롤링 샤프 지수 — 전략 성과의 시간 변화 읽기

샤프 지수는 보통 백테스트 전체 기간에 대해 숫자 하나로 계산합니다. 이 숫자는 성과가 고르게 났는지, 특정 몇 달에 몰려 났는지를 보여 주지 못합니다. 롤링 샤프 지수(rolling Sharpe ratio)는 최근 N일 창(window)을 하루씩 밀면서 샤프 지수를 다시 계산해 선으로 이은 것입니다. 이 글은 계산법, 기간별 숫자 예시, 짧은 창의 오차 크기, 극단값 하나가 만드는 왜곡, 전략 성능 저하를 판단할 때 쓰는 법을 정리합니다. 본문 수치는 모두 설명용 가정입니다.

롤링 샤프 지수 계산법

샤프 지수 자체는 평균 수익률을 수익률 표준편차로 나눈 값입니다. 롤링 버전은 이 계산을 "최근 N일"에만 적용하고, 다음 날이 되면 가장 오래된 하루를 빼고 새 하루를 넣어 다시 계산합니다.

정의 (무위험 수익률 0 가정)
· 창 길이 N일 (예: 30, 90, 180일)
· 일 샤프 = 최근 N일 일수익률 평균 ÷ 최근 N일 일수익률 표준편차
· 연 환산 샤프 = 일 샤프 × √365 (코인은 365일 거래, √365 ≈ 19.105)

롤링
· 오늘 값 = 오늘 포함 최근 N일로 계산
· 내일 값 = 가장 오래된 하루 제거, 내일 하루 추가 후 재계산

샤프 지수의 기본 개념과 해석 기준은 샤프 지수 글에, 하락 변동만 분모로 쓰는 변형은 소르티노 지수에 정리했습니다. 롤링 계산은 어떤 비율 지표에도 같은 방식으로 적용할 수 있습니다.

예시 ① — 30일 창 하나 계산

입력
· 최근 30일 일수익률 평균 +0.20%
· 최근 30일 일수익률 표준편차 2.50%

계산
· 일 샤프 = 0.20 ÷ 2.50 = 0.08
· 연 환산 = 0.08 × 19.105 = 약 1.53

이 1.53은 "최근 30일만 놓고 봤을 때"의 값입니다. 다음 날 수익률이 들어오면 평균과 표준편차가 함께 바뀌고 값도 달라집니다. 하루하루의 이 값을 이어 그린 선이 롤링 샤프 그래프입니다.

예시 ② — 연 전체 1.13, 분기별로는 −0.96~3.82

1년을 4개 분기로 나누고, 각 분기의 일수익률 평균과 표준편차를 가정합니다. 분기 길이는 같다고 봅니다.

분기별 (평균 / 표준편차 → 연 환산 샤프)
· 1분기: +0.40% / 2.0% → 0.200 × 19.105 = 3.82
· 2분기: +0.10% / 2.5% → 0.040 × 19.105 = 0.76
· 3분기: −0.15% / 3.0% → −0.050 × 19.105 = −0.96
· 4분기: +0.25% / 2.5% → 0.100 × 19.105 = 1.91

연 전체
· 평균 = (0.40 + 0.10 − 0.15 + 0.25) ÷ 4 = 0.15%
· 분기 내 분산 평균 = (4.00 + 6.25 + 9.00 + 6.25) ÷ 4 = 6.375
· 분기 평균 간 분산 = (0.0625 + 0.0025 + 0.0900 + 0.0100) ÷ 4 = 0.041
· 전체 분산 6.416 → 표준편차 2.533%
· 일 샤프 0.15 ÷ 2.533 = 0.0592 → 연 환산 약 1.13

연 전체 1.13이라는 숫자만 보면 "꾸준히 괜찮은 전략"처럼 읽힙니다. 롤링으로 쪼개 보면 1분기에 3.82로 성과가 몰렸고, 3분기에는 손실이 났습니다. 같은 1.13이라도 매 분기 1.1 안팎이 나온 전략과 이 전략은 운용할 때 체감이 전혀 다릅니다. 3분기에 표준편차가 3.0%로 커진 점도 눈여겨볼 부분입니다. 변동성은 몰려서 오는 경향이 있어서(변동성 군집) 분모가 바뀌는 것만으로도 롤링 값이 움직입니다.

예시 ③ — 짧은 창은 오차가 크다

롤링 샤프에서 가장 자주 놓치는 부분입니다. 표본이 적으면 샤프 추정치 자체가 크게 흔들립니다. 수익률이 정규분포에 가깝다고 가정하면, 샤프 추정치의 표준오차는 다음 근사식으로 구합니다.

근사식
· 일 샤프 표준오차 ≈ √[ (1 + 0.5 × 일샤프²) ÷ N ]
· 연 환산 표준오차 = 위 값 × 19.105

일 샤프 0.08 (연 1.53)일 때
· N = 30일: √(1.0032 ÷ 30) = 0.1829 → 연 ±3.49
· N = 90일: √(1.0032 ÷ 90) = 0.1056 → 연 ±2.02
· N = 365일: √(1.0032 ÷ 365) = 0.0524 → 연 ±1.00

30일 창에서 계산한 1.53은 표준오차 1개 범위만 잡아도 −1.96부터 5.02까지를 포함합니다. 30일 롤링 샤프가 1.5에서 −1.0으로 내려간 것은, 이 오차 범위 안에서 충분히 우연으로 생길 수 있는 움직임입니다. 1년치 데이터로도 표준오차가 약 1.0이라는 점은 "샤프 1.5 전략"과 "샤프 0.5 전략"을 1년 기록만으로 구분하기 어렵다는 뜻입니다. 이 문제를 확률로 다시 정리한 지표가 확률적 샤프 지수(PSR)입니다. 실제 코인 수익률은 꼬리가 두꺼워서 이 근사보다 오차가 더 큰 경우가 많습니다.

예시 ④ — 창이 겹친다는 점

데이터 365일, 30일 창
· 롤링 값 개수 = 365 − 30 + 1 = 336개
· 이웃한 두 값은 30일 중 29일을 공유
· 서로 겹치지 않는 30일 창은 12개뿐

그래프에 점이 336개 찍혀 있어도 독립적인 정보는 12개 남짓입니다. 롤링 선이 매끄럽게 이어지는 이유도 이 겹침 때문이지, 성과가 안정적이어서가 아닙니다. "롤링 샤프가 200일 넘게 플러스였다"는 문장은 겹침을 감안하면 생각보다 약한 근거입니다.

예시 ⑤ — 하루 급등이 만드는 절벽 효과

롤링 창은 들어오는 날과 나가는 날에 모두 반응합니다. 예시 ①의 30일 중 평균과 같은 +0.20%였던 하루가, 숏 스퀴즈로 +15%가 났다고 바꿔 보겠습니다.

변경 전
· 평균 0.20%, 표준편차 2.50% → 연 1.53

하루를 +0.20% → +15.00%로 교체
· 수익률 합: 6.0 − 0.2 + 15.0 = 20.8% → 평균 0.693%
· 제곱합: 188.70 − 0.04 + 225.00 = 413.66
· 편차 제곱합: 413.66 − 30 × 0.693² = 399.24 → 분산 13.31 → 표준편차 3.648%
· 일 샤프 0.693 ÷ 3.648 = 0.190 → 연 약 3.63

하루 하나가 30일 롤링 값을 1.53에서 3.63으로 끌어올렸습니다. 그리고 정확히 30일 뒤 그날이 창에서 빠지면, 그 사이 성과가 아무것도 바뀌지 않았어도 값이 한 번에 1.5 근처로 떨어집니다. 롤링 그래프에서 갑자기 꺾이는 구간을 보면, 새로 들어온 날이 아니라 30일 전에 무슨 일이 있었는지도 같이 확인해야 합니다. 오래된 날의 비중을 점점 줄이는 지수가중(EWMA) 방식을 쓰면 이 절벽은 완만해지지만, 대신 최근 며칠에 더 민감해집니다.

전략 성능 저하 판단에 쓰기

롤링 샤프는 "전략이 망가졌는가"를 볼 때 자주 쓰입니다. 예시 ③의 오차를 그대로 적용하면 기준을 숫자로 세울 수 있습니다.

조건
· 백테스트 기대 샤프 1.5
· 실운용 90일 롤링 샤프로 감시 (표준오차 약 ±2.02)

90일 롤링이 −0.5로 내려감
· 차이 2.0 ÷ 2.02 ≈ 표준오차 1.0개 → 우연 범위 안

90일 롤링이 −2.5로 내려감
· 차이 4.0 ÷ 2.02 ≈ 표준오차 2.0개 → 우연으로 보기 어려워짐

롤링 값이 내려간 것만 보고 전략을 끄거나, 반대로 올라간 것만 보고 비중을 늘리면 대부분 소음에 반응하게 됩니다. 판단 기준(창 길이, 몇 개 표준오차에서 멈출지)은 운용을 시작하기 전에 정해 두는 편이 낫습니다. 결과를 본 뒤 창 길이를 30일, 60일, 90일로 바꿔 가며 가장 그럴듯한 그림을 고르면 그 자체가 과최적화가 됩니다. 성능 저하를 확인하는 다른 방법들은 전략 성능 저하 감지에, 기간을 나눠 검증하는 방식은 워크포워드 분석에 정리했습니다.

쓸 때 주의할 점

① 창 길이
· 짧은 창(30일): 반응 빠름, 오차 큼 (연 ±3.5 수준)
· 긴 창(180~365일): 오차 작음, 변화 감지가 느림

② 거래가 드문 전략
· 포지션 없는 날은 수익률 0 → 표준편차가 작아져 샤프가 부풀거나, 평균이 작아져 줄어듦
· 거래 횟수가 적으면 창 안 거래 수도 같이 확인

③ 수수료·펀딩비
· 롤링 계산도 비용 차감 후 수익률로 해야 함

④ 분모만 바뀌는 경우
· 평균은 그대로인데 변동성이 커지면 롤링 샤프가 떨어짐 → 원인이 수익 감소인지 변동성 증가인지 분리해서 볼 것

④처럼 롤링 샤프와 함께 롤링 평균, 롤링 표준편차를 따로 그려 보면 원인을 나누기 쉽습니다. 손실이 얼마나 오래 이어졌는지는 샤프로는 안 보이므로 드로다운 지속기간을 함께 보는 것이 좋습니다.

정리

롤링 샤프 지수는 최근 N일 수익률로 샤프 지수를 매일 다시 계산한 선입니다. 예시 ②에서 연 전체 1.13인 전략이 분기별로는 −0.96부터 3.82까지 갈렸고, 숫자 하나로는 이런 성과 쏠림이 보이지 않습니다. 대신 30일 창의 표준오차는 연 환산 ±3.49, 1년 창도 ±1.00 수준이라 짧은 창의 등락 대부분은 소음입니다. 하루 급등 하나가 30일 값을 1.53에서 3.63으로 올렸다가 30일 뒤 떨어뜨리는 절벽 효과도 있습니다. 창 길이와 판단 기준을 먼저 정하고, 롤링 평균·표준편차와 함께 보는 것이 기본입니다.

주의

본문의 수익률, 표준편차, 샤프 지수 값은 모두 계산 구조를 설명하기 위한 가정 예시이며 실제 측정값이나 미래 수익을 뜻하지 않습니다. 표준오차 근사식은 정규분포 가정에 기반하며 실제 오차는 더 클 수 있습니다. 이 글은 교육 정보이며 특정 자산·전략의 매매 권유가 아닙니다. 코인과 선물·레버리지 거래는 원금 손실 위험이 있고, 투자 판단과 그 결과는 본인 책임입니다.

NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.

봇에서 시작하기

📈 OKX 신규 가입 시 거래 수수료 할인

OKX 수수료 할인 가입 →