가격 데이터와 기술적 지표의 기초

지난 몇 편(가치 지표, 수익성·성장성·안정성 지표)에서는 재무제표라는 기업의 성적표를 뜯어봤는데요. 이번 글부터는 방향을 살짝 바꿔서, 기업이 아니라 “가격 그 자체”를 데이터로 다뤄보려고 합니다.
매일 장이 열리고 닫히면서 찍히는 시가·고가·저가·종가·거래량, 이 다섯 개 숫자가 사실은 가격 데이터의 전부입니다. 여기서부터 이동평균 수익률 같은 개념이 나오고, 다음 글에서 다룰 팩터나 모멘텀 전략의 토대도 여기서 시작됩니다. 오늘은 이 가격 데이터가 무엇이고, 어떻게 가공해서 봐야 하는지 정리해보겠습니다.
가격 데이터 5총사, OHLCV
주식 차트를 처음 봤을 때 저도 빨간 막대, 파란 막대가 뭘 뜻하는지 한참 헤맸는데요. 알고 보니 하루 장을 딱 다섯 개 숫자로 요약한 것뿐이더라고요.
시가(Open): 그날 처음 거래된 가격입니다.
고가(High): 그날 중 가장 높았던 가격이고요.
저가(Low): 그날 중 가장 낮았던 가격입니다.
종가(Close): 그날 마지막으로 거래된 가격입니다.
거래량(Volume): 그날 사고팔린 주식 수량입니다.
이 다섯 개를 영문 앞글자만 따서 OHLCV라고 부릅니다. 그리고 대부분의 지표는 이 중에서도 종가를 기준으로 삼는데요. 하루 동안 요동친 가격 중에서 “그날 시장이 최종적으로 합의한 가격”이 종가라고 보기 때문입니다. 이동평균선이든 RSI든 MACD든, 웬만한 기술적 지표는 종가를 재료로 계산됩니다.

