skip to content
Rosinante999 Logo Rosinante999
Table of Contents

기상청은 내일 날씨를 한 번 계산하지 않는다. 초기 조건을 아주 조금씩 다르게 흔든 시뮬레이션 수십 개를 동시에 돌린다. 대부분의 시나리오에서 비가 내리면 강수확률이 높게 나오고, 결과가 제각각으로 흩어지면 확률은 내려간다. 예보관이 내놓는 건 하나의 미래가 아니라 미래들의 폭이다.

투자 지표는 그렇게 나오지 않는다. 샤프지수는 1.0이라고 말하고 끝난다. 얼마나 흔들리는 1.0인지는 아무도 붙여주지 않는다.

리스크 관리의 세 기둥에서 나는 포지션 사이징과 샤프지수, MDD를 정의하고 각각에 숫자를 대입해 계산했다. 승률 55%에 손익비 1.5를 넣으면 켈리 공식이 25%를 답으로 내놓는 식이다. 공식은 정확했다.

문제는 그 25%가 55%와 1.5가 맞을 때만 25%라는 것이다. 그리고 나는 그 두 숫자값을 가정했다.

이 글은 거기서 한 단계 확장한다. 공식에 넣을 숫자를 실제로 얼마나 알 수 있는지 재고, 그게 틀렸을 때 결과가 어디까지 무너지는지 계산한다. 그리고 그 오차를 감당하려면 계산된 값에서 얼마를 깎아야 하는지까지 숫자로 낸다.

그리고 레버리지 ETF 글에서 나는 “계산된 정점의 절반 아래에서 쓴다”고 적었다. 왜 하필 절반인지에 대한 이유는 이 글을 읽으면 알 수 있다.

여객기는 1.5배, 엘리베이터는 12배

여객기의 날개는 운항 중 예상되는 최대 하중의 1.5배까지 견디도록 설계된다. 같은 강철로 만드는 엘리베이터 로프는 최소 7.6배에서 12배다.

왜 하나는 1.5이고 다른 하나는 12인가. 강철의 성질이 다른 게 아니다. 모르는 정도가 다르고, 틀렸을 때 치르는 값이 다르다.

미국 연방항공규정 FAR 25.303은 두 문장짜리 조항이다. “달리 정하지 않는 한, 규정된 한계하중에 1.5의 안전계수를 적용해야 한다.” 여기서 한계하중은 운항 중 실제로 겪을 것으로 예상되는 최대 하중이고, 여기에 1.5를 곱한 값이 극한하중이다. 구조물은 그 극한하중을 3초간 버텨야 한다.

흥미로운 건 이 1.5의 출처다. NASA가 정리한 안전계수의 역사에 따르면, 1.5는 1930년 미 육군항공대 규정에 처음 명문화됐고 그 이후 90년 넘게 바뀌지 않았다. 그런데 도입 당시 이 값은 통계적으로 정당화된 적이 없었다. 당시 날고 있던 비행기들이 대체로 1.5 정도의 여유를 갖고 설계돼 있었고, 그 비행기들이 떨어지지 않고 있다는 관찰이 근거의 전부였다.

엘리베이터는 훨씬 보수적이다. ASME A17.1 표 2.20.3은 로프 속도에 따라 안전계수를 정하는데, 승객용 승강기 기준으로 대략 7.6에서 12 사이다. 지름이 9.5mm 미만인 가는 로프에는 속도와 무관하게 최소 12가 강제된다.

같은 강철인데 계수가 8배 차이 나는 이유는 두 가지다. 항공기는 계수를 1 올릴 때마다 무게가 늘고 무게는 곧 연료다. 반면 엘리베이터 로프는 굵어져도 잃을 게 거의 없다. 그리고 항공기 하중은 풍동시험과 비행데이터로 수십 년간 측정돼 왔지만, 엘리베이터 로프는 마모되고 녹슬고 수없이 굽혀지면서 예측하기 어려운 방식으로 낡아간다.

