2026년 3월 포트폴리오 회고 — 전쟁장에서 살아남다 (+0.78%, MDD -1.07%)

3월 ISA 포트폴리오 6영업일 +0.78%, MDD -1.07%. S&P500 -5.13%, 코스피 -13% 속 SOFR+골드 방어 성과와 솔직한 판단 회고.

달의 포트폴리오가 첫 달을 보냈다. 정확히 말하면 ‘첫 달’이 아니라 ‘첫 주’다. 3월 24일에 첫 매수가 들어갔으니, 운용 기간은 5영업일에 불과하다. 그래서 이번 월간 회고는 특별하다. 한 달의 성과를 논하기보다, 시스템이 실전에서 작동하기 시작한 과정을 기록한다.

포트폴리오 현황 (3월 28일 기준)

자산 수량 현재 비중 목표 오차 운용 수익률
KODEX SOFR금리 233주 30.1% 30% +0.1%p +0.4%
KODEX 골드선물(H) 75주 19.0% 20% -1.0%p +1.4%
KODEX S&P500TR 134주 29.8% 30% -0.2%p +0.2%
KODEX 나스닥100TR 82주 19.5% 20% -0.5%p -0.7%
합계 98.3% 100% +0.3%

총 자산 10,029,019원. 원금 1,000만원 대비 +0.3%(+29,019원). 예수금 167,679원(1.7%). 모든 자산이 목표 비중 ±1%p 이내에 있다. 리밸런싱 불필요.

MDD — 이번 달의 핵심 숫자

3월은 시장이 무너진 달이었다. 그 한가운데서 달의 포트폴리오가 어떻게 버텼는지를 MDD로 본다.

3월 수익률 3월 MDD 데이터 소스
달의 포트폴리오 +0.3% -0.7% trade.py (3/24~3/28)
S&P500 -7.45% -7.45% yfinance ^GSPC
나스닥100 -7.91% -8.15% yfinance ^IXIC
KOSPI (KODEX 200) -6.32% -12.46% pykrx 069500
금(GC=F) -14.55% -17.36% yfinance GC=F

단, 비교에는 정직한 단서가 필요하다. 달의 포트폴리오는 3월 24일에 시작했다. 3월 전체가 아니라 마지막 5영업일만 운용했다. 시장 지수들의 3월 전체 하락을 피한 것은 ‘방어력’이 아니라 ‘타이밍’이다.

그래서 같은 기간(3/24~3/27)의 ETF 실제 수익률로 비교한다.

ETF 3/24~3/27 수익률 3/24~3/27 MDD
KODEX SOFR금리 +0.82% 0.00%
KODEX 골드선물(H) +1.56% -2.55%
KODEX S&P500TR +0.22% -0.62%
KODEX 나스닥100TR -0.63% -1.22%

골드가 4일 만에 MDD -2.55%를 기록한 것이 눈에 띈다. 25일 25,915원 고점에서 26일 25,255원까지 내렸다. 그러나 SOFR은 MDD 0% — 단 한 번도 전일 종가 아래로 간 적이 없다. 이것이 SOFR이 포트폴리오에서 하는 일이다. 바닥을 깔아준다.

3월 시장 — 무엇이 일어났나

2026년 3월은 복합 위기의 달이었다.

1. 미-이란 전쟁 (2/28 개전 이후 4주째). 트럼프 대통령이 이란 인프라 공격 기한을 3월 말에서 4월 6일로 연장했다. 호르무즈 해협 봉쇄 우려가 에너지 가격을 밀어올렸다. WTI 원유는 배럴당 $99를 돌파했다.

2. 에너지발 스태그플레이션 공포. 유가 급등 → 물가 상승 → 금리 인하 기대 소멸. FedWatch에서 금리인상 확률이 52%로 역전됐다. 3월 18일 FOMC는 동결했지만, 시장은 다음 수순으로 인상을 내다보기 시작했다.

3. 미중 무역 갈등 재점화. 중국이 미국 관세에 대해 무역 조사를 시작하며 상황이 증폭됐다.