수정주가, 과거 가격을 오늘 기준으로 다시 그리는 이유
여기서 함정이 하나 있습니다. 몇 년 치 종가를 그대로 이어붙여서 보면 안 된다는 건데요. 회사에 액면분할이나 무상증자, 배당락 같은 이벤트가 생기면 주가가 뚝 떨어진 것처럼 보이지만 실제로는 손해가 아닌 경우가 많습니다.
피자 한 판을 8조각에서 16조각으로 다시 자른다고 생각하면 이해가 쉬운데요. 조각 하나의 크기는 작아지지만 피자 전체 양은 그대로입니다. 액면분할도 마찬가지입니다. 3,000원짜리 주식을 3:1로 분할하면 3,000원 × (1/3) = 1,000원이 되는데, 주식 수는 3배로 늘어나기 때문에 내가 가진 자산의 총가치는 그대로입니다(출처: 한경 경제용어사전 「수정주가」, 2026.08 기준).
이런 이벤트들을 반영해서 과거 데이터를 현재 기준으로 비교 가능하게 고쳐놓은 게 수정주가입니다. 이걸 안 쓰고 원래 종가만 그대로 놓고 이동평균이나 수익률을 계산하면, 분할한 날 하루아침에 주가가 3분의 1로 폭락한 것처럼 잘못 계산됩니다.
실제로 데이터를 받을 때는 대부분 증권사·API가 수정주가를 기본값으로 제공합니다. 다만 직접 데이터를 다룰 때는 “이거 수정주가 맞나”를 한 번은 확인해볼 필요가 있어 보입니다.
수익률 계산의 기본, 단순수익률과 로그수익률
가격 데이터를 봤으면 이제 이걸로 수익률을 계산해야 하는데요. 가장 익숙한 방식은 단순수익률입니다. 공식은 (나중 가격 – 처음 가격) / 처음 가격입니다.
예를 들어 10,000원짜리 주식이 11,000원이 됐다면 (11,000-10,000)/10,000 = 0.1, 즉 10%입니다. 여기까지는 누구나 아는 계산이고요.
그런데 퀀트 쪽에서는 로그수익률이라는 걸 하나 더 씁니다. 공식은 ln(나중 가격/처음 가격)인데요. 100원이 130원이 됐다고 하면 ln(130/100) = ln(1.3) ≈ 0.2624, 즉 26.24%가 나옵니다(출처: 인사이트캠퍼스 「페어트레이딩 기초편 6. 로그 수익률」).
단순수익률과 숫자가 비슷해 보이는데 왜 굳이 로그를 쓰냐면요, 기간별 값을 그냥 더하면 전체 기간 수익률이 딱 맞아떨어지는 성질이 있어서입니다. 100원이 130원이 됐다가 다시 100원으로 돌아오면 로그수익률의 합이 정확히 0이 됩니다. 여러 구간을 이어붙여 계산하는 퀀트 백테스트에서는 이 점이 꽤 편리하다고 합니다.
누적수익률과 CAGR(연평균 복리 수익률)도 짚고 넘어가겠습니다. 1,000만 원을 투자해서 10년 뒤 1억 원이 됐다고 하면, 이건 10배가 된 것이고 누적수익률로는 900%입니다. 그런데 이 수치만 보면 “10년에 900%나!”라고 느껴질 수 있는데, 매년 얼마씩 불어난 셈인지를 보려면 CAGR을 계산해야 합니다.
공식은 (최종금액/투자금액)^(1/투자년수) – 1이고, 이 예시에 대입하면 10^(1/10) – 1 ≈ 25.89%가 나옵니다(출처: 정우일 블로그 「CAGR과 MDD」). 제가 직접 계산기를 돌려봐도 같은 값이 나오는데요. 10년 누적 900%라는 숫자보다 “매년 약 26%씩 불어난 셈”이라는 CAGR 쪽이 다른 투자 대안과 비교하기에 훨씬 실감 나더라고요.
이동평균 수익률, 소음을 지우고 흐름만 보기
가격은 매일 오르내리기 때문에 하루하루 보면 뭐가 추세인지 알기 어렵습니다. 그래서 나온 게 이동평균(Moving Average)인데요. 최근 며칠 치 종가를 평균 내서, 잔잔한 소음을 지우고 큰 흐름만 남기는 방식입니다.
가장 단순한 형태는 SMA(단순이동평균)입니다. 최근 n일 종가를 그냥 더해서 n으로 나누는 방식인데요. 5일 SMA면 최근 5일 종가의 평균, 20일 SMA면 최근 20일 종가의 평균입니다.
EMA(지수이동평균)는 여기에 가중치를 하나 더 얹은 방식입니다. 최근 가격에 더 큰 비중을 줘서, 가격 변화에 더 빠르게 반응하도록 만듭니다. 가중치 α는 2/(n+1)로 계산하는데, 5일 EMA라면 α = 2/6 ≈ 0.333이 됩니다. SMA는 장기 추세를 무던하게 보여주고, EMA는 단기 매매 신호에 더 민감하게 반응한다는 차이가 있습니다. 두 식 모두 위에 그대로 적어 뒀으니 직접 계산해 확인할 수 있습니다.
실전에서는 보통 5일선, 20일선, 60일선, 120일선을 함께 봅니다. 5일선은 단기 흐름, 20일선은 한 달가량의 흐름, 60일선은 분기, 120일선은 반년 정도의 흐름을 보여준다고 이해하면 됩니다.
여기서 단기 이평선이 중장기 이평선을 아래에서 위로 뚫고 올라가는 걸 골든크로스, 반대로 위에서 아래로 뚫고 내려가는 걸 데드크로스라고 부릅니다. 50일선과 200일선 조합으로도 자주 쓰이는데, 어떤 일수를 쓸지는 정해진 정답이라기보다 시장·전략마다 관행적으로 조정되는 부분입니다.

이렇게 이동평균을 기준으로 추세를 판단하고, 그 추세를 따라간 구간의 이동평균 수익률을 계산해보는 게 기술적 지표를 쓰는 가장 기본적인 방식입니다. “감으로 오를 것 같다”가 아니라 “20일선이 60일선을 넘으면 매수 신호로 본다”처럼, 조건을 미리 정해두고 그 조건이 충족될 때만 움직이는 게 퀀트식 접근입니다.
퀀트 관점에서 본 기술적 지표, 감이 아니라 규칙
이 대목에서 자주 언급되는 연구가 하나 있습니다. Brock, Lakonishok, LeBaron 세 학자가 1992년 The Journal of Finance에 발표한 「Simple Technical Trading Rules and the Stochastic Properties of Stock Returns」라는 논문인데요. 다우지수의 1897년부터 1986년까지 약 90년 치 데이터를 가지고, 이동평균과 거래범위돌파(가격이 일정 구간을 뚫고 나가는지 보는 방식) 전략의 매수·매도 신호를 검증했습니다.
결과는 랜덤워크(가격이 완전히 무작위로 움직인다는 가정)나 AR(1), GARCH-M, EGARCH 같은 여러 통계 모델로는 설명이 안 되는 패턴이 나왔다는 것이었습니다. 구체적으로는 매수 신호가 나온 뒤의 수익률이 매도 신호가 나온 뒤의 수익률보다 높고, 변동성은 오히려 더 낮았다는 결론이었는데요.
다만 이 연구는 1986년까지의 데이터를 다룬 것이고, 그 뒤로 고빈도매매(HFT)가 등장하는 등 시장 구조가 크게 바뀌면서 “지금도 같은 패턴이 유효한가”에 대해서는 학계에서 논의가 계속되고 있는 것으로 보입니다. 과거에 통했던 규칙이 지금도 똑같이 통한다고 단정할 수는 없다는 점, 이 부분은 꼭 짚고 넘어가야 할 것 같습니다.
한계와 주의점: 후행성, 횡보장 속임수, 과최적화
기술적 지표를 쓸 때 초보가 흔히 놓치는 함정이 세 가지 있습니다.
후행성(Lagging): 이동평균이든 다른 지표든 대부분 과거 가격을 기반으로 계산되기 때문에, 실제 가격 변화보다 신호가 늦게 나옵니다. 추세가 이미 시작되고 나서야 골든크로스가 뜨는 식이라, 신호를 보고 들어가면 이미 상승분의 일부는 놓친 뒤일 수 있습니다.
횡보장 속임수(Whipsaw): 가격이 뚜렷한 방향 없이 오르락내리락하는 구간에서는 이동평균선이 여러 번 서로 엇갈리면서 매수·매도 신호를 계속 내보냅니다. 이걸 그대로 따라 사고팔면 매매 수수료만 반복해서 나가는 상황이 될 수 있습니다.
과최적화(Overfitting): 과거 데이터에 딱 맞는 조건을 찾겠다고 이평선 조합을 이것저것 바꿔가며 끼워맞추다 보면, 그 과거 구간에서만 잘 맞는 우연한 패턴을 “진짜 규칙”이라고 착각하기 쉽습니다. 특정 이평선 조합이 과거 어느 구간에서 유독 성과가 좋았다고 해도, 그게 앞으로도 그대로 반복된다는 보장은 없습니다.
세 가지 다 결국 같은 이야기로 이어지는데요. 기술적 지표 하나만 믿고 기계적으로 따라가기보다는, 이게 왜 이런 신호를 내는지 이해한 상태에서 참고 자료로 쓰는 편이 안전해 보입니다.
가격 데이터, 어디서 직접 볼 수 있나
직접 데이터를 받아보고 싶다면 몇 가지 경로가 있습니다.
KRX 정보데이터시스템(data.krx.co.kr): 한국거래소가 공식 제공하는 사이트로, 종목별 시세와 통계를 무료로 조회할 수 있습니다. 개발자용으로는 KRX Open API도 있는데, 하루 10,000회 요청 제한이 있고 2010년 이후 데이터를 제공합니다(2026.08 기준).
공공데이터포털의 금융위원회 주식시세정보 API: 무료로 쓸 수 있고, 영업일 다음날 오후 1시 이후에 하루 1회 갱신되는 방식입니다(2026.08 기준).
네이버 증권: 개발이나 API 없이 그냥 눈으로 차트와 이동평균선을 확인하고 싶을 때 가장 접근성이 좋은 서비스입니다.

마무리
정리하면 이렇습니다. 가격 데이터는 OHLCV 다섯 개 숫자로 이뤄져 있고, 액면분할 같은 이벤트가 있으면 반드시 수정주가를 써야 합니다. 그리고 이동평균은 이 가격 데이터의 소음을 지워 흐름을 보여주지만, 후행성과 횡보장 속임수, 과최적화라는 한계도 함께 갖고 있습니다.
기술적 지표는 미래를 맞히는 도구라기보다, “이런 조건일 때 이렇게 움직이는 경향이 있더라”는 걸 규칙으로 정리해둔 것에 가깝다고 생각합니다. 다음 글에서는 이 가격 데이터를 좀 더 정교하게 다듬은 개념인 팩터(factor)를 살펴보려고 합니다. 가치·모멘텀·퀄리티 같은 팩터가 왜 퀀트 투자의 핵심 재료로 쓰이는지 이어서 정리해보겠습니다.
이동평균선과 거래량을 처음부터 다시 짚어보고 싶다면 이동평균선과 거래량, 딱 이 두 개만 먼저 글이 도움이 될 것 같고요. RSI·MACD 같은 보조지표의 한계가 궁금하다면 보조지표는 왜 “보조”일까 글도 함께 보시면 좋겠습니다. 긴 글 읽어주셔서 고맙습니다.
※ 이 글은 개인이 공부하며 정리한 기록으로, 특정 상품·종목에 대한 투자
권유가 아닙니다. 모든 투자의 판단과 책임은 투자자 본인에게 있으며,
글의 수치는 작성일 기준이므로 실제 가입·투자 전 최신 정보를 꼭 확인하세요.





