cs

Intro.

트럼프에 일론 머스크라..

미친 조합이다. 

여러모로 미친거지 뭐.

미쳤어 그냥.. 미치게 될거야. 

예측 더 어려워지겠어

트럼프보다 머스크가 승자라고 생각한다..


지난번에 S&P500주가를 모아봤다. 

https://simbbo-blog.tistory.com/239

 

[Python_stock] S&P 500 주가 데이터 수집

Intro. 드디어 이제야 정상적인 글을 쓴다.역시 스터디 해야 공부하지.혼자는 안대안대... 이번 주제는 주식이니 만큼 최대한 힘내보자.자, 다시 돌아와라... 블로그의 본질 S&P 500 주가 데이터 수

simbbo-blog.tistory.com

 

주식.

투자를 해봐야지?

그럼 투자하려면 뭐해야해? 

투자지표보고 공부도하고 주식 어떻게 돌아가는지 시장도 파악하고 시황 다 공부해야지.

그치만 우리 데이터쟁이들 뭐해?

지표 뽑고 분석하고, 예측 해볼 수 있잖아. 

해보자 이거다요. 

 

파이썬으로 해볼수있는 주가 예측 방법 3가지 정도를 설명해보려고 한다. 

당연하게도 뭐가 좋고 뭐가 맞는지는 답할 수 없다. 

그럼 왜 하느냐?

재밌잖아. 


1. 기술적 분석 (Technical Analysis)

정의:

기술적 분석은 과거의 주가 데이터(종가, 거래량 등)와 이를 기반으로 계산된 기술적 지표를 사용하여 미래의 가격 변동을 예측하는 방법이다.

개인적으로 가장 좋아하고? 선호하는 방식이기도 하고,

차트 패턴과 지표를 활용하여 매수/매도 신호를 포착하는 방법이라 매력적이다. 

 

수십, 수백개의 기술적 지표들이 있지만, 그나마 좀 간단하고 익숙한 친구들 몇개 뽑아보자.

대표적인 기법:

  • 이동평균선 (Moving Averages):
    • 단기 이동평균과 장기 이동평균의 교차를 통해 매수/매도 신호를 생성
    • 예: Golden Cross (단기 > 장기) → 매수 신호, Death Cross (단기 < 장기) → 매도 신호
  • RSI (Relative Strength Index):
    • 주가가 과매수 상태인지(70 이상) 또는 과매도 상태인지(30 이하)를 판단
  • MACD (Moving Average Convergence Divergence):
    • EMA(지수 이동평균)의 차이를 활용해 추세 강도를 파악

 

이런 기법들이 당연히 생소할 수 있지만, 각자의 주식창을 잘 봐보자. 여러 수십개의 기법이 모두 벌써 반영되어있고 차트를 그릴수 있다. 

알파스퀘어 돈좀 벌려고하나... 구독을하게하다니 ㅠㅠ

 

이런식으로 기술적인 지표를 차트와 함께 그려 매수/매도 타이밍을 잡는방법이다.


2. 기계 학습 (Machine Learning)

정의:

과거 데이터를 학습하여 미래의 주가를 예측하는 방법이고

지도 학습 및 딥러닝 모델을 사용하며, 복잡한 패턴을 찾아낼수도 있따.

 

데이터쟁이들이 모두 알고 좋아하고 싫어하고 사랑하고 증오하는 ML이다.

주요 기법:

  • 지도 학습 (Supervised Learning):
    • 특징(이동평균선, 거래량 등)을 입력으로 사용하여 회귀 및 분류 모델로 미래 주가를 예측.
    • 모델 예: Random Forest, XGBoost.
  • 딥러닝 (Deep Learning):
    • LSTM과 같은 순환 신경망(RNN)을 사용하여 시계열 데이터를 학습.
  • Random Forest를 이용한 주가 예측
    • Random Forest는 다양한 특징(feature)을 기반으로 주가를 예측하는 데 효과적인 모델
    • 과거의 데이터를 학습하여 미래의 특정 날짜의 종가를 예측하는 회귀(regression) 문제로 접근 가능

 

뭐 더 어렵고 복잡한 친구들 많지만,, 하나만 예로 들자면

