← All sessions

3회차 · 글로 설계하는 내 포트폴리오

내가 들고 있는 종목 위험해

용어 —
변동성 · 최대낙폭 · 하방편차
난이도 —
일반
선수 —
2회차
기준일 —
2026-08-14

요약#

  • "내가 들고 있는 종목 위험해"라고만 물으면 AI가 위험의 뜻을 대신 고릅니다. 실제 답은 종목의 가격 위험보다 계좌의 집중도를 먼저 설명하고 위험도 6/10을 붙였습니다.
  • 위험은 하나의 숫자가 아닙니다. 흔들림은 연율화 변동성, 고점 이후 최악의 하락은 최대낙폭, 손실 쪽 움직임만 보려면 하방편차로 잽니다.
  • 3년 수정종가 730개를 두 출처로 대조해 계산하니 변동성은 삼성전자, 최대낙폭은 현대차가 가장 컸습니다. 무엇을 위험이라 부르느냐에 따라 답이 바뀝니다.

같은 자료, 다른 질문#

한 줄로 물으면

내가 들고 있는 종목 위험해?

집중도 · 위험도 6/10

보유 비중은 정확히 계산했지만 위험을 집중도로 정했습니다. 기간과 가격 시계열, 위험 지표는 없었습니다.

대화 전문

용어를 갖추고 물으면

내가 들고 있는 종목 위험해?
최근 3년 기준으로 연율화 변동성, 최대낙폭, 하방편차 세 가지로 나눠서 종목별로 알려줘

4종목 × 3지표 = 12개 수치

기간과 위험의 뜻이 드러났고 근사치라는 한계도 밝혔습니다. 다만 실제 종가로 검산하니 여러 값이 달랐습니다.

대화 전문

「내가 들고 있는 종목 위험해」라고 물으면

2회차에서 쓴 예제 계좌를 그대로 주고, 이렇게만 물었습니다.

내가 들고 있는 종목 위험해?

삼성전자 50주 · 평균단가 79,600원 · 현재가 268,250원
KB금융 10주 · 평균단가 53,600원 · 현재가 169,400원
셀트리온 40주 · 평균단가 181,738원 · 현재가 200,500원
현대차 1주 · 평균단가 200,500원 · 현재가 444,000원
예수금 2,000,000원

AI 생성 · 검증 전 — 요약해 옮겼습니다. 인용문과 숫자는 원문 그대로입니다.

ChatGPT 대화 전문 보기

AI는 평가금액과 보유 비중을 정확히 계산했습니다. 삼성전자와 셀트리온이 전체 자산의 83.8%라는 점도 찾아냈습니다. 그리고 이렇게 답을 열었습니다.

종목 자체가 위험하다기보다는, 현재 포트폴리오의 ‘집중도’가 꽤 높은 편입니다. (…) 현재 포트폴리오 위험도를 대략 중상 정도(6/10)로 봅니다.

이 계좌의 위험을 집중도로 정한 것입니다. 결과에는 숫자 하나가 남았습니다. 위험도 6/10. 무엇을 뜻하는 점수인지, 어떻게 계산했는지는 설명하지 않았습니다.

「셀트리온은 주가 변동성이 훨씬 커질 수 있다」고도 했습니다. 하지만 숫자는 없었습니다.

과거 가격은 한 번도 가져오지 않았습니다. 대신 기업 실적과 평균단가를 설명했습니다. 원문에는 구체적인 매도·배분 의견도 들어 있습니다. 그 부분은 본문에 옮기지 않았습니다.

실행은 ChatGPT · 2026-08-14 기록입니다. 같은 프롬프트를 다시 넣으면 숫자와 설명은 달라질 수 있습니다.

무엇이 빠졌나

AI가 틀린 답을 한 것은 아닙니다. 우리가 위험의 뜻을 정하지 않자 AI가 집중도를 골랐습니다.

위험을 알려면 정해야 할 것이 답에 있나이름
가격이 얼마나 흔들렸나숫자 없음변동성
고점에서 실제로 얼마나 빠졌나없음최대낙폭
손실 쪽 움직임만 얼마나 컸나없음하방편차
어느 기간을 볼 것인가없음최근 3년