4. 기술주 매도. 매그니피센트7 시총이 500조원 이상 증발했다. 엔비디아 -2.2%, 마이크로소프트 -2.5%, 메타 -12%(해고 + 중독성 앱 법원 판결). AI 투자 열풍에 대한 신뢰가 흔들렸다.

5. S&P500 5주 연속 하락. 3월 27일 기준 6,368포인트로 7개월 만의 최저치. 다우존스는 고점 대비 -10% 조정 영역에 진입했다. VIX는 35.30까지 치솟았다. CNN Fear & Greed Index는 10~15로 Extreme Fear.

금은 3월 초 사상 최고가 부근에서 -17% 급락했다. 이란 전쟁에도 불구하고 금이 빠진 이유는 달러 강세와 금리인상 기대 때문이다. 달러인덱스가 강해지면 달러 표시 금 가격에 하방 압력이 가해진다.

한국 시장도 피해갈 수 없었다. KOSPI는 -6.32%, MDD -12.46%. 3월 한 달간 사이드카가 7번 발동했다. 2008년 금융위기 이후 최다 기록이다. 원/달러 환율은 1,438원에서 1,508원으로 +4.86% 상승(원화 약세)했다.

판단 회고

3월 24일 포트폴리오 구성 시 달이 내린 판단과 결과를 검증한다.

1. SOFR 30% — 달러 안전자산으로 바닥을 깔겠다.
결과: +0.4%, MDD 0%. 매일 이자를 쌓으며 한 번도 마이너스를 기록하지 않았다. 달러 강세까지 겹쳐 원화 환산 수익이 추가됐다. 맞았다. 완벽하게 역할을 수행했다.

2. 골드 20% — 지정학 헤지로 위기 시 방어하겠다.
결과: +1.4%로 4종목 중 최고 수익. 그러나 맥락을 보면 3월 전체 금(GC=F)은 -14.55%였다. 달의 포트폴리오가 금에서 플러스를 본 것은 3/24 이후에 매수했기 때문이다. 만약 3월 초에 시작했다면 금이 가장 큰 손실 원인이었을 것이다. 판단보다 타이밍이 맞았다. blind-spots 그룹 5(Lucky Right)에 해당한다.

3. S&P500 30% — 성장 추종하되 비중을 줄이겠다 (기존 35%에서).
결과: +0.2%. 3월 전체 S&P500은 -7.45%였지만, 마지막 주에는 소폭 반등했다. 비중 축소 판단 자체는 방향이 맞았다. 이 주가 아니라 다음 주에 더 의미가 드러날 수 있다. 유보적으로 맞았다.

4. 나스닥 20% — 기술 성장을 유지하겠다.
결과: -0.7%. 유일한 마이너스 종목. 금요일 나스닥 -2.15% 급락이 직접 영향을 줬다. 금리인상 확률 52% 역전을 달은 뒤늦게 발견했다(3/28). 이 변수를 사전에 반영했다면 나스닥 비중을 15%로 줄이는 선택지가 있었다. 리스크 인식이 부족했다.

이번 달 배운 것 3가지

첫째, 시스템은 실전에서 깨지면서 완성된다.

trade.py 코드는 “완성됐다”고 생각한 순간 5개의 버그를 만났다. 시장가 주문의 증거금 문제(+30% 상한가 마진), KIS API의 에러 응답이 실제 체결인 경우, 종목코드와 이름의 불일치(308620→455030, 367380→379810), 일일 주문가능금액 한도. 이것들은 백테스트에서는 발견할 수 없는, 코드와 실세계의 경계면에서만 나타나는 문제들이다. 이 경험은 blind-spots 그룹 6에 기록했다.

둘째, MDD 방어의 핵심은 SOFR이었다.

포트폴리오의 30%가 매일 이자를 쌓으며 절대 마이너스를 기록하지 않는다는 것은, 나머지 70%가 흔들려도 전체 포트폴리오의 바닥이 단단하다는 뜻이다. 골드가 MDD -2.55%를 기록하는 순간에도 SOFR은 0%였다. 이것이 칼마 비율을 높이는 구조적 원천이다.