예제 설명:

  1. 데이터 준비:
    • 과거의 주가 데이터를 가져와 이동평균선(SMA), 거래량(Volume), 변동성(Volatility) 등을 생성하여 특징으로 사용.
    • 예측하려는 종가는 목표 변수(target)로 설정.
  2. 모델 학습:
    • Random Forest 회귀 모델을 사용해 데이터 학습.
  3. 미래 값 예측:
    • 학습된 모델로 특정 날짜의 종가를 예측.

이런 느낌이겠다..

간략하게 좀 파이썬 코드 예시도 함께 봐볼까?

import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np

# 데이터 로드 및 전처리
df = pd.read_csv("stock_data.csv", parse_dates=["Date"], index_col="Date")
df['SMA_10'] = df['Close'].rolling(window=10).mean()
df['SMA_50'] = df['Close'].rolling(window=50).mean()
df['Volatility'] = df['Close'].rolling(window=10).std()
df.dropna(inplace=True)

# 특징(feature) 및 목표(target) 정의
features = df[['SMA_10', 'SMA_50', 'Volatility', 'Volume']]
target = df['Close']

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 모델 학습
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 예측
predictions = model.predict(X_test)

# 성능 평가
mse = mean_squared_error(y_test, predictions)
print(f"Mean Squared Error: {mse}")

# 시각화
import matplotlib.pyplot as plt
plt.plot(y_test.values, label='Actual Prices')
plt.plot(predictions, label='Predicted Prices', alpha=0.7)
plt.legend()
plt.title('Actual vs Predicted Stock Prices')
plt.show()

 


3. 시계열 분석 (Time Series Analysis)

정의:

시계열 분석은 데이터의 시간 의존성을 기반으로 미래 값을 예측하고, 계절성, 추세, 노이즈를 분리하여 분석하는 방법이다.

통계 조금 해본 친구들은 싫어하는 시계열분석.

 

예시: ARIMA 모델을 이용한 주가 예측

ARIMA(Autoregressive Integrated Moving Average)는 시계열 데이터의 자기상관성을 이용해 미래를 예측하는 통계적 방법이고, 주로 주가 데이터의 추세(Trend)계절성(Seasonality)을 기반으로 예측한다. 

 

예제 설명:

  1. 데이터 준비:
    • 주가 데이터에서 날짜를 기준으로 정렬하고, 데이터를 차분(differencing)하여 정상성(stationarity)을 확보.
  2. 모델 학습:
    • ARIMA 모델의 파라미터 (p, d, q)를 설정.
      • p: 자기회귀(AR) 항수
      • d: 차분 횟수
      • q: 이동평균(MA) 항수
  3. 미래 값 예측:
    • 학습된 모델을 사용해 미래 특정 기간의 주가를 예측.

예시코드도 대충 해보면..

from statsmodels.tsa.arima.model import ARIMA
import pandas as pd
import matplotlib.pyplot as plt

# 데이터 로드
df = pd.read_csv("stock_data.csv", parse_dates=["Date"], index_col="Date")
df = df['Close']

# 데이터 차분으로 정상성 확보
df_diff = df.diff().dropna()

# ARIMA 모델 생성 및 학습
model = ARIMA(df_diff, order=(5, 1, 0))  # (p, d, q) 설정
model_fit = model.fit()

# 미래 값 예측
forecast = model_fit.forecast(steps=30)  # 30일 예측

# 결과 시각화
plt.figure(figsize=(12, 6))
plt.plot(df, label='Actual Data')
plt.plot(pd.date_range(df.index[-1], periods=30, freq='B'), forecast, label='Forecast', color='red')
plt.legend()
plt.title('ARIMA Stock Price Prediction')
plt.show()

어우 나도 오랜만에 보려니까 머리가아파..


SUMMARY

그럼 세가지 방식을 좀 간략히 정리 비교해볼까?

 

기술적 분석, 시계열 분석, 머신러닝 비교

