[파이썬/Python] AI 반도체 주식 분석하기!📉📈(이동평균 & 수익률)

2025. 1. 28. 10:44·Project/주식 & 비트코인 분석

요약

파이썬과 주피터 노트북을 활용해서 주가 데이터를 받아온 다음, 시각화를 통해

나스닥에 상장된 AI반도체 기업들의 주식에 대한 이동 평균, 일일 수익률, 종목 간 상관성을

가시적으로 표현해볼 것이다. 전 단계인 데이터 준비와 전처리 과정은 이전 포스팅을 참고하자.

 

 

이동평균 (Moving Averages)

보통 시계열 분석을 원래 데이터 그대로 수행하게 되면 추세가 오르락 내리락 하여

가시성이 떨어지는 경우가 많다. 물론 실제 데이터가 그렇기 때문에 그것 역시 중요하지만,

추세를 확인하고 싶을 때는 보통 이동 평균(Moving Averages)을 많이 사용한다.

계속해서 바뀌는 가격을 일정 부분 평균으로 주기적으로 뭉쳐서 데이터를 부드럽게 만든다.

ma_day = [10,20,50]
for ma in ma_day:
    for comp in comp_df:
        col_name = f'MA({ma})'
        comp[col_name] = comp['Close'].rolling(ma, min_periods=1).mean()

ma_day 코드는 "얼마나 뭉칠 것인가" 를 의미한다. 숫자를 올릴 수록 부드러움이 증가한다.

숫자와 개별 데이터프레임을 뽑은 다음, rolling 함수를 적용시켜 데이터프레임에 새로운 열을 만든다.

min_periods = 1 을 통해서 rolling 함수가 데이터를 뭉치기 위해 필요한 최소 데이터 수를 지정한다.

 

NVDA.head(2)

 

개별 데이터프레임에 뭉칠 데이터의 수를 바탕으로 이동 평균이 구분된 모습.
개별 데이터프레임에 뭉칠 데이터의 수를 바탕으로 이동 평균이 구분된 모습.

 

plt.figure(figsize = (15,6))
plt.subplots_adjust(top = 1.6, bottom = 1.55)

for i, comp in enumerate(comp_df, start=1):
    # sub-subplot of MA
    plt.subplot(2,2,i)
    comp['Close'].plot(label = 'Close', alpha = 0.7)
    comp['MA(10)'].plot(label = 'MA(10)', alpha = 0.7)
    comp['MA(20)'].plot(label = 'MA(20)', alpha = 0.7)
    comp['MA(50)'].plot(label = 'MA(50)', alpha = 0.7)
    plt.xlabel(None)
    plt.ylabel('Close($)')
    plt.title(f'Moving Averages of {comp_name[i-1]}')
    plt.legend()
plt.show()

subplot 을 통해 종가, 10,20,30개의 데이터를 뭉친 이동평균을 하나의 판에 출력해준다. 그냥 쌓으면 됨..ㅎ

그리드 중 일부. 기존 데이터와 10,20,30개의 데이터를 뭉친 이동평균이 나타나 있다.
그리드 중 일부. 기존 데이터와 10,20,30개의 데이터를 뭉친 이동평균이 나타나 있다.

 

for i, comp in enumerate(comp_df, start=0):
    comp['MA(10)'].plot(label = comp_name[i], alpha = 0.75)
    plt.xlabel(None)
    plt.ylabel('Moving Average($)')
    plt.title('Moving Average(10) of top AI semiconductor companies')
plt.legend()
plt.show()

아무래도 ma = 10이 적당한 것 같으니, 10개를 뭉친 이동평균을 회사별로 출력해보자.

회사별 이동평균 그래프. 기존의 변동성 높은 종가 데이터가 부드러워진 모습이다.
회사별 이동평균 그래프. 기존의 변동성 높은 종가 데이터가 부드러워진 모습이다.

 

그래프를 보니, 2024년 AI반도체 기업 중 AMD를 제외하면
같은 증감을 띄었다는 사실!

일일 수익률 (Daily Return)

일일 수익률(Daily Return)은 오늘 종가 기준으로 어제 대비 얼마나 올랐거나 떨어졌는지를

퍼센트로 보여주는 수치이다. 내가 가진 주식의 가치 변화율을 나타내기에, 수익률이라고 부를 수 있다.

 

for comp in comp_df:
    comp['Daily Return'] = comp['Close'].pct_change()

 

종가에 대해 pct.change를 수행해주면, 전 데이터와 현 데이터를 비교한 증가율을 반환한다.
종가에 대해 pct.change를 수행해주면, 전 데이터와 현 데이터를 비교한 증가율을 반환한다.

 

plt.figure(figsize = (15,6))
plt.subplots_adjust(top = 1.6, bottom = 1.55)

def return_plot(left_limit):
    for i, comp in enumerate(comp_df, start=1):
        comp = comp.iloc[left_limit:,:]
        plt.subplot(2,2,i)
        comp['Daily Return'].plot(color = '#4862d9', ls = ':', marker = 'o')
        plt.xlabel(None)
        plt.ylabel('Daily Return')
        plt.title(f'Daily Return of {comp_name[i-1]}')
    plt.show()