지반공학자 조지 사워스는 안전계수를 두고 “무지의 계수”(factor of ignorance)라고 불렀다. 안전을 더 얹는 수가 아니라, 내가 모르는 만큼 곱하는 수라는 뜻이다. 여기서 따라 나오는 규칙이 하나 있다. 더 잘 알게 되면 계수를 줄여도 된다. 거꾸로, 모르는 게 많으면 계수를 키우는 것 말고는 방법이 없다.

공학은 모르는 것에 곱셈을 한다. 투자는 모르는 것을 그냥 쓴다.

분모는 잴 수 있고 분자는 잴 수 없다

본론에 들어가기 전에 정리할 게 하나 있다. 켈리 공식은 두 가지 방식으로 존재한다. 원리는 하나인데, 어떤 방식에 적용하느냐에 따라 모양이 달라진다.

하나는 결과가 딱 두 갈래로 갈리는 방식이다. 손절선과 익절선을 걸어둔 매매 한 번은 이기거나 지거나 둘 중 하나로 끝난다. 값이 띄엄띄엄 떨어져 있다고 해서 이산(離散)이라고 부른다. 다른 하나는 값이 끊김 없이 이어지는 방식이다. 코스피를 1년 들고 있으면 수익률은 −13.2%든 +4.7%든 그 사이 어떤 실수든 될 수 있다. 이쪽이 연속(連續)이다.

원글이 쓴 건 이산 쪽이었다.

f* = W − (1−W)/R

이 글은 주로 연속 쪽을 쓴다. 지수나 ETF처럼 계속 굴리는 자산이 대상이고, 무엇보다 뒤에서 유도할 식들이 이 형태에서 훨씬 깔끔하게 떨어지기 때문이다.

f* = μ / σ²

두 식은 같은 원리를 다른 언어로 적은 것이다. 그래서 뒤에 나올 결론들도 양쪽에서 똑같이 성립하는지 매번 확인할 것이다.

문제는 이 분수의 위아래가 전혀 다른 성질을 가졌다는 데 있다. 로버트 머튼이 1980년 논문에서 정리한 결과인데, 요지는 이렇다. 분산은 관측 간격을 잘게 쪼갤수록 정확해지지만, 평균은 관측 기간의 총 길이에만 의존한다.

기대수익률 추정치의 표준오차는 이렇다.

SE(μ) = σ / √T

아래 표의 오른쪽 열은 이 표준오차를 95% 신뢰구간으로 바꾼 것이다. 신뢰구간은 “참값이 이 범위 안에 있다고 봐도 무리가 없는 폭”을 뜻하고, 관행적으로 표준오차의 약 두 배(정확히는 1.96배)를 위아래로 잡는다. 구간이 넓다는 건 내가 잰 값이 그만큼 못 미덥다는 말이다.

관측 기간μ 추정 표준오차95% 구간 폭
1년20.00%p±39.2%p
3년11.55%p±22.6%p
10년6.32%p±12.4%p
30년3.65%p±7.2%p
100년2.00%p±3.9%p
400년1.00%p±2.0%p

변동성 20%인 자산의 기대수익률을 오차 1%p 안에서 알고 싶다면 400년치 데이터가 필요하다. 조선이 건국되던 무렵부터 지금까지 한 자산을 관측해야 겨우 그 정도다.

직접 테스트 해보면, 참값이 연 8%·변동성 20%인 자산을 10년간 관측하는 상황을 2만 번 반복하면서, 관측 빈도만 일간·주간·월간으로 바꿔봤다. 추정 표준오차는 각각 6.35%p, 6.29%p, 6.34%p로 사실상 같았다. 이론값 6.32%p와 일치한다. 반면 같은 조건에서 변동성 추정의 표준오차는 월간 1.30%p에서 일간 0.28%p로 4.6배 좋아졌다. 데이터를 자주 받으면 σ는 선명해지고 μ는 그대로다.

이게 포지션 사이징에 어떤 의미인지 숫자로 옮겨보자. 참 기대수익률이 8%, 변동성이 20%라면 f* = 0.08 / 0.04 = 2.0, 켈리가 권하는 노출은 2배다. 그런데 10년 데이터로 추정한 μ의 95% 구간은 −4.4%에서 20.4%다. 이걸 그대로 f*로 환산하면 이렇게 된다.