기간이 없다

변동성과 최대낙폭은 시작일과 종료일에 따라 달라집니다. A에는 어느 기간을 볼지가 없어 가격을 가져올 기준도 없었습니다.

위험의 이름이 없다

집중도는 다음 회차의 질문입니다. 이번 회차에서는 종목 하나의 가격 위험만 잽니다.

이번 회차의 핵심 용어

위험은 하나가 아닙니다. 이 회차가 다루는 핵심은 변동성 · 최대낙폭 · 하방편차 세 가지 — 셋이 서로 다른 위험을 잽니다. 로그수익률은 이 숫자들을 만드는 재료라 맨 끝에 심화로 뒀습니다.

변동성

일별 수익률이 평균에서 흩어진 폭(표준편차)을 1년 기준으로 환산한 값입니다.

일별 표준편차 σ = 표준편차(r₁, …, r₇₂₉)
연율화 변동성 = σ × √252   (거래일 252일)

가격이 위아래로 자주 크게 움직일수록 커집니다. 상승도 위험으로 세므로 손실의 크기와 같은 말은 아닙니다. 삼성전자의 일별 표준편차 3.08%를 연율화하면 48.84%입니다. 거래일 수나 수익률 주기가 다르면 같은 숫자를 그대로 비교하지 않습니다.

흔들림은 실제 성장률을 깎습니다. 2회차에서 현상만 보았던 왕복 손실을 여기서 숫자로 잽니다.

+30% 뒤 −30%면 산술평균은 0%지만 자산은 0.91, 기간당 기하평균은 −4.61%입니다. 수익률이 크지 않을 때는 아래 근사식으로 어림합니다.

기하평균 ≈ 산술평균 − 분산÷2 = −4.50%

최대낙폭

관측 기간 중 과거 고점에서 이후 저점까지의 가장 큰 하락률입니다.

낙폭ₜ = 오늘 종가 ÷ 오늘까지의 최고 종가 − 1
최대낙폭 = min(낙폭ₜ)

투자자가 실제로 견뎌야 했던 가장 깊은 골을 보여줍니다. 현대차는 2026년 6월 1일 750,000원이었습니다. 7월 30일에는 351,000원까지 내려갔습니다. 이 기간의 최대낙폭은 −53.20%입니다. 시작일을 바꾸면 값도 달라집니다.

하방편차

정한 목표수익률보다 낮은 움직임만 모아 계산한 위험입니다.

하방편차 = √{평균[min(rₜ − 목표, 0)²]} × √252

오를 때의 흔들림은 빼고 손실 쪽만 보고 싶을 때 씁니다. 이 글은 일별 목표를 0%로 두고 전체 729개 수익률을 분모로 삼았습니다. 그 정의에서 삼성전자는 32.45%입니다. 목표와 분모를 밝히지 않은 하방편차끼리는 비교하지 않습니다.

심화 — 이 숫자들을 만드는 재료입니다. 급하지 않으면 건너뛰어도 됩니다.

로그수익률

연속한 두 가격의 비율에 자연로그를 취한 수익률입니다.

로그수익률 rₜ = ln(오늘 종가 ÷ 어제 종가)

여러 날의 값을 더할 수 있어 일별 움직임을 모아 변동성을 계산할 때 씁니다. 2026년 8월 13일 삼성전자 종가는 268,000원입니다. 다음 날 274,500원으로 올랐습니다. 단순수익률은 +2.43%, 로그수익률은 +2.40%입니다. 계좌 손익을 말할 때는 단순수익률이 더 직관적입니다.

용어를 갖추고 다시 물으면

같은 계좌, 같은 입력입니다. 질문에 기간과 위험 지표 세 개만 더했습니다.

내가 들고 있는 종목 위험해?
최근 3년 기준으로 연율화 변동성, 최대낙폭, 하방편차 세 가지로 나눠서 종목별로 알려줘

AI 생성 · 검증 전 — B가 낸 근사치와 실제 수정종가 계산값을 나란히 놓았습니다.

ChatGPT 대화 전문 보기

위험이라는 한 단어가 열두 개 숫자로 갈라졌습니다. 하지만 숫자가 늘었다고 계산까지 맞는 것은 아닙니다.