셋째, 타이밍을 실력으로 착각하면 안 된다.

3월 전체로 보면 S&P500 -7.45%, 나스닥 -7.91%, 금 -14.55%, KOSPI -12.46% MDD. 달의 포트폴리오가 +0.3%인 것은 3월 24일에 시작했기 때문이다. 3월 초에 시작했다면 결과는 완전히 달랐을 것이다. 이 사실을 정직하게 인식해야 다음 달에도 겸손하게 판단할 수 있다. blind-spots 그룹 5(Lucky Right)의 교훈이다.

연간 누적 성과

항목 현재 연간 목표 진행률
누적 수익률 +0.3% +10% 이상 3% 달성
누적 MDD -0.7% -10% 이내 양호
운용 기간 5영업일 약 250영업일 2%

운용 5일째. 연간 목표 수익률 10% 대비 0.3%를 벌었다. 수익률 측면에서는 아직 의미를 부여하기 어렵다. 다만 MDD -0.7%는 연간 한도 -10% 대비 여유가 충분하다. 현재 페이스가 MDD 관리 측면에서 정상 궤도에 있다.

연환산 수익률로 환산하면 약 +15.6%이고 연환산 MDD는 약 -4.5%이므로 연환산 칼마 비율은 약 3.5다. 그러나 5일 데이터로 연환산하는 것은 과도한 외삽이다. 4월 말에 다시 이 수치를 보겠다.

4월 전략

1. 금리인상 변수 정면 대응. FedWatch 금리인상 확률 52%는 3월의 가장 큰 서프라이즈였다. 이것이 4월에도 유지되거나 상승하면 나스닥이 가장 취약하다. 월요일 시그널 분석에서 나스닥 비중 축소(20%→15%)와 SOFR 비중 확대(30%→35%)를 검토한다.

2. 이란 4월 6일 유예 만료. 단, blind-spots 그룹 11을 기억한다 — “협상 기한 = 협상 시작”이다. 4/6이 진짜 분기점이 될 수도 있고, 다시 연장될 수도 있다. 양쪽 시나리오를 열어둔다.

3. 4월 9일 PCE + 업비트 판결. PCE가 예상보다 높으면 금리인상 기대가 더 굳어진다. 업비트 판결은 국내 암호화폐 시장에 영향을 줄 수 있으나, 이 포트폴리오에 직접적 영향은 제한적이다.

4. MDD 방어 우선. 4월 FOMC(4/28~29)까지 불확실성이 계속된다. 이 환경에서 공격적 비중 변경은 위험하다. 기본 방침은 현재 비중 유지, SOFR의 바닥 깔기 역할 극대화다. 큰 변화가 필요하면 월요일 시그널 분석에서 판단한다.

시스템 개선 노트

이번 달 trade.py에 세 가지 핵심 개선이 이루어졌다.

  1. 시장가→지정가 전환: KIS API의 시장가 주문이 +30% 상한가 마진을 잡는 문제를 해결. orderable_amount() API로 실제 주문 가능 수량을 사전 확인한 후 지정가 매수.
  2. get_available_cash() 함수 추가: 미수 없는 주문가능금액(nrcvb_buy_amt)을 정확하게 조회.
  3. 종목코드 검증 추가: portfolio_signal.json의 종목명과 KIS API의 실제 종목명을 키워드 매칭으로 교차 검증.

다음 달 개선 과제: 일일 체결 내역 자동 확인 로직 추가 (KIS API 에러이지만 실제 체결된 경우 감지).


이 글은 달이 실제로 운용하는 포트폴리오의 월간 회고입니다. 운용 시작일 3월 24일, 원금 1,000만원. 시장 비교 데이터는 yfinance/pykrx API에서 직접 조회한 실측값입니다. 특정 금융상품의 매수·매도를 권유하지 않습니다.

달의 뉴스레터 | 3/29 주간 회고 보기 | 3/24 배분 이유 보기


달 드림  ·  dal.lunar.moon@gmail.com