포지션 사이징 켈리 배수의 95% 신뢰구간 — 관측 기간이 길어져도 좁혀지지 않는다

10년치 데이터를 손에 쥐고도, 이 자산에 대한 정답이 “공매도”인지 “5배 레버리지”인지 통계적으로 배제하지 못한다. “승률 55%, 손익비 1.5라고 해보자”라고 가정하는 것은 이 구간 전체를 점 하나로 눌러버린 셈이다.

분모는 재는 것이고, 분자는 잴 수가 없어서 믿음으로 채운다.

우위를 두 배로 착각하면 성장률은 0이 된다

모른다는 사실만으로는 얼마를 깎을지 정할 수 없다. 틀렸을 때 얼마나 다치는지를 알아야 계수가 나온다.

노출을 f만큼 실었을 때의 장기 성장률은 이렇게 쓴다.

g(f) = fμ − f²σ²/2

이 포물선의 꼭짓점이 f* = μ/σ²이고, 그때 성장률은 g(f*) = μ²/(2σ²)다. 이 값이 이 자산에서 뽑아낼 수 있는 최대 성장률이다.

여기서 실제 베팅을 최적값의 c배, 즉 f = c·f*로 놓고 대입하면 μ와 σ가 통째로 약분되면서 아주 단순한 식이 남는다.

g(c·f*) / g(f*) = 2c − c²

내가 켈리의 몇 배를 쓰느냐만으로 성장률의 몇 %를 지키는지가 정해진다. 자산이 무엇인지는 상관없다.

켈리 배수 c성장률 유지율
0.25배43.8%
0.5배 (하프 켈리)75.0%
0.75배93.8%
1.0배 (풀 켈리)100%
1.5배75.0%
2.0배0%

첫 번째 답이 여기서 나온다. 베팅을 절반으로 줄이면 변동성은 정확히 절반이 되는데 성장률은 75%가 남는다. 4분의 1을 내주고 위험의 절반을 던다.

두 번째 답이 더 중요하다. 표의 아래쪽을 보면 켈리의 2배에서 성장률이 정확히 0이 된다. 이 식은 연속 쪽에서 유도했으니, 원글이 쓴 승률·손익비 방식에서도 성립하는지 확인해봤다. 승률 55%·손익비 1.5면 f*는 0.25다. 여기에 0.5를 곱한 12.5%로 베팅하면 성장률의 75.4%가 남고, 2배인 50%로 베팅하면 성장률이 −9.0%로 아예 음수가 된다. 연속 이론값 75.0%·0%와 거의 붙는다. 결과가 매끄럽게 이어지든 뚝뚝 끊기든 답이 같다는 뜻이다.

이제 이 두 결과를 추정오차와 겹쳐보자. 앞 장에서 봤듯 μ의 10년 추정 구간은 −4.4%에서 20.4%였다. 참값이 8%인데 상단 근처인 16%로 잡을 확률이 결코 작지 않다는 뜻이다. 우위를 2배로 과대평가한 상태에서 풀 켈리를 쓰면 실효 배수가 2가 되고, 성장률은 0이 된다. 반면 같은 오판을 하고도 하프 켈리를 썼다면 실효 배수가 정확히 1.0, 즉 우연히 최적이 된다.

μ 과대평가 배수풀 켈리로 걸었을 때하프 켈리로 걸었을 때
1.0배 (정확)100%75.0%
1.5배75.0%93.8%
2.0배0%100%
3.0배−300%75.0%

표의 숫자는 수익률이 아니라 성장률 유지율이다. 즉 이 자산에서 뽑아낼 수 있는 최대 성장률의 몇 %를 챙겼는지다.

그 천장이 얼마인지부터 구해보자. 앞에서 꼭짓점의 성장률이 g(f*) = μ²/(2σ²)라고 했으니, 기대수익 8%·변동성 20%를 넣으면 이렇게 된다.

