본문 바로가기

카테고리 없음

ChatGPT를 사용해 주가 분석 코드 작성하기

반응형

안녕하세요, Coding your life, '코딩 오페라'입니다. 오늘은 최근 이슈가 되고 있는 'ChatGPT(챗지피티)'를 사용해 원하는 종목의 주가를 불러와 분석하는 방법을 소개해드리고자 합니다. 현재 저는 '초등학생도 이해하는 ChatGPT'라는 주제로 ChatGPT사용법에 대해 포스팅을 하고 있습니다. 제목처럼 진짜 핵심 내용을 쉽게 설명하는 것을 목표로 하고 있으니 ChatGPT에 입문하고 싶은 분들은 많은 관심 부탁드립니다. 

 

ChatGPT

우선 ChatGPT에 대해 간단히 설명하자면,  OpenAI에서 개발한 인공지능 챗봇으로, 사람처럼 자연스럽게 대화할 수 있는 스마트한 어스시턴트에요. 이와 관련해 자세한 설명, 회원가입 및 사용법은 아래 포스팅에서 진행을 하였으니 읽어보시지 않으신 분들은 꼭 아래글을 먼저 읽고 와주세요!

https://codingopera.tistory.com/78

 

[초등학생도 이해하는] 챗지피티(ChatGPT) 가입부터 사용법까지

안녕하세요, Coding your life, '코딩 오페라'입니다. 오늘은 최근 이슈가 되고 있는 '챗지피티(ChatGPT)'의 가입부터 사용방법까지 소개해드리고자 합니다. 현재 저는 '초등학생도 이해하는 챗지피

codingopera.tistory.com

 

ChatGPT를 활용한 주가 분석

자 그럼 지금부터는 ChatGPT를 활용하여 주가를 분석하는 코드를 만들어 보겠습니다. 저는 ChatGPT에게

 

" 나는 주식 트레이더고, 너는 내가 고용한 개발자야. 내가 요구사항을 말하면 이에 해당하는 파이썬 코드를 제출하면 돼.

 

[요구사항]

오늘 2024년 7월 31일부터 지난 10년간 '마이크로소프트' 주식의 일봉을 크롤링하는 파이썬 코드를 만들어줘! "

 

라고 질문을 하였습니다. 여기서 ChatGPT에 대한 프롬프트 엔지니어링 기술이 들어갔는데, 다음과 같이 ChatGPT에게 역할을 부여하고, 내가 어떤 것을 ChatGPT에게 원하는지 명시해 주면 질 좋은 답변을 얻을 수 있습니다.

 

import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta

# 오늘 날짜와 10년 전 날짜 설정
end_date = datetime(2024, 7, 31)
start_date = end_date - timedelta(days=365*10)

# '마이크로소프트' 주식 데이터 다운로드
ticker = "MSFT"
msft_data = yf.download(ticker, start=start_date, end=end_date)

# 데이터 출력 (첫 5개 행)
print(msft_data.head())

# 데이터 저장 (CSV 파일로 저장)
msft_data.to_csv('MSFT_daily_data.csv')

 

그러면 ChatGPT가 다음과 같은 코드를 작성해 주었습니다. 이제 이 코드가 잘 작동하는지 알아보겠습니다. 원래 파이썬 코드를 실행하려면 많은 환경설정이 필요한데, 오늘은 이러한 설정이 필요 없는 colab을 활용하도록 하겠습니다.

 

우선 아래 colab 사이트에 들어가 줍니다. 

https://colab.google/

 

colab.google

Colab is a hosted Jupyter Notebook service that requires no setup to use and provides free access to computing resources, including GPUs and TPUs. Colab is especially well suited to machine learning, data science, and education.

colab.google

 

 

그러면 위와 같이 사이트가 나오게 되는데요, 여기서 Open Colab을 클릭하고, 새 노트를 클릭해 줍니다. 

 

 

