brunch

파이썬으로 배우는 기술적 분석: 삼성전자 주가분석 3편

by 박정수

파이썬으로 배우는 기술적 분석: 삼성전자 주가분석 3편 (Bollinger Band, Stochastic)


연일 삼성전자가 가격갱신을 하고 있습니다. "5만 전자" 가능한가를 놓고 오랜 시장을 허비하더니 이제는 단기간에 10만 전자를 이야기하고 있습니다. 아마도 많은 투자가들이 버티지 못하고 다시는 삼성전자 주식을 안 산다고 자신에게 맹세를 하고 떠났을 것입니다. 그러나 누구는 몇 달 사이에 두 배가 되었구요. 그 핵심이유는 HBM반도체의 호황이 지속될 것이라는 전망, 그리고 SK Hynix는 물론 삼성전자도 HBM3 E 양산 체제를 구축하며 엔비디아 등 글로벌 AI 반도체 기업과 공급 계약을 확대 중이라는 사실입니다.


실제로 2025년 3분기 영업이익이 10조 원을 넘을 것으로 예상되며, 이는 전년 대비 10.4% 증가한 수치라는 것이다. 이런 내용을 향후 주가를 분석하는 것을 Fundamental Analysis (기초분석)이라고 하는데, 우리가 살려본 기술적 분석으로는 이동평균은 장기적인 상승세(Golden Cross), RSI 등 강도를 보면 단기간에 너무 많이 올랐다는 입니다.


여기서 우리는 Fundamental과 Technical Analysis의 차이를 볼 수 있는데, 주가라는 것은 평생 상승하는 물체가 아니라 오르고 내리 고를 거듭하는데, 이 시점을 포착을 해야만이 사고/팔고를 통해서 수익을 실현하는데, 그런 시점이나 타이밍을 포착하는데 Technical Analysis는 더 유리하다는 장점이 있습니다.


Fundamental 분석을 통해서 "이제는 사도 되겠는걸?" 이란 질문은 한다면, Technical Analysis를 통해서는 "그럼 언제 얼마에 살까?" 또는 이미 주식을 보유한 투자자의 경우 "계속 Go를 할까 아니면 Profit Taking (또는 Stop Loss)을 할까? 를 판단하는 근거를 찾는 과정입니다.


문제는 기술적 분석 지표도 급등락, 외부충격, 시장 상황에 따라 "이런 경우는 RIS가 잘 맞는 것 같아", "나는 학술이론에서도 가장 많이 인용이 된다는 이동평균이 잘 맞는 것 같아", "이동평균은 후행지표이다 보니, 시장이 급락을 하는데도, Dead Cross가 나오지 않는 그런 단점도 있어" 등의 Know-How가 축적이 되는 것입니다.


저는 오늘도 투자가의 관심이 가장 많은 삼성전자를 가지고 Bollinger Band, 스토캐스틱 오실레이터라는 새로운 기술적 지표를 소개하려고 합니다.


Bollinger Band

Bollinger Bands는 존 볼린저(John Bollinger)가 1980년대 초에 개발한 기술적 분석 도구입니다.

목적: 이 지표는 시장의 변동성을 측정하고 가격의 상대적인 고점과 저점을 판단하는 데 사용됩니다.

구성 요소: 중앙선: 일반적으로 20일 이동 평균선으로 설정됩니다. 상단 밴드: 중앙선에서 +2 표준편차를 더한 값입니다. 하단 밴드: 중앙선에서 -2 표준편차를 뺀 값입니다.

용도: 가격이 상단 밴드를 초과하면 과매수 상태를 나타내고, 하단 밴드를 하회하면 과매도 상태를 나타냅니다. 가격이 밴드에 가까워질 때 변동성이 증가할 가능성이 높습니다.

boll.png

MA: 이동평균 (Moving Average)

STD: 표준편차 (Standard Deviation)

20: 보통 20일 기준으로 계산

Python CODE

import yfinance as yf

import pandas as pd

import matplotlib.pyplot as plt

# 1. 데이터 불러오기 (예: 삼성전자)

ticker = "005930.KQ" # Yahoo Finance에서 삼성전자 코드

df = yf.download(ticker, start="2023-01-01", end="2025-01-01")

# 2. Bollinger Band 계산

df ['MA20'] = df ['Close']. rolling(window=20). mean()

df ['STD20'] = df ['Close']. rolling(window=20). std()

df ['Upper'] = df ['MA20'] + (df ['STD20'] * 2)

df ['Lower'] = df ['MA20'] - (df ['STD20'] * 2)

# 3. 시각화

plt.figure(figsize=(12,6))

plt.plot(df ['Close'], label='Close Price')

plt.plot(df ['MA20'], label='MA20')

plt.plot(df ['Upper'], label='Upper Band', linestyle='--')

plt.plot(df ['Lower'], label='Lower Band', linestyle='--')

plt.fill_between(df.index, df ['Upper'], df ['Lower'], color='gray', alpha=0.2)

plt.legend()

plt.title('Bollinger Bands')

plt.show()


스토캐스틱 오실레이터