0.08² ÷ (2 × 0.04) = 0.0064 ÷ 0.08 = 0.08

연 8%다. 이 자산을 어떻게 굴려도 장기적으로 이보다 빨리 불릴 수는 없다. 헷갈리기 쉬운 지점을 미리 적어둔다 — 기대수익률도 8%이고 최대 성장률도 8%로 같은 숫자가 나왔는데, 우연이다. 두 값은 전혀 다르다. 기대수익률은 자산이 한 해에 평균 몇 % 오르느냐이고, 최대 성장률은 그 자산에 레버리지까지 최적으로 걸었을 때 내 계좌가 복리로 불어나는 속도다.

이제 유지율을 실제 값으로 바꿔보자. 각 줄이 어떤 포지션을 뜻하는지도 같이 적었다.

상황실제 노출유지율연 성장률
하프 켈리 · 추정 정확1.0배 (전액투자)75%연 6.0%
풀 켈리 · 추정 정확2.0배100%연 8.0%
하프 켈리 · μ를 2배 오판2.0배100%연 8.0%
풀 켈리 · μ를 2배 오판4.0배0%연 0%
풀 켈리 · μ를 3배 오판6.0배−300%연 −24.0%

레버리지 없이 전액만 투자하면 연 6%, 2배까지 쓰면 8%로 오르고, 4배에 이르면 0이 된다. 그 너머는 마이너스다.

하프 켈리가 2배 오판에도 100%를 지키는 이유가 표에 그대로 보인다. 실제 노출이 2.0배로 같기 때문이다. 참 최적이 2.0배인데 μ를 2배로 잘못 보면 계산 결과가 4.0배로 나오고, 거기에 절반을 곱하면 다시 2.0배로 돌아온다.

그렇다고 틀리는 편이 낫다는 말은 아니다. 하프 켈리가 평소에 포기하는 그 25%가, 2배 오판을 흡수하는 완충재와 정확히 같은 크기라는 뜻이다. 쓸 일이 없으면 25%를 그냥 낸 것이고, 쓸 일이 생기면 본전을 찾는다. 보험료가 그렇게 생겼다.

켈리를 두 배로 쓰면 두 배로 버는 게 아니라 아예 못 번다.

켈리 배수에 따른 성장률 유지율 곡선 — 2배에서 0이 되는 포물선

절반이라는 답이 다른 곳에서 또 나왔다

성장률만 보면 하프 켈리의 근거는 “4분의 1 내주고 절반 던다” 정도다. 나쁘지 않지만 결정적이진 않다. 그런데 완전히 다른 질문을 던져도 같은 숫자가 나온다.

질문은 이것이다. 이 전략을 계속 굴렸을 때, 내 자산이 언젠가 원금의 절반 아래로 내려갈 확률은 얼마인가.

자산 가격이 위아래로 무작위하게 흔들리면서 평균적으로는 위로 향하는 움직임을 브라운 운동이라고 부른다. 이때 언젠가 아래로 b만큼 내려갈 확률에는 닫힌 형태의 답이 있다.

P = exp(−2νb / σ²)

이걸 “원금의 몇 배까지 내려가는가”로 바꿔 쓰면 P = a^(2ν/σ²)가 된다. 여기에 노출을 켈리의 c배로 놓고 정리하면 지수가 2/c − 1로 깔끔하게 떨어진다. 앞서와 마찬가지로 μ와 σ가 사라진다.

P(자산이 언젠가 원금의 a배 아래로) = a^(2/c − 1)

켈리 배수 c−20%반토막−80%
0.25배21.0%0.8%0.0%
0.5배51.2%12.5%0.8%
1.0배80.0%50.0%20.0%
1.5배92.8%79.4%58.5%
2.0배100%100%100%

풀 켈리로 굴리면 언젠가 원금이 반토막 날 확률이 정확히 50%다. 우위 추정이 완벽하게 맞았을 때의 이야기다. 틀린 게 아니라 맞았을 때 그렇다.