그래서 같은 기간의 실제 종가로 다시 계산했습니다. 2023년 8월 14일부터 2026년 8월 14일까지 수정종가 730개입니다.

pykrx와 FinanceDataReader에서 각각 값을 받았습니다. 한 줄씩 맞춰보니 네 종목의 2,920개 값이 모두 같았습니다.

A/B의 현재가는 장중 가격입니다. 검산은 장 마감 종가를 쓰므로 두 값은 다를 수 있습니다.

종목B 변동성검산B MDD검산B 하방편차검산
삼성전자38–40%48.84%−42.9%−43.17%26–28%32.45%
KB금융30–34%39.19%−34.4%−30.34%21–24%26.47%
셀트리온약 38%37.40%−29.3%−32.70%25–27%24.51%
현대차약 40%47.96%−50.1%−53.20%27–30%31.14%

B는 스스로 수치를 「근사치」라고 불렀습니다. 하방편차도 정의에 따라 달라진다고 경고했습니다.

둘 다 잘한 일입니다.

문제는 계산 방식입니다. B는 직접 계산하지 않고 외부 사이트 값을 옮겼습니다. 여러 수치가 실제 기간과 달랐습니다.

질문이 좋아져도 계산은 따로 검산해야 합니다.

B는 삼성전자 평가손익도 +8,432,500원이라고 썼습니다. 정답은 +9,432,500원입니다. 이 숫자는 오히려 A가 맞혔습니다.

나란히 놓고 보면

한 줄로 물었을 때용어를 갖췄을 때
위험의 뜻AI가 집중도로 선택흔들림 · 고점 대비 하락 · 손실 쪽 움직임
기간없음최근 3년
가격 시계열사용하지 않음외부 가격 지표 인용
답한 위험 숫자근거식 없는 6/104종목 × 3지표 = 12개
한계밝히지 않음근사치 · 하방편차 정의 차이 명시
검산 결과비중·평가손익 정확구조는 선명하지만 여러 수치가 다름

A는 AI가 고른 답이고, B는 내가 고른 답입니다. 정확성을 약속한 것이 아닙니다.

질문의 해상도가 답의 구조를 바꿉니다.

‘위험해?’ 한 마디로는 AI가 어느 위험을 답할지 내가 고를 수 없었습니다. 같은 단어라도, 이름을 아는 만큼 잘게 나눠 물을 수 있습니다.

내 계좌로 해보기

1단계 · 가격 자료 준비하기

이 회차의 검증된 CSV를 내려받거나, 2회차에서 저장한 종목코드로 같은 기간의 수정종가를 받습니다. 장중 현재가가 아니라 일별 종가인지 확인하면 통과입니다.

2단계 · 같은 자료로 두 번 묻기

A와 B를 각각 새 대화에 넣습니다. 입력 종목과 기간이 같아야 대조가 성립합니다.

3단계 · 검산하기

먼저 CSV를 AI에 올리고 이렇게 물어보세요.

각 종목의 일별 로그수익률을 구해줘.
연율화 변동성은 표본표준편차 × √252,
MDD는 종가 ÷ 누적최고가 − 1의 최솟값,
하방편차는 목표 0%, 전체 관측치를 분모로 계산해줘.

위 표와 반올림 오차 안에서 같으면 검산이 끝났습니다. 다르면 수정주가 여부, 날짜 범위, 하방편차의 목표수익률부터 확인합니다.

코딩은 선택입니다. 계산을 직접 재현하고 싶을 때만 아래 코드를 씁니다.

import pandas as pd, numpy as np
px = pd.read_csv('03-risk-prices.csv', encoding='utf-8-sig', index_col='date')
r = np.log(px / px.shift()).dropna()
vol = r.std(ddof=1) * np.sqrt(252)
mdd = (px / px.cummax() - 1).min()
down = np.sqrt(np.minimum(r, 0).pow(2).mean()) * np.sqrt(252)
print(pd.DataFrame({'변동성': vol, 'MDD': mdd, '하방편차': down}))

4단계 · 순위가 바뀌는지 보기

