존재하지 않았던 손실
어느 날 아침, 내 트레이딩 봇의 월간 리포트는 거의 모든 것을 잃었다고 알려왔다 — 불과 몇 주 만에 99%에 가까운 드로다운(낙폭). 머리가 상황을 따라잡기도 전에 속이 철렁 내려앉았다.
봇은 아무것도 잃지 않았다. 돈은 모두 그대로 있었다. 내가 바라보고 있던 것은 손실이 아니었다. 그것은 내 코드가 제대로 세지 못한 결과였고 — 일어난 적도 없는 재앙을 쫓게 만든 원인이었다.
속이 철렁 내려앉게 만든 숫자
리포트는 명확했다. 월초 대비, 계좌는 출발점의 아주 작은 조각으로 쪼그라들어 있었다. 모든 본능이 뭐라도 하라고 외쳤다. 리스크를 조이고, 사이즈를 줄이고, 플러그를 뽑으라고. 그렇게 큰 숫자는 분석을 권하지 않는다 — 반응을 요구한다.
그리고 바로 거기에 함정이 있다. 검증하지 않은 숫자에 반응하는 것이야말로 측정 버그가 진짜 손실로 둔갑하는 방식이기 때문이다. 나는 한 번의 패닉에 휩싸인 결정만으로, 멀쩡히 건강한 계좌를, 오직 내 산수의 한 열에만 존재하던 손실로부터 “구하기” 위해 망가뜨리기 직전이었다.
코드가 실제로 측정하던 것
결함은 민망할 만큼 단순했다. 내 회계는 정확히 한 가지만 추적하고 있었다. 현금 잔고. 봇이 자산을 사면 돈은 현금 열에서 빠져나갔지만 — 여기까진 맞다 — 방금 산 것의 가치를 장부에 다시 올려놓는 것은 아무것도 없었다. 그래서 봇이 계좌의 대부분을 포지션에 투입하는 순간, 장부는 현금이 사라지는 것을 지켜보며 그것을 거의 전부의 손실로 기록했다.
포지션은 바로 거기 있었다. 완전히 멀쩡한 채로. 방금 지불한 만큼의 가치를 지닌 채로. 코드가 그저 그것을 보고 있지 않았을 뿐이다.
다시 말해, 봇은 사는 것을 잃는 것으로 취급했다. 현금의 90퍼센트를 자산에 쓰면, 현금만 세는 장부에게 당신은 방금 돈의 90퍼센트를 잃은 것이다. -99%는 시장 사건도, 나쁜 거래도 아니었다. 그것은 계좌가 자기 보유 자산을 빤히 쳐다보면서도 그것을 무언가 가치 있는 것으로 인정하기를 거부한 결과였다.
잘못된 자는 모든 측정을 오염시킨다
이것이 단순한 표시상의 결함보다 왜 더 나빴는지 설명하겠다. 트레이딩 시스템에서 당신이 신경 쓰는 거의 모든 숫자는 단 하나의 양에서 파생된다. 에쿼티, 즉 계좌의 총가치. 드로다운은 에쿼티의 함수다. 수익률, 승률의 의미, 리스크 한도, 언젠가 자랑하거나 절망하게 될 Sharpe 비율 — 이 모두는 당신이 계좌의 가치를 어떻게 정의하느냐로부터 진실성을 물려받는다.
그 하나의 양을 잘못 정의하면 하류의 모든 지표는 단지 어긋나는 것이 아니다. 허구가 된다. 내 드로다운 차트는 생생했고, 디테일했으며, 완전히 상상의 산물이었다. 망가진 자는 약간 틀린 답을 건네주지 않는다 — 자신만만하고 정밀하며 틀린 답을 건네주며, 그것은 명백히 망가진 답보다 훨씬 위험하다. 진실과 똑같이 보이기 때문이다.
확인한 적도 없는 숫자를 내가 믿은 이유
이전 글에서 나는 터무니없이 좋은 결과를 거의 믿을 뻔했던 이야기를 썼다. 내 안의 어떤 탐욕스러운 부분이 그것이 진짜이길 바랐기 때문이었다. 이번 일은 그것의 거울상이었고, 나에게 그 대칭성을 호되게 가르쳐주었다. 두려움은 탐욕보다도 더 빠르게 검증을 단락시킨다.
우쭐하게 만드는 숫자는 적어도 확인하기 전에 잠깐 감상할 시간을 준다. 무서운 숫자는 그러지 않는다. 그것은 당신을 보는 것에서 곧장 행동하는 것으로 떠밀며, 하루를 구했을 단 한 단계 — 검증하는 것 — 을 건너뛰게 만든다. 탐욕은 천천히 당신을 잘 속는 사람으로 만든다. 두려움은 즉각적으로 그렇게 만든다. 둘 다 같은 곳에서 끝난다. 한 번도 감사하지 않은 숫자를 믿는 것.
존재하지 않은 재앙을 쫓다
진짜 피해는 버그 자체가 아니었다. 그것에 대한 내 반응이었다. 며칠 동안 나는 그 유령 같은 손실을 진짜로 취급하며, 그것을 “일으켰을” 전략적 결함을 사냥하러 다녔다. 사이징을 의심했다. 조일 필요 없는 한도를 조였다. 어느 저점에서는, 일어난 적도 없는 손실에 반응하는 것을 멈추기 위해 안전 점검을 느슨하게 풀어버리기 직전까지 갔다 — 진짜 손실을 위해 존재하는 가드를 비활성화함으로써 측정 버그를 고치겠다고 제안한 셈이다.
그것이 망가진 장부의 조용한 위협이다. 장부는 가만히 틀린 채로 있지 않는다. 그것은 당신을 나쁜 결정에 적극적으로 끌어들인다. 모든 반응이 눈앞의 숫자에 의해 정당화되는 것처럼 느껴지기 때문이다. 당신은 오직 회계 속에만 존재하는 피해를 복구하려 전력 질주하다가 건강한 시스템에 진짜 해를 끼칠 수 있다.
수정: 가진 것을 세라
수리는 단 하나의 아이디어였다 — 시가 평가(mark to market). 에쿼티는 놀고 있는 현금이 아니다. 그것은 현금 더하기 계좌가 보유한 모든 것의 현재 가치다. 매수는 이전이다. 매수 시점에 돈은 동등한 가치의 자산이 되는 것이지, 손실이 아니다. 장부가 미결제 포지션을 평가하기 시작하자 -99%는 증발했다. 그것은 애초에 실재하는 어떤 것도 묘사한 적이 없었기 때문이다. 계좌는 처음부터 줄곧 멀쩡했다. 망가진 것은 그것의 자기 인식뿐이었다.
그 수정이 그것이 끝낸 패닉의 크기에 비해 얼마나 작았는지 곱씹어볼 가치가 있다. 계좌가 이미 소유한 것을 평가하는 몇 줄의 코드, 그리고 통째로 허구였던 재앙이 그냥 사라졌다.
결과를 믿기 전에 자를 믿어라
내가 간직한 교훈은 화려한 모든 교훈의 수수한 쌍둥이다. 결과를 — 좋든 나쁘든 — 믿을 수 있으려면, 먼저 그것을 만들어낸 도구를 믿을 수 있어야 한다. 망가진 회계를 통해 평가된 전략은 평가되고 있는 것이 아니다. 실험복을 입은 난수 생성기에 의해 묘사되고 있는 것이다.
그래서 이제 측정이 먼저다. 전략보다 앞서, 최적화보다 앞서, 진짜 일처럼 느껴지는 모든 부분보다 앞서. 시스템이 나에게 극적인 무언가를 보여줄 때, 나의 첫 질문은 더 이상 “전략이 무엇을 했는가?”가 아니다. 그것은 “내가 이 숫자를 정말로 믿는가?”이다. 마음 편하지 않을 만큼 자주, 그 드라마는 알고 보면 자(尺) 안에 있었다.
자기가 가진 것을 세지 못하는 봇은 존재하는 가장 설득력 있는 방식으로 당신에게 거짓말을 할 것이다 — 정밀함으로. 그리고 가장 값비싼 손실 중 일부는, 그것이 애초에 실재했는지 확인하기도 전에 패닉에 휩싸여 쫓아가는 손실이다.
— 시그널 없음, 수익률 없음, 투자 자문 아님.