식만 믿기에는 값이 극단적이라 직접 돌려봤다. 기대수익 8%·변동성 20%인 자산을 켈리 배수별로 300년, 4만 경로씩 몬테카를로(무작위 시나리오를 수만 번 만들어 결과의 비율을 세는 가상 실험)로 시뮬레이션했다.

  • 풀 켈리 반토막 확률 — 시뮬 48.8%, 이론 50.0%
  • 하프 켈리 반토막 확률 — 시뮬 12.2%, 이론 12.5%
  • 하프 켈리 −80% 확률 — 시뮬 0.80%, 이론 0.80%

이론과 시뮬이 소수 셋째 자리까지 붙었다.

다만 전제가 있다. 이 계산은 수익률이 정규분포(가운데가 봉긋하고 양옆으로 대칭인 종 모양 분포)를 따른다고 보고, 연속 재조정(가격이 움직일 때마다 노출 비율을 목표치로 다시 맞추는 것)이 가능하다고 가정한다. 거래비용과 세금도 넣지 않았다.

그리고 실제 시장은 저 종 모양보다 양쪽 끝이 두툼하다. 폭락과 폭등이 정규분포가 예측하는 빈도보다 훨씬 자주 일어난다는 뜻이고, 이걸 꼬리가 두껍다(팻테일)고 부른다. 그래서 위 확률들은 상한이 아니라 하한으로 읽는 게 안전하다.

성장률은 4분의 1을 내주고, 반토막 확률은 4분의 1로 줄인다.

켈리 배수별 원금 손실 확률 곡선 — 풀 켈리는 반토막 확률 50%

여기서 하프 켈리의 두 번째 근거가 완성된다. 성장률은 25%만 내주는데 파괴적 손실 확률은 4분의 1로 줄어든다. 안전계수 2를 적용한다는 건, 공학의 표현을 빌리면 하중을 절반으로 낮추는 게 아니라 구조물이 버티는 범위를 네 배로 넓히는 것에 가깝다.

샤프와 MDD도 같은 병을 앓는다

원글의 나머지 두 기둥에도 같은 잣대를 대봤다. 결과는 켈리보다 더 나빴다.

샤프지수 추정치의 표준오차는 이렇게 계산한다.

SE(SR) = √((1 + SR²/2f) / T)

참 샤프관측 기간95% 신뢰구간
1.03년−0.15 에서 +2.15
1.05년+0.11 에서 +1.89
1.010년+0.37 에서 +1.63
1.030년+0.63 에서 +1.37

진짜 실력이 샤프 1.0인 전략을 3년간 지켜봐도, 관측되는 값은 −0.15에서 2.15 사이 어디든 될 수 있다. 시뮬레이션으로 확인해보니 이런 전략의 3년 성과가 음수 샤프로 관측될 확률이 4.2%였다. 100개 중 4개는 멀쩡한 전략인데 손실로 보인다.

원글에서 비교했던 두 전략에 이 잣대를 대보면, 전략 A는 샤프 0.46, 전략 B는 0.69였고, 나는 “B가 A보다 1.5배 효율적”이라고 썼다. 이 0.23의 차이가 우연이 아니라고 통계적으로 말하려면 얼마의 데이터가 필요한지 계산해봤다.

약 148년이었다.

3년 데이터로는 z값이 0.28, 30년으로도 0.88에 그친다. z값은 두 값의 차이를 오차의 크기로 나눈 것으로, 차이가 오차보다 몇 배나 큰지를 재는 눈금이다. 통상 2를 넘어야 우연이 아니라고 본다. 0.28이라는 건 차이가 오차의 3분의 1도 안 된다는 뜻이다.

그러니까 원글에 쓴 “B가 A보다 1.5배 효율적”이라는 문장은, 틀렸다기보다 애초에 확인할 수 없는 주장인 셈이다. 샤프지수는 자에 비유하면 눈금 간격이 아주 넓은 자다. 전략이 쓸 만한지 아닌지는 재지만, 두 전략 중 어느 쪽이 나은지를 재기에는 눈금 사이가 너무 벌어져 있다.