그런 다음 ChatGPT가 작성한 코드를 붙여 넣고 실행버튼 혹은 "Shift + Enter" 버튼을 통해 코드를 실행해 줍니다. 그러면 요구사항대로 마이크로소프트의 지난 10년간 주가가 csv파일로 저장이 되었습니다.  

 

 

이제 이를 다운로드 해고 확인해 주면, 위와 같이 날짜, 시가, 고가, 저가, 종가 등 다양하게 분석되어 csv파일로 주가가 저장된 모습을 확인할 수 있습니다.

 

그런데 뭔가 아쉽습니다. 위 주가 결과를 csv파일이 아닌 그래프로 한눈에 알고 싶습니다. ChatGPT의 장점은 원하는 요구사항을 별도의 노력을 하지 않아도, 추가적으로 요구만 하면 자동으로 코드를 작성해 준다는 겁니다. 그래서 저는 다음과 같은 프롬프트를 추가해 주었습니다. 

 

"잘했어 ChatGPT. 그런데 그래프로 주가를 확인하고 싶은데, 그래프를 그려주는 파이썬 코드를 만들어줘! "

 

import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta
import matplotlib.pyplot as plt

# 오늘 날짜와 10년 전 날짜 설정
end_date = datetime(2024, 7, 31)
start_date = end_date - timedelta(days=365*10)

# '마이크로소프트' 주식 데이터 다운로드
ticker = "MSFT"
msft_data = yf.download(ticker, start=start_date, end=end_date)

# 주가 그래프 그리기
plt.figure(figsize=(14, 7))
plt.plot(msft_data['Close'], label='MSFT Close Price', color='blue')
plt.title('Microsoft (MSFT) Stock Price (2014-2024)')
plt.xlabel('Date')
plt.ylabel('Close Price (USD)')
plt.grid(True)
plt.legend()
plt.show()

 

그랬더니 ChatGPT가 위와 같은 코드를 작성해 주었습니다. 이 코드를 실행해 보면 아래와 같은 그래프가 출력됩니다. 

 

 

여기서 20, 30, 60, 90일 이동평균선을 추가하려면 어떻게 해야 될까요? 바로 ChatGPT에게 20, 30, 60, 90일 이동평균선을 추가해 달라고 요청하면 됩니다. 참 쉽죠? 저의 경우에는 다음과 같이 요구를 하였습니다. "해당 그래프의 20, 30, 60, 90일 이동평균선도 같이 알고 싶은데, 이를 그래프에 모두 그려주는 파이썬 코드를 만들어줘! " 따라서 ChatGPT가 다음과 같은 코드를 작성해 주었습니다.

import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta
import matplotlib.pyplot as plt

# 오늘 날짜와 10년 전 날짜 설정
end_date = datetime(2024, 7, 31)
start_date = end_date - timedelta(days=365*10)

# '마이크로소프트' 주식 데이터 다운로드
ticker = "MSFT"
msft_data = yf.download(ticker, start=start_date, end=end_date)

# 20일, 30일, 60일, 90일 이동평균 계산
msft_data['MA20'] = msft_data['Close'].rolling(window=20).mean()
msft_data['MA30'] = msft_data['Close'].rolling(window=30).mean()
msft_data['MA60'] = msft_data['Close'].rolling(window=60).mean()
msft_data['MA90'] = msft_data['Close'].rolling(window=90).mean()

# 주가 및 이동평균선 그래프 그리기
plt.figure(figsize=(10, 5))
plt.plot(msft_data['Close'], label='MSFT Close Price', color='blue')
plt.plot(msft_data['MA20'], label='20-Day MA', color='red', linestyle='--')
plt.plot(msft_data['MA30'], label='30-Day MA', color='green', linestyle='--')
plt.plot(msft_data['MA60'], label='60-Day MA', color='orange', linestyle='--')
plt.plot(msft_data['MA90'], label='90-Day MA', color='purple', linestyle='--')
plt.title('Microsoft (MSFT) Stock Price with Moving Averages (2014-2024)')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.grid(True)
plt.legend()
plt.show()

 

 이 코드를 실행하자 우리가 원했던 요구사항과 동일하게 아래와 같이 20, 30, 60, 90일 이동평균선도 그려지는 것을 확인할 수 있습니다. 

 

