집에서 하는 공부/빅데이터+인공지능

[ChatGPT]Python을 이용한 주식 추천 시스템 개발

집돌이 공대남 2023. 3. 8. 09:00
반응형

공대남이다.

오늘은 ChatGPT에게 PER, PBR이 낮은 주식을 추천해달라고 해볼 생각이다.

하지만 돌아온 대답은 

한마디로 못해주겠다 이런 말이다. 

그럼 이걸 프로그램을 만들어서 한 번 시도해보도록 하겠다. 

제일 처음 우리의 ChatGPT에게 교육을 시켰더니 굉장히 오류를 많이 뱉어냈다.

크롤링을 하는 도중 html에 table 이름이랑 td값을 자꾸 잘못가지고 오는것이다.

정말 하루종일  교육을 시키고, 또 직접 공대남이 html 구조를 봐가면서 고친 코드이다.

어떻게 보면 직접 짜는게 빠를 수도 있다고 생각했으나 교육 시켜놓은 ChatGPT를 보아하니 노력한 만큼 굉장한 결과를 나타내어 고생이 헛된게 아니라는것을 느끼게 해준다.

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://finance.naver.com/sise/'
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')

stock_info = soup.select_one('#popularItemList')
stock_list = stock_info.select('li')

data = []

for stock in stock_list:
    stock_name = stock.select_one('a').text
    stock_code = stock.select_one('a')['href'].split('=')[1]
    
    stock_url = f'https://finance.naver.com/item/main.naver?code={stock_code}'
    res = requests.get(stock_url)
    soup = BeautifulSoup(res.content, 'html.parser')
    finance_info = soup.select('.per_table > tbody')[0]

    f2 = soup.select_one('.per_table')

    if finance_info:
      per = finance_info.select_one('#_per').text
    else:
      per = 'N/A'

    if finance_info:
      pbr = f2.select_one('#_pbr').text
    else:
      pbr = 'N/A'
    
    data.append([stock_name, stock_code, per, pbr])

df = pd.DataFrame(data, columns=['종목명', '종목코드', 'PER', 'PBR'])
df['PER'] = df['PER'].str.replace(',', '').astype(float)
df['PBR'] = df['PBR'].str.replace(',', '').astype(float)

# PER과 PBR이 낮을수록 추천 종목이라고 가정하고 점수 계산
df['점수'] = df['PER'].rank(ascending=True) + df['PBR'].rank(ascending=True)
df = df.sort_values('점수').iloc[:10, :]

print(df[['종목명', '종목코드', 'PER', 'PBR', '점수']])

이 코드로 CoLAB에 가서 실행을 해보니 약 29초 정도 걸려서 결과를 도출했다.

점수가 낮을 수록 가치가 저평가되었다는 주식으로 판별하여 10개 정도 추천한 프로그램이다. 

왼쪽에 숫자는 등수가 아니라 이 데이터의 원본은 네이버 증권에 인기 탑 10을 기준으로 한 데이터이다.

그래서 굉장히 빨리 나오는거 같은데 전체 데이터를 돌려 보면 좀 느리게 나올거 같다.

 

오늘은 ChatGPT에게 교육 시킨 PBR, PER 수치가 낮은 주식을 점수로 환산해 10개 추천하는 프로그램을 교육시켜보았다. 

사실 초반에는 공대남이 다 한거지만 나중에는 서로 상호작용을 하며 코딩을 하는 느낌이 들 정도로 빠른 습득력을 가지고 있다. (소름)

주식에 대해서 본인만의 알고리즘이 있다면 이렇게 개발하여 주식 투자에 도움이 되었으면 하는 바람이다. 

 

 

반응형