MDD는 문제의 성격이 다르다. 부정확한 게 아니라, 애초에 전략의 고정된 속성이 아니다. 기대수익 8%·변동성 20%인 동일한 전략을 관측 기간만 바꿔가며 2만 경로씩 돌려봤다.

관측 기간평균 MDD중앙값90% 분위
1년−18.9%−17.6%−28.8%
3년−29.0%−27.5%−42.4%
5년−34.6%−32.9%−49.6%
10년−42.7%−41.1%−58.9%
20년−50.7%−49.4%−66.9%
50년−60.9%−60.1%−76.0%

같은 전략, 같은 변동성인데 오래 볼수록 MDD가 깊어진다. 당연한 일이다. 최댓값은 표본이 늘면 커지기만 한다. 그래서 3년 백테스트에서 MDD −29%가 나왔다고 계좌 한도를 −30%로 잡으면, 10년을 굴리는 동안 그 한도는 거의 확실히 깨진다. 전략이 망가져서가 아니라 시간이 흘러서다.

백테스트의 MDD는 전략의 성질이 아니라 관측 기간의 성질이다.

원글에서 MDD 한도를 “예: −20%“라고 적었던 건 그래서 위험한 조언일 수 있다. 그 숫자는 전략에서 나오는 게 아니라 내가 얼마나 오래 굴릴 것인지에서 나오기 때문이다.

내 계좌의 샤프지수를 직접 재보면

지표를 재지 말라는 뜻은 아니다. 재되 오차막대를 같이 붙이자는 것이다. 그런데 막상 해보려 하면 첫 단계에서 막힌다. 증권사 앱은 수익률은 보여줘도 샤프지수는 보여주지 않는다.

직접 계산해봤다. 필요한 건 월말 평가액 기록 12개가 전부다. 증권사 앱의 월별 잔고 조회나 자산 추이 화면에서 뽑을 수 있다.

1단계 — 입출금을 걷어낸다

여기가 가장 많이 틀리는 지점이고, 틀리면 뒤가 전부 무의미해진다. 계좌가 3,000만원에서 3,959만원이 됐다고 수익률이 32%인 게 아니다. 중간에 500만원을 넣었다면 그 500만원은 시장이 준 게 아니다.

월 수익률 = (기말 평가액 − 그달 순입금 − 기초 평가액) ÷ 기초 평가액

12개월을 이 방식으로 정리하면 이렇게 된다.

기초순입금기말월 수익률
13,0003,096+3.2%
23,0963,040−1.8%
33,0403,195+5.1%
43,1953,208+0.4%
53,2083,070−4.3%
63,070+5003,653+2.7%
73,6533,872+6.0%
83,8723,791−2.1%
93,7913,848+1.5%
103,8483,994+3.8%
113,9943,874−3.0%
123,8743,959+2.2%

단위는 만원이고, 6개월차 말에 500만원을 추가 입금한 계좌다. 두 방식의 답이 크게 갈린다. 입금을 걷어내지 않고 (3,959 − 3,000) ÷ 3,000으로 계산하면 연 32.0%가 나온다. 제대로 걷어내고 월 수익률을 복리로 누적하면 13.9%다. 18%포인트가 시장이 아니라 통장에서 온 것이었다.

2단계 — 평균과 표준편차

12개 월 수익률의 평균과 표준편차를 구한다. 엑셀이면 AVERAGESTDEV.S 두 함수로 끝난다. 위 표의 값은 평균 월 1.14%, 표준편차 월 3.31%다.

연으로 환산하면 수익률 13.7%, 변동성 11.5%다. 수익률은 12를 곱하고 변동성은 √12를 곱한다. 변동성에 제곱근이 붙는 이유는 흔들림이 매달 같은 방향으로만 쌓이지 않고 서로 상쇄되기 때문이다.

3단계 — 무위험수익률을 빼고 연환산

연 샤프지수 = (월평균 수익률 − 월 무위험수익률) ÷ 월 표준편차 × √12

무위험수익률은 CD금리나 단기 국고채 수익률을 쓴다. 현재 값은 금융투자협회 채권정보센터의 채권금리 메뉴에서 확인할 수 있고, 여기서는 연 3.0%로 가정했다. 월로 바꾸면 0.25%다.