Stochastic Oscillator는 조지 레인(George Lane)이 1950년대에 개발한 모멘텀 지표입니다. 현재 가격이 일정 기간 동안의 가격 범위에서 얼마나 높은지 또는 낮은 지를 측정하여 과매수 및 과매도 신호를 식별하는 데 사용됩니다. 즉, "지금 가격이 최근 흐름에서 얼마나 높은가?"를 알려줘요.

% K: 현재 가격의 상대적 위치

% D: % K의 이동평균 (보통 3일)


sto.png


보통 N은 14일로 설정

% K와 % D가 80 이상이면 과매수, 20 이하이면 과매도로 판단


import yfinance as yf

import pandas as pd

import matplotlib.pyplot as plt

# 삼성전자 데이터 불러오기

df = yf.download("005930.KQ", start="2023-01-01", end="2025-01-01")

# 스토캐스틱 계산

low_min = df ['Low']. rolling(window=14). min()

high_max = df ['High']. rolling(window=14). max()

df ['% K'] = ((df ['Close'] - low_min) / (high_max - low_min)) * 100

df ['% D'] = df ['% K']. rolling(window=3). mean()

# 시각화

plt.figure(figsize=(12,6))

plt.plot(df ['% K'], label='% K')

plt.plot(df ['% D'], label='% D')

plt.axhline(80, color='r', linestyle='--')

plt.axhline(20, color='g', linestyle='--')

plt.title('Stochastic Oscillator')

plt.legend()

plt.show()



Python 통합차트

SSE_chart4.png


지금 삼성전자의 주식은 Upper Band의 상층부에 맞다야 있는데, 이는 현재의 주가 움직임이 통계학적으로 매우 높은 수준이다라는 것을 보여주고 있고, Stochastic Oscillator도 거의 90% 이상에 위치해 있어, 삼성전자 주가가 과도하게 높게 상승했다는 Signal을 주고 있습니다. 사실 지금의 Super Cycle이 가령 10년에 한 번 온 것이라면, 현재의 주가 수준이 통계학적으로 높다고 하더라도, 충분히 상승할 이유가 있다고 해석해야 하며, 3분기 영업이익 또한 역사적 최고주준인 12조라면 이 또한 희귀한 case이기 때문에 그 의미를 두어야 합니다, 물론 지금이 슈퍼사이클이 진행 중인지, 과도한 거품이 진행 중인지는 시간이 더 지나야 그 진실이 나오겠지만요. 그렇다 하더라도 이런 분석들을 통해 현재주가가 과도하게 높은 수준이구나, 여기서 더 끌고 갈지, 아니면 지금 많이 벌었으니 일부라도 팔고 갈지 등 고민을 해야 할 시점인 것은 분명합니다.


모멘텀 지표란?

모멘텀 지표는 자산의 가격 변화 속도를 측정하여 시장의 추세를 파악하고, 매매 신호를 생성하는 데 사용되는 기술적 분석 도구입니다. 주로 다음과 같은 특성을 가지고 있습니다:

모멘텀: 자산 가격의 상승 또는 하락 속도를 나타내며, 가격이 특정 방향으로 얼마나 빠르게 움직이고 있는지를 측정합니다.

모멘텀 지표는 주로 가격 변화율이나 상대 강도 지수(RSI)와 같은 방식으로 계산됩니다.

매매 신호 생성: 모멘텀 지표는 가격이 상승세에 있을 때 매수 신호를, 하락세에 있을 때 매도 신호를 제공합니다.

트레이딩 전략: 모멘텀 지표를 활용하여 단기 매매 전략을 세우거나, 장기 투자 결정을 내리는 데 사용됩니다.


시장의 위험요인

그리고 투자에는 항상 "주의할 Risk 요인"을 염두에 두어야 합니다. 가령 현재 국내주식시장의 위험요소는 다음과 같아요.

미국시장 동향: 미국 주식시장 특히 반도체 관련 주가의 강세 지속 여부를 주시해야 합니다.

환율 변동성: 달러 강세는 수출기업에 유리하지만 급격한 변동은 부담이 될 수 있습니다.

중국 시장 불확실성: 경기 둔화와 반도체 자급률 상승이 장기적으로 영향을 줄 수 있습니다.

경쟁사 추격: SK하이닉스, 마이크론 등도 HBM 생산을 확대하며 경쟁이 치열해지고 있습니다.

거품의 폭발 위함 : 미국 반도체주식이나 삼성전자등은 연일 상승을 하면서, 과연 더 올라갈까 하는 고민에 빠지게 합니다. 이를 "Bubble 현상"이라고 하는데, 거품이 폭발하면 20% 등 폭락이 이어집니다.

거품은 마지막에 매입한 투자가가 독박을 쓰는 구조라서, 초보자들의 늪이 되기도 합니다. 저는 거품 전문가로서 여러분에서 이 분야를 가장 쉽게 이해할 자료들을 준비 중입니다.


결국 공부만이 해답입니다. 그리고 인간의 투자행동을 연구하려면 인공지능도 100년은 족히 걸릴 거라고 생각을 합니다. 우리도 내가 주식을 통해서 벌고 싶은 금액이 얼마인지를 명확히 하는 것이 중요할 것 같아요. 벌기도 해야 하고, 또 스페인 가서 한 달 살면서 쓰기도 해야 하니까요.


keyword
이전 15화해외 주식 투자와 환헤지의 중요성