부가적으로 ChatGPT가 작성해 준 코드에 대해 원리를 알고 싶으면, 원리를 알고 싶다고 질문을 하면 됩니다. 저는 다음과 같이 질문을 하였습니다.

 

" 위 코드에 대한 원리를 코딩을 처음 하는 사람이 알아들을 정도로 자세히 설명해 줘! "

 

위와 같이 ChatGPT에게 요구할 때는 요구사항을 명확하게 전달하여야 합니다. 저의 경우에는 코딩을 처음 하는 사람도 알아들을 수 있는 수준으로 자세하게 코드 리뷰를 진행해 달라고 했는데요, 이렇게 명확하고 구체화된 프롬프트를 입력할수록, ChatGPT가 여러분이 원하는 답변을 해줍니다. 어쨌듯 다음과 같이 ChatGPT가 자세히 코드에 대해 설명해 주었습니다.

 

ChatGPT 답변

물론이죠! 코드를 처음 접하는 사람도 이해할 수 있도록 자세히 설명해 드릴게요. 이 코드에서는 마이크로소프트 주식의 일일 종가 데이터를 가져와서, 그 데이터를 시각화하고, 이동평균선을 추가하여 그래프에 함께 표시합니다.

1. 필요한 라이브러리 가져오기
python
코드 복사
import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
이 부분에서는 우리가 사용할 여러 도구(라이브러리)를 가져옵니다.

yfinance: 주식 데이터를 다운로드하는 데 사용합니다.
pandas: 데이터를 쉽게 다룰 수 있게 해줍니다.
datetime과 timedelta: 날짜를 다루는 데 필요합니다.
matplotlib.pyplot: 데이터를 시각화(그래프로 그리기)하는 데 사용합니다.
2. 날짜 설정
python
코드 복사
end_date = datetime(2024, 7, 31)
start_date = end_date - timedelta(days=365*10)
여기서는 데이터를 가져올 날짜 범위를 설정합니다.

end_date는 오늘 날짜인 2024년 7월 31일로 설정합니다.
start_date는 10년 전으로 설정합니다. timedelta(days=365*10)는 10년을 의미합니다.
3. 마이크로소프트 주식 데이터 다운로드
python
코드 복사
ticker = "MSFT"
msft_data = yf.download(ticker, start=start_date, end=end_date)
ticker는 주식 종목의 고유한 코드입니다. 여기서는 마이크로소프트의 코드인 "MSFT"를 사용합니다.
yf.download() 함수는 지정한 기간 동안의 주식 데이터를 가져옵니다. start와 end로 범위를 설정하고, 그 데이터를 msft_data라는 변수에 저장합니다.
4. 이동평균 계산
python
코드 복사
msft_data['MA20'] = msft_data['Close'].rolling(window=20).mean()
msft_data['MA30'] = msft_data['Close'].rolling(window=30).mean()
msft_data['MA60'] = msft_data['Close'].rolling(window=60).mean()
msft_data['MA90'] = msft_data['Close'].rolling(window=90).mean()
이 부분에서는 이동평균을 계산합니다.

이동평균(Moving Average): 특정 기간 동안의 평균 주가를 계산한 값입니다. 예를 들어, 20일 이동평균은 최근 20일 동안의 평균 주가를 의미합니다.
msft_data['Close']: 주식의 일일 종가(마감 가격) 데이터를 가져옵니다.
rolling(window=...): 지정한 기간 동안의 데이터를 롤링(슬라이딩)하면서 그 평균값을 계산합니다. window=20은 20일 동안의 평균을 의미합니다.
각 이동평균은 새로운 열로 추가되며, msft_data에 저장됩니다.
5. 그래프 그리기
python
코드 복사
plt.figure(figsize=(10, 5))
plt.plot(msft_data['Close'], label='MSFT Close Price', color='blue')
plt.plot(msft_data['MA20'], label='20-Day MA', color='red', linestyle='--')
plt.plot(msft_data['MA30'], label='30-Day MA', color='green', linestyle='--')
plt.plot(msft_data['MA60'], label='60-Day MA', color='orange', linestyle='--')
plt.plot(msft_data['MA90'], label='90-Day MA', color='purple', linestyle='--')
plt.title('Microsoft (MSFT) Stock Price with Moving Averages (2014-2024)')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.grid(True)
plt.legend()
plt.show()
여기서는 주가와 이동평균선을 그래프로 그립니다.