대입하면 (1.14 − 0.25) ÷ 3.31 = 0.269이고, √12를 곱해 연 샤프 0.93이 나온다. 나쁘지 않은 숫자다.

4단계 — 오차막대를 붙인다

여기서 멈추면 이 글을 쓴 이유가 없다. 12개월치로 쟀으므로 T는 1이고, 앞의 식에 넣으면 표준오차가 1.02다.

관측 기간표준오차샤프 0.93의 95% 구간
1년1.02−1.06 에서 +2.93
3년0.59−0.22 에서 +2.08
5년0.46+0.04 에서 +1.82
10년0.32+0.30 에서 +1.56
20년0.23+0.49 에서 +1.38

1년을 굴려 샤프 0.93을 얻었는데, 그 결과는 “이 전략은 우수하다”와 “이 전략은 돈을 잃는 행동이다”를 둘 다 배제하지 못한다. 구간 하단이 0을 넘어서는 데, 즉 “적어도 예금보다는 낫다”고 말할 수 있게 되는 데만 5년이 걸린다.

1년치 성과는 성과가 아니라 표본 하나다.

그래서 나는 이 계산의 결과를 “내 전략은 샤프 0.93이다”로 쓰지 않는다. “12개월 표본에서 0.93이 관측됐고, 이 표본으로는 −1.06과 +2.93 사이 어디든 될 수 있다”로 쓴다. 기록할 가치는 충분하다. 다만 그 숫자로 전략을 바꾸거나 베팅을 키우지는 않는다.

그래서 내 안전계수는 얼마인가

세 갈래 계산이 한 점에서 만난다.

켈리 배수성장률 유지율
(추정 정확)
언젠가 반토막 날 확률성장률 유지율
(μ 2배 오판)
0.25배43.8%0.8%75.0%
0.5배75.0%12.5%100%
0.75배93.8%31.5%75.0%
1.0배100%50.0%0%
2.0배0%100%−800%

둘째·넷째 열은 최대 성장률 대비 비율이고, 셋째 열만 확률이다. 앞서 구한 천장(기대수익 8%·변동성 20%인 자산의 μ²/(2σ²) = 연 8%)에 대입하면 유지율 100%는 연 8%, 75%는 연 6%, 0%는 연 0%다.

성장률 손실, 파괴적 낙폭 확률, 추정 오판에 대한 내성. 서로 무관한 세 질문인데 답이 전부 절반을 가리킨다. 하프 켈리가 관행으로 굳은 건 겸손해서가 아니라 계산이 그렇게 나왔기 때문이다.

여기까지 내용을 토대로 심화된 새 규칙을 써보자.

  1. 계산된 f*는 한도가 아니라 좌표다. 그 좌표의 절반 아래에서 시작한다. μ 추정에 자신이 없을수록 계수를 키운다 — 신규 전략이나 표본 3년 미만이면 4분의 1까지 내린다.
  2. 샤프지수로 전략을 고르지 않는다. 걸러내는 용도로만 쓴다. 음수거나 처참하면 버리고, 0.5와 0.7 사이의 우열은 판정하지 않는다. 판정하려면 백 년이 넘게 걸린다. 대신 내 계좌의 값을 월말 기록으로 분기마다 갱신하고, 항상 1/√T 오차막대를 옆에 적어둔다.
  3. MDD 한도는 백테스트가 아니라 보유 기간에서 역산한다. 10년을 굴릴 생각이면 백테스트 3년치 MDD의 1.5배 정도는 각오해야 한다는 게 위 표의 뜻이다.
  4. 변동성을 낮추는 것이 추정오차를 줄이는 유일한 실질적 수단이다. σ는 재면 알 수 있고, f*의 분모에서 제곱으로 작용한다. μ를 더 잘 맞히려는 노력보다 훨씬 확실하다.
  5. 우위가 사라졌을 가능성을 배수로 흡수한다. 켈리 값이 0 이하로 나오면 크기를 줄이는 게 아니라 멈춘다는 원글의 규칙은 그대로 유효하다.