변동성과 하방편차는 삼성전자가, 최대낙폭은 현대차가 가장 컸습니다. 어느 종목을 사고팔지는 이 회차의 질문이 아닙니다. 내가 말한 위험이 어느 숫자인지 설명할 수 있으면 완료입니다.

정리

용어무엇을 재나언제 쓰나
변동성상승·하락 전체의 흔들림(연율화)가격 움직임의 폭을 볼 때
최대낙폭고점 이후 최악의 하락실제로 견딘 손실 구간을 볼 때
하방편차목표 아래 움직임만상승 변동을 위험에서 빼고 싶을 때
로그수익률 (심화)하루 가격비율의 로그여러 날의 수익률을 모을 때

위험은 하나가 아닙니다. 먼저 이름을 고르고 나서 숫자를 봅니다.

2회차의 수익률도, 이번의 위험도 그랬습니다. 뭉뚱그린 단어는 늘 여러 개의 정밀한 질문으로 갈라집니다 — 다음 회차의 ‘분산’도 마찬가지입니다.

다음 회차에서는 종목 하나가 아니라 네 종목이 함께 움직이는 방식을 잽니다.

예제 계좌는 업종이 서로 다른 코스피 대표주 네 종목으로 교육용으로 구성한 가상 계좌입니다. 수량과 매수 이력은 설계한 값이고 가격만 실제 종가이며, 여기 나온 숫자는 종목의 우열이 아니라 계산 방법을 보여주기 위한 재료입니다. 가격 시계열은 2026년 8월 20일에 KRX 계열과 네이버 계열 데이터로 교차검증한 2026년 8월 14일까지의 수정종가이며 이후 갱신하지 않습니다.

자주 묻는 질문#

  1. 변동성이 높으면 무조건 위험한 종목인가요

    변동성은 오를 때와 내릴 때의 흔들림을 모두 셉니다. 큰 상승이 잦아도 변동성은 커지므로 손실 가능성과 같은 말은 아닙니다. 손실 쪽만 보고 싶다면 하방편차나 최대낙폭을 함께 봐야 합니다.

  2. 최대낙폭이 과거에 50%였으면 앞으로도 50% 떨어지나요

    아닙니다. 최대낙폭은 관측한 기간에 실제로 겪은 최악의 고점 대비 하락입니다. 미래 손실을 예측하는 값이 아니라 과거에 어느 정도의 하락을 견뎌야 했는지 보여주는 값입니다.

  3. 하방편차는 계산할 때마다 왜 달라지나요

    어느 수익률 아래를 손실로 볼지와 분모를 어떻게 둘지에 따라 달라집니다. 이 글은 일별 목표수익률을 0%로 두고 전체 729개 관측치를 분모로 사용했습니다. 숫자를 비교하려면 먼저 같은 정의를 썼는지 확인해야 합니다.

  4. 단순수익률 대신 로그수익률을 쓰는 이유는 무엇인가요

    로그수익률은 여러 날의 값을 더하면 전체 기간의 로그수익률이 됩니다. 그래서 일별 움직임을 모아 변동성을 계산하기 편합니다. 다만 실제 계좌의 손익률을 설명할 때는 단순수익률이 더 직관적입니다.

  5. 평균단가가 낮으면 가격 위험도 낮아지나요

    낮아지지 않습니다. 평균단가는 내 손익을 계산하는 기준이고 시장 가격의 흔들림을 바꾸지 않습니다. 같은 종목을 같은 기간 보유했다면 매입가가 달라도 변동성·최대낙폭·하방편차는 같습니다.

이 회차에 나온 용어4

변동성 · Volatility · Annualized Standard Deviation
일별 수익률의 표준편차를 √252로 연율화한 값. 가격이 위아래로 흔들리는 폭을 잰다. 상승과 하락을 모두 센다
최대낙폭 · Maximum Drawdown · MDD
관측 기간 중 과거 고점에서 이후 저점까지의 가장 큰 하락률
하방편차 · Downside Deviation
정한 목표수익률보다 낮은 움직임만 모아 계산한 위험. 목표와 분모를 함께 밝혀야 한다
로그수익률 · Log Return
연속한 두 가격의 비율에 자연로그를 취한 수익률. 여러 기간의 값을 더할 수 있어 변동성 계산의 재료가 된다

참고#