plt.figure(figsize=(10, 5)): 그래프의 크기를 설정합니다. 이 경우, 가로 10인치, 세로 5인치로 설정했습니다.
plt.plot(): 그래프에 데이터를 그립니다.
msft_data['Close']는 일일 종가 데이터를 파란색 실선으로 그립니다.
msft_data['MA20'], msft_data['MA30'], msft_data['MA60'], msft_data['MA90']는 각각의 이동평균선을 표시합니다. 이들은 각각 빨간색, 녹색, 주황색, 보라색 점선으로 표시됩니다.
plt.title(): 그래프의 제목을 설정합니다.
plt.xlabel()과 plt.ylabel(): X축과 Y축의 레이블을 설정합니다.
plt.grid(True): 그래프에 그리드(격자)를 추가하여 보기 쉽게 만듭니다.
plt.legend(): 그래프에 각 선이 무엇을 의미하는지 알려주는 범례를 추가합니다.
plt.show(): 최종적으로 그래프를 화면에 표시합니다.
요약:
이 코드는 마이크로소프트 주식의 일일 종가와 20일, 30일, 60일, 90일 이동평균선을 그래프로 그려줍니다. 이렇게 하면 시간에 따른 주식 가격의 변동과 평균적인 추세를 쉽게 파악할 수 있습니다.

이해가 잘 되셨길 바랍니다! 코딩을 배우는 과정에서 궁금한 점이 있으면 언제든지 물어보세요.

 

마지막에 전체 내용을 요약까지 해줍니다. 정말 대박이지 않나요? 제가 생각하기엔, ChatGPT는 최고의 어시스턴트입니다. 

 

자 오늘은 ChatGPT를 활용하여 코딩을 1도 몰라도 주식을 분석하는 코드를 작성해 보았는데요, 어떠셨나요? 저는 개인적으로 정말 대박이라고 생각합니다! ChatGPT로 코딩하는 내용을 정리를 하자면 다음과 같습니다.

 

정리

1. ChatGPT에게 ChatGPT의 역할과 나의 역할을 지정해 준다.

2. ChatGPT에게 명확한 요구사항을 구체적으로 지시해 준다.

3. ChatGPT와 계속 대화를 하면서, 원하는 정답에 가깝게 버전을 업데이트해준다.

 

추가적으로 제가 AI 학습 관련 오픈 카카오톡방을 만들었습니다. AI와 사용법에 목말라 있으신 분들이 라면 누구나 들어와서 즐겁게 맘껏 정보공유와 AI 공부하시면 될 것 같습니다. 링크는 다음과 같이니 꼭 한번 참석 및 홍보 부탁드리겠습니다.
https://open.kakao.com/o/ggxse9

 

인공지능/AI/코딩 공부방(코딩오페라)

인공지능/AI/코딩 공부방

open.kakao.com

 

지금 까지 'ChatGPT를 이용해 주가를 분석하는 코드'에 대해 알아보았는데, 도움이 되셨나요? 만약 되셨다면 구독 및 좋아요로 표현해 주시면 정말 감사하겠습니다. 구독과 좋아요는 제가 블로그를 운영하는 데 정말 많은 힘이 됩니다. 궁금한 사항 혹은 앞으로 다루어 주었으면 좋을 주제가 있으시면 댓글 남겨주시면 감사하겠습니다. 여러분 저는 Coding your life, '코딩 오페라'였습니다.

 

반응형