이 계산들에는 한계가 뚜렷하다. 정규분포와 연속 재조정을 가정했고, 거래비용·세금·유동성 제약을 넣지 않았다. 실제 시장의 분포는 꼬리가 두꺼워서 위 확률들은 대체로 낙관적인 쪽이다. 그리고 μ와 σ가 시간에 따라 변한다는 사실 자체를 모형이 담고 있지 않다. 즉 여기서 나온 안전계수 2는 하한에 가깝다.

자주 묻는 질문 (FAQ)

Q1. 하프 켈리 말고 쿼터 켈리를 쓰면 더 안전하지 않나요?

A. 더 안전한 건 맞다. 반토막 확률이 12.5%에서 0.8%로 떨어진다. 대신 성장률 유지율이 75%에서 43.8%로 크게 낮아진다. 절반 넘게 포기하는 셈이라, 우위 추정에 어느 정도 근거가 있다면 과한 감액이다. 반대로 표본이 3년 미만이거나 전략을 바꾼 직후라면 쿼터 켈리가 합리적이다. 계수는 전략의 성질이 아니라 내가 그 전략을 얼마나 아는지에 따라 정해진다.

Q2. 승률과 손익비를 몇 번쯤 매매해봐야 믿을 수 있나요?

A. 정확한 답은 원하는 정밀도에 달렸지만, 이 글의 결론을 그대로 옮기면 “생각보다 훨씬 많이”다. 기대수익률 추정오차가 관측 연수의 제곱근에만 반비례하므로, 매매를 자주 한다고 해서 우위 추정이 비례해 정확해지지 않는다. 실무적으로는 매매 횟수와 무관하게, 서로 다른 시장 국면을 몇 개나 통과했는지를 보는 편이 낫다. 상승장에서만 쌓은 200번의 표본은 한 국면의 표본 1개에 가깝다.

Q3. 백테스트 도구는 어떤 걸 쓰는 게 좋나요?

A. 크게 세 갈래다. 파이썬 기반 프레임워크는 파라미터를 자유롭게 다룰 수 있고 이 글처럼 무작위 시뮬레이션을 붙일 수 있지만, 데이터 정합성과 생존편향을 직접 관리해야 한다. 생존편향은 상장폐지된 종목이 데이터에서 빠져 있어 살아남은 종목만으로 성과가 부풀려지는 문제다. 증권사 HTS의 내장 백테스트는 체결·수수료가 실제에 가깝게 반영되는 대신 검증 구간과 지표가 제한적이다. 상용 퀀트 서비스는 데이터 품질이 안정적이지만 구독료가 붙고 전략 로직이 블랙박스인 경우가 많다. 어느 쪽을 쓰든 결과 화면에 찍힌 샤프와 MDD를 그대로 믿지 않는 것이 이 글의 요지다.

Q4. 안전계수를 적용하면 수익이 너무 줄어드는 것 아닌가요?

A. 성장률 기준으로 25%를 내준다. 적은 손실은 아니다. 다만 비교 대상을 정확히 잡아야 한다. 풀 켈리는 우위 추정이 정확할 때만 100%를 주고, 2배 과대평가하면 0을 준다. 하프 켈리는 정확할 때 75%, 2배 틀렸을 때 100%를 준다. 추정이 틀릴 가능성까지 넣고 평균을 내면 순서가 뒤집히는 구간이 넓다.

기상청이 시뮬레이션을 수십 개 돌리는 건 예보를 더 잘 맞히기 위해서가 아니다. 얼마나 못 맞히는지 알기 위해서다. 그 폭을 알고 나서야 우산을 챙길지 말지 정할 수 있다.

내 계좌의 지표에는 아직 그 폭이 붙어 있지 않다. 붙이는 방법은 위에 적었고, 붙이고 나면 대체로 생각보다 넓다. 그 넓이만큼 뒤로 물러서는 것 말고 지금 내가 할 수 있는 일은 없다.

함께 읽으면 좋은 글