기준 기술적 분석 (Technical Analysis) 기계 학습 (Machine Learning) 시계열 분석 (Time Series Analysis)
데이터 활용 과거의 주가와 거래량 데이터를 기반으로 기술적 지표 생성 과거 데이터와 외부 요인(특징)을 활용해 학습 순수하게 과거 시계열 데이터만 사용
특징 (Features) 이동평균선, RSI, MACD 등 다양한 지표 다양한 입력 데이터(특징)를 모델에 추가 가능 시계열 데이터 자체가 모델 입력
복잡성 상대적으로 단순한 계산과 시각화 데이터 준비와 모델 설계, 하이퍼파라미터 튜닝이 필요 정상성 확보와 적절한 파라미터 설정이 필요
추세와 패턴 과거 패턴에 기반한 매수/매도 신호 생성 과거와 현재 데이터를 학습해 복잡한 비선형 관계를 모델링 시계열 데이터의 추세와 계절성을 기반으로 미래를 예측
설명 가능성 매수/매도 신호가 직관적이고 명확 복잡한 알고리즘으로 인해 결과 해석이 어려움 추세와 패턴의 명확한 설명 가능
적용 범위 단기 트레이딩 및 매수/매도 타이밍 탐색 중장기 예측, 복잡한 데이터셋 단기 또는 계절성이 뚜렷한 데이터를 다룰 때 적합
확장성 새로운 지표 추가 가능 외부 데이터와 결합 가능, 다양한 알고리즘 사용 가능 시계열 데이터에만 제한적으로 적용 가능

 

기술적 분석, 시계열 분석, 머신러닝 요약

방식 장점 단점 적합한 사용 사례
기술적 분석 간단하고 직관적, 구현 용이 외부 요인 반영 어려움, 장기 예측에 부적합 단기 트레이딩, 매수/매도 신호 탐색
기계 학습 복잡한 데이터 패턴 학습 가능, 외부 요인 통합 가능 데이터 준비 복잡, 모델 해석 어려움 중장기 예측, 복잡한 데이터셋 분석
시계열 분석 계절성과 추세 설명 가능, 단기 예측에 강점 외부 요인 반영 어려움, 데이터 전처리 필요 단기 예측, 계절성이 뚜렷한 데이터 분석

 

 

주식인생 5년밖에 되지 않았지만, 살면서 시계열로만 주가 예측한다는건 들어보지 못했다. 

 

기술적인 지표를 최대한 활용하는 방식과 ML를 적절히 믹스 시켜서 예측하고 매수/매도타이밍을 잡거나 

 

미래 주가를 예측을 하고, 여기에 추가로 시계열 분석을 약간 적절히 짬뽕을 시키면 모를까...

 

 

예를들어보면... 

 

기술적 분석 + 기계 학습

기술적 지표를 계산한 후 이를 기계 학습 모델의 입력 변수로 사용하게끔해보자

  1. 기술적 분석 단계에서 이동평균선(SMA), RSI, MACD, 볼린저 밴드 등 지표 생성하고
  2. 생성된 기술적 지표를 기계 학습 모델의 입력 변수로 사용.
  3. 기계 학습 알고리즘(e.g., Random Forest, XGBoost)을 통해 주가 상승/하락 여부 또는 종가를 예측 할 수 도 있겠다.. (괜찮은데?)

 

기술적 분석 + 시계열 분석 + 기계 학습

모든 방법을 결합하여 단기와 장기 패턴을 함께 분석할수도 있겠지,

  1. 기술적 분석:
    • 이동평균선, MACD 등 기술적 지표 생성.
  2. 시계열 분석:
    • ARIMA 또는 Prophet으로 기본 추세와 계절성을 모델링.
  3. 기계 학습:
    • 기술적 지표와 시계열 예측 결과를 기계 학습 모델의 입력 변수로 사용해 더 정교한 예측.

 

이런식으로 세가지 방식을 모두활용하는 방식도 만들어 볼 수 있겠다. 

 

그럼 이런 하이브리드 방식의 장단점도 있을건데...

장점 단점
기술적 분석의 단기 패턴, 시계열 분석의 계절성, 기계 학습의 비선형성 결합 복잡한 데이터 전처리와 모델 설계 필요
다양한 데이터를 활용해 높은 예측 정확도 달성 가능 계산 비용과 실행 시간 증가
새로운 데이터나 요인 추가 시 유연하게 확장 가능 과적합(overfitting) 위험

 

이정도로 생각해보면 되지 않을까?

 


옛날이 그립다.. 회사 힘들어도 이런게 힘이되고 도움이 되고 했는데, 주식과 이런거에 미쳐살떄가 있었는데,,

 

GS님 잘 지내시죠.. 담주에 봐요 ㅠ

 

+ Recent posts