개발자의 자산 배분 아키텍처
지인들은 개발자인 내게 종종 묻는다. 어떤 코인을 사야 하는지, 엔비디아 지금이라도 들어가야 하는지. 그럴 때마다 내 대답은 한결같다.
모른다. 알려고 하지도 않는다. 나는 차트를 보며 내일의 등락을 점치지 않는다. 거시 경제 뉴스를 보며 금리를 예측하지도 않는다. 나는 예언가가 아니라 공학도이기 때문이다.
개발자의 관점에서 시장은 시계열 데이터의 통계적 성질이 수시로 변하는 논스테이셔너리 시스템이다. 어제의 규칙이 오늘 깨지는 이 혼돈의 시스템에서 과거 데이터는 지도일 뿐 불변의 법칙이 아니다. 이를 인간의 직관으로 예측하겠다는 건 오만이다.
그래서 나는 예측 모델을 만들지 않았다. 대신 제어기를 설계했다. 예측할 수 없는 파도 위에서 전복되지 않고 스스로 복원력을 가지는 시스템을 만드는 일, 이것이 나의 투자 철학이다.
시스템을 설계하기 전에 가장 큰 리스크 요인부터 정의해야 했다. 시장의 폭락이나 인플레이션이 아니다. 가장 치명적인 버그는 바로 투자자 자신의 뇌다.
인간의 뇌는 최근의 강렬한 데이터에 과도하게 가중치를 둔다. 주가가 오르면 영원히 오를 것이라 믿으며 고점에서 매수 버튼을 누르고, 폭락하면 세상이 망할 것이라 믿으며 저점에서 매도 버튼을 누른다. 데이터 과학에서는 이를 과적합이라고 부른다. 국소적인 패턴에 너무 딱 맞춰진 모델은 새로운 상황이 닥쳤을 때 박살이 난다. 편도체가 지배하는 직관 투자는 필패할 수밖에 없는 알고리즘이다.
그래서 나는 내 시스템에서 나의 판단을 변수에서 제거했다. 내가 믿는 건 오직 수학적으로 검증된 두 가지 원칙인 공분산과 음의 피드백 뿐이다.
내 포트폴리오는 백화점과 같아서 한국 주식, 미국 주식, 채권, 원자재, 금, 달러, 그리고 원화 현금까지 20여 개의 자산군을 담는다. 하지만 단순히 계란을 여러 바구니에 담으라는 고전적인 격언을 따르는 게 아니다. 핵심은 공분산, 즉 자산들의 상관구조다. 나는 수익률보다 서로 같이 무너지는가를 먼저 본다.
주식이 폭락할 때 안전자산인 달러와 국채는 오르는 경우가 많다. 화폐 가치가 떨어질 때 실물 자산인 금과 원자재가 방어한다. 나는 서로 움직임의 벡터가 다른 자산들을 결합해 전체 포트폴리오의 변동성을 상쇄시킨다.
물론 이 상관구조 자체도 고정값이 아니다. 금융 위기 같은 극단적 국면에서는 모든 자산의 상관계수가 급격히 올라가며 동시에 무너질 확률이 커진다. 그래서 나는 분산을 만능 방패가 아니라 시스템의 손상 형태를 치명적 파괴에서 관리 가능한 손상으로 바꾸는 안전장치로 본다. SPOF, 즉 단일 실패 지점을 최대한 제거하는 것이다.
구조를 짰다면 이제 시스템을 돌릴 엔진이 필요하다. 많은 이들이 리밸런싱을 단순한 포트폴리오 점검으로 오해한다. 하지만 개발자에게 리밸런싱은 셋포인트를 유지하는 음의 피드백 루프다.
예를 들어 주식과 채권을 50대 50으로 설정했다고 가정해보자. 시장이 폭등해서 주식이 60, 채권이 40이 되어 이탈이 발생한다. 대중은 더 오른다며 불타기를 하지만 내 시스템은 냉정하게 트리거를 작동시킨다. 오차가 발생했으니 주식을 팔고 채권을 사서 셋포인트를 복구하는 것이다.
반대로 주식이 폭락해 40이 되면 공포에 질려 손절하는 게 아니라, 60이 된 안전자산을 팔아 헐값이 된 주식을 사들인다. 이 기계적인 행위는 그 어렵다는 고점 매도와 저점 매수를 감정을 섞지 않고 강제한다. 금융 공학에서는 이를 변동성 수확이라고 부른다. 섀넌의 도깨비 이론처럼 가격이 큰 방향성 없이 평균회귀적으로 출렁이는 구간에서는 그 파동을 수익이라는 에너지로 전환할 기회를 만들어내기도 한다.
다만 이 효과는 만능이 아니다. 자산 간 상관관계가 충분히 낮고 거래 비용이 작으며 추세가 한쪽으로 길게 쏠리지 않을 때 가장 잘 작동한다. 그래서 맹신이 아닌 관리가 필요하다.
또한 이론과 현실은 다르다. 백테스팅에서는 완벽했던 모델도 현실에 적용하면 삐걱거리는데, 바로 비용과 세금이라는 마찰 계수 때문이다.
너무 잦은 리밸런싱은 거래 수수료와 세금으로 초과 수익을 갉아먹는다. 그래서 나는 밴드 기반 룰을 적용한다. 예를 들어 목표 비중 대비 5퍼센트포인트 이상 이탈했을 때만 개입하는 식이다. 또한 자산을 팔아서 비율을 맞추면 세금이 발생하므로, 매달 들어오는 배당금과 근로 소득인 현금 흐름을 부족한 자산에 채워 넣는 방식으로 마찰을 최소화한다.
누군가는 그렇게 복잡하게 분산하면 수익률이 너무 지루하지 않냐고 묻는다. 맞다. 이 시스템은 지루하다. 나는 하룻밤에 자산이 2배가 되는 짜릿함을 모른다. 하지만 반대로 하룻밤에 자산이 반토막 나서 잠 못 이루는 공포도 모른다.
투자에서 나의 목표 함수는 최대 수익률이 아니다. 나의 목표는 세금과 비용이라는 제약조건 하에서 최대 낙폭 제어와 수면의 질을 최적화하는 것이다.
개발자에게 좋은 시스템이란 최고 속도만 빠른 불안한 레이싱카가 아니다. 비가 오나 눈이 오나 24시간 365일 멈추지 않고 돌아가는 서버와 같은 가용성 높은 시스템이다.
나는 시장을 이기려 하지 않는다. 그저 시장이 어디로 튀든 시스템이 붕괴하지 않도록 제어할 뿐이다. 시장이 오르면 자산 가치가 늘어서 좋고, 시장이 내리면 싼값에 수량을 늘릴 수 있어서 좋다.
그래서 나는 오늘 밤도 편안하게 잠든다. 내일 나스닥이 폭등하든 폭락하든 내 시스템은 그 파도 위에서 스스로 균형을 잡을 테니까.