주식투자 자동화 프로그램 개발 -1 파이썬 개발환경 구축하기 (tistory.com)
주식투자 자동화 프로그램 개발 -1 파이썬 개발환경 구축하기
주식에 관심이 많은 지인과 함께 아이디어를 제공받아 주식투자 자동화 프로그램 개발을 시작했다.파이썬으로 개발하였고 유튜브를 참고하여 기본토대를 제작하였다. 먼저 파이썬 개발환경
ths3723123.tistory.com
지난시간 프로그램 환경구축까지 진행하였고 그후 기능을 조금더 추가하였다.
먼저
- 데이터 수집 및 전처리:
- 주가 데이터, 재무제표 데이터, 뉴스 데이터 등 다각적인 데이터를 수집하여 분석에 활용할 수 있도록 준비
- 특성(Feature) 선택 및 엔지니어링:
- 주가 데이터 외에도, 거래량, 변동성, 이동 평균 등의 다양한 특성을 고려하여 모델을 구축
- 모델 선택 및 학습:
- 딥러닝 모델: LSTM, GRU 등을 활용하여 주가 예측 모델을 구축
- 강화 학습: 주식 매매를 강화 학습을 통해 학습시켜, 매수/매도 결정
이렇게 순서대로 진행할예정이다.
1번 데이터 수집하기 나는 주식을 기사에서 가지고 올예정다.
아래의 코드를 적용하여 기사를 가지고올수 있고 이것이 긍정적인지, 부정적인지, 평범한지에 대한 감정평가 기능을 추가하였다.
import requests
from bs4 import BeautifulSoup
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import nltk
from rake_nltk import Rake
# NLTK 데이터 다운로드 (한 번만 실행하면 됨)
nltk.download('vader_lexicon')
nltk.download('stopwords')
nltk.download('punkt') # 추가된 부분
def get_naver_finance_news():
url = "https://finance.naver.com/news/mainnews.naver"
response = requests.get(url)
if not response.ok:
print("Failed to fetch data")
return []
soup = BeautifulSoup(response.text, 'html.parser')
articles = []
for item in soup.select('dd.articleSubject a'):
title = item.get_text().strip()
link = "https://finance.naver.com/" + item['href']
articles.append({'title': title, 'url': link})
return articles
def analyze_sentiment(text):
analyzer = SentimentIntensityAnalyzer()
sentiment = analyzer.polarity_scores(text)
return sentiment
def extract_keywords(text):
r = Rake()
r.extract_keywords_from_text(text)
return r.get_ranked_phrases()
if __name__ == '__main__':
# 네이버 금융 뉴스 데이터 가져오기
news = get_naver_finance_news()
for idx, article in enumerate(news, start=1):
title = article['title']
url = article['url']
sentiment = analyze_sentiment(title)
keywords = extract_keywords(title)
print(f"{idx}: {title} - {url}")
print(f"Sentiment: {sentiment}")
print(f"Keywords: {keywords}")
# 전체 뉴스의 평균 감성 점수 계산
positive_count = 0
negative_count = 0
neutral_count = 0
for article in news:
sentiment = analyze_sentiment(article['title'])
if sentiment['compound'] >= 0.05:
positive_count += 1
elif sentiment['compound'] <= -0.05:
negative_count += 1
else:
neutral_count += 1
total = positive_count + negative_count + neutral_count
print("\nSummary:")
print(f"Positive news: {positive_count} ({positive_count/total*100:.2f}%)")
print(f"Negative news: {negative_count} ({negative_count/total*100:.2f}%)")
print(f"Neutral news: {neutral_count} ({neutral_count/total*100:.2f}%)")

뉴스를 잘 가지고 오는 결과가 나온다.
그후 감정평가 기능이 너무 부실하다고 느껴 기사의 긍정적, 부정적 단어 갯수를 새어 판단하도록 기능을 업그레이드 하려했다. 또 한국어를 잘 인식못할수 있어 추가적 설치를 하려고 했다.
아래의 사이트에 들어가서
Microsoft C++ Build Tools - Visual Studio
Microsoft C++ Build Tools - Visual Studio
visualstudio.microsoft.com
build tool 설치 > 설치할 때 C++ Build Tools, MSVC v142 - VS 2019 C++ x64/x86 용 v14.28 도구 집합를 선택 다운로드후 재부팅이 필요하다.

C:\stockauto>pip install konlpy
Collecting konlpy
Using cached konlpy-0.6.0-py2.py3-none-any.whl.metadata (1.9 kB)
Requirement already satisfied: JPype1>=0.7.0 in c:\python38-32\lib\site-packages (from konlpy) (1.5.0)
Collecting lxml>=4.1.0 (from konlpy)
Using cached lxml-5.2.2-cp38-cp38-win32.whl.metadata (3.5 kB)
Requirement already satisfied: numpy>=1.6 in c:\python38-32\lib\site-packages (from konlpy) (1.24.4)
Requirement already satisfied: packaging in c:\python38-32\lib\site-packages (from JPype1>=0.7.0->konlpy) (24.0)
Using cached konlpy-0.6.0-py2.py3-none-any.whl (19.4 MB)
Using cached lxml-5.2.2-cp38-cp38-win32.whl (3.5 MB)
Installing collected packages: lxml, konlpy
Successfully installed konlpy-0.6.0 lxml-5.2.2
이제 konlpy가 정상적으로 설치된다!
'python' 카테고리의 다른 글
vscode- 파이썬 개발환경 구축하기 (0) | 2023.01.05 |
---|