return_plot(233)

수익률은 매우 변동성이 크다. 주식이란 것이 결국엔 증감이 반복하는 성격의 것이기에..

그래서 1년치 데이터 전부를 쓰기보다, 함수로 데이터의 범위를 조절하는 방식으로 진행했다.

엔비디아의 시간에 따른 일일 수익률 그래프.
엔비디아의 시간에 따른 일일 수익률 그래프.
퀄컴의 시간에 따른 일일 수익률 그래프.
퀄컴의 시간에 따른 일일 수익률 그래프.
AMD의 시간에 따른 일일 수익률 그래프.
AMD의 시간에 따른 일일 수익률 그래프.
브로드컴의 시간에 따른 일일 수익률 그래프.
브로드컴의 시간에 따른 일일 수익률 그래프.

 

그나마 수익률의 안정성을 보여왔던 엔비디아와 브로드컴!
엔비디아는 1월 중후반 수익률 하락 추세.

plt.figure(figsize = (15,6))
col = ['red','orange','green','blue']

for i, comp in enumerate(comp_df, start=1):
    plt.subplot(2,2,i)
    comp['Daily Return'].hist(bins = 40, color = col[i-1])
    plt.xlabel(None)
    plt.ylabel('Daily Return')
    plt.title(f'Daily Return of {comp_name[i-1]}')
plt.show()

수익률을 히스토그램을 통해 분포까지 확인해주자.

4개 종목의 일일 수익률 분포를 표현한 히스토그램.
4개 종목의 일일 수익률 분포를 표현한 히스토그램.

 

관련 포스팅

https://skrrdevlog.tistory.com/entry/파이썬Python-나스닥-AI-반도체-주요-기업들-주가-분석하기📉📈1

 

[파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편)

개요이전 3개의 포스팅에서 연달아 엔비디아의 주식을 간단하게 분석해 보았다. 하지만 조금 더 깊고 넓게, 엔비디아가 포함된 한 산업군의 주가를 분석하는 것도 재미있을 것 같았다.흥미로운

skrrdevlog.tistory.com

https://skrrdevlog.tistory.com/entry/파이썬-야후-주식API와-파이썬으로-엔비디아-주가분석-전처리스케일링-편

 

[파이썬] 야후 주식API와 파이썬으로 엔비디아 주가분석 (전처리/스케일링 편)

개요데이터분석에 대한 기본 개념과 파이썬이라는 언어에 익숙해졌다면, 여러 종류의 데이터를 가지고 연습을 해봐야실력이 늘기 마련이다. 여러 도메인 (경제, 사회, 자연어, 정치 등) 에 대한

skrrdevlog.tistory.com

 

'Project > 주식 & 비트코인 분석' 카테고리의 다른 글

[파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편)  (10) 2025.01.25
[파이썬] 엔비디아 주식 예측 머신러닝 모델 만들고 평가까지 (최종)  (11) 2025.01.23
[파이썬] 엔비디아 주식 분포 & 추세 분석하기 (시각화 편)  (16) 2025.01.21
[파이썬] 야후 주식API와 파이썬으로 엔비디아 주가분석 (전처리/스케일링 편)  (2) 2025.01.19
'Project/주식 & 비트코인 분석' 카테고리의 다른 글
  • [파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편)
  • [파이썬] 엔비디아 주식 예측 머신러닝 모델 만들고 평가까지 (최종)
  • [파이썬] 엔비디아 주식 분포 & 추세 분석하기 (시각화 편)
  • [파이썬] 야후 주식API와 파이썬으로 엔비디아 주가분석 (전처리/스케일링 편)
흑석동사는시골쥐
흑석동사는시골쥐
문과 경영학도 숫자 배우기 프로젝트
  • 흑석동사는시골쥐
    NaN
    흑석동사는시골쥐
  • 전체
    오늘
    어제
  • 링크

    • 독서 일지
    • 올리고 싶은 거 올려요
    • 분류 전체보기 (75)
      • Coding & Data Analysis (52)
        • Python (23)
        • R (21)
        • Excel & Data (2)
        • Git & Github (4)
        • Certificate (2)
      • Project (15)
        • 일자리 스크래핑 서비스 (8)
        • 최적의 인스타 피드 (2)
        • 주식 & 비트코인 분석 (5)
      • Economics (1)
        • 경제기사 스크랩 (1)
      • Records & Thoughts (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    웹스크래퍼
    시각화
    데이터분석
    파이썬
    심장병 데이터
    전처리
    동아리
    데이터
    r
    머신러닝
    Colab
    주가분석
    matplotlib
    ADSP
    자격증
    코랩
    엔비디아
    Python
    데이터수집
    AI반도체
    프로그래밍
    지도
    FLASK
    개발
    기초
    adsp공부법
    주식
    git
    다항회귀
    비전공자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
흑석동사는시골쥐
[파이썬/Python] AI 반도체 주식 분석하기!📉📈(이동평균 & 수익률)
상단으로

티스토리툴바