레이블이 VIBE CODIGN인 게시물을 표시합니다. 모든 게시물 표시
레이블이 VIBE CODIGN인 게시물을 표시합니다. 모든 게시물 표시

화요일, 11월 04, 2025

LLM을 이용한 환율, 지수, 주가 비교 사이트 제작기 (2)

기존에 사용하던 sqlite3 기반으로는 매주 없데이트 하는데 시간이 오래 걸려서 mongodb로 한번 변경해보는 작업을 진행하였는데 만족스러웠습니다. 

※ mongodb가 상장되어 있는지도 몰랐는데 이번 Dan ives의 ETF(IVES, IVE아닙니다. 물론 IVE도 있고 IVE도 있습니다.)에 mongodb(MDB)가 포함되어 있어 간만에 다시 mongodb를 사용해보기로 하여 아래와 같이 환율, 지수, 주가 정보를 업데이트하는 코드를 수정해 보았습니다.


첫번째 수정작업(Gemini)

(기존에 sqlite3로 사용하던 스크립트 업로드) 첨부한 파일은 기존에 sqlite3를에 테이블을 생성해서 파이썬으로 야후 파이낸스에서 각 ticker 정보를 검색해서 sqlite3로 저장하는 스크립트들 입니다.
환율과 지수, 한국주식, 미국주식 정보를 가져와서 sqlite3 테이블에 저장하는 것입니다.
나는 이 스크립트를 mongodb와 python을 사용해서 작동하도록 하고 싶습니다.
몽고디비는 내 컴퓨터에 설치하였습니다.
첨부한 파일의 스크립트를 참고하여 데이터베이스와 table을 생성하는 코드를 작성해줘 그리고 두번째로는 설치한 몽고DB(mongodb://localhost:27017)에 ticker를 업데이트하는 파이썬 코드를 작성해줘.
현재는 sqlite3에서 table lock로 한번에 한개의 정보만 다운로드 받아 insert하도록 되어있습니다. 환율,야후파이낸스에서 지수,한국주식,미국주식정보를 빠르게 받을 수 있도록 개선된 파이썬 코드를 작성해줘.
python 3.12 버전, yfinance 0.2.61 기준으로 코드를 작성해줘


아쉽게도 기존에 LLM으로는 해결하지 못했던 Session 문제가 그대로 노출되어서 아래와 같이 기존에 문제없이 사용하는 Session 코드를 그대로 보여주고 참고하라고 해서 다행이 잘 해결되었네요

두번째 수정작업(chatGPT)

(생성한 파일 중 update.py파일을 업로드)오류가 발생하여 정상적으로 db에 정보가 쌓이지 않고 있습니다. 문제가 있는 부분을 확인해서 수정해줘.

그리고
# 세션 생성 및 User-Agent 설정 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'} session = requests.Session(impersonate="chrome", headers=headers, verify=False)
이 코드를 참고해서 세션 연결을 ticker 다운로드 할 떄마가 하는것이 아니라 스크립트 시작시 세션을 연결하고 모든 작업이 끝나면 세션을 닫으세요


chatGPT가 확인해준 원인들 
(일부 원인이 될 수 있지만 정확하게 해결해주지는 못하더라구요) 

구분 원인 설명
1 requests.Session()yfinance.download()의 호환성 문제 yfinance.download()requests가 아닌 yfinance.shared._session 기반으로 동작합니다. curl_cffi.requests.Session을 전달하면 TypeError 또는 AttributeError가 발생할 수 있습니다.
2 ❌ MongoDB date 필드 처리 오류 datetime.date 객체는 PyMongo가 BSON 변환 시 오류를 일으킬 수 있습니다. datetime.datetime 객체로 저장해야 합니다.
3 latest_dates 집계 시 strftime() 호출 오류 doc['max_date']datetime이 아닌 str로 들어오는 경우 .strftime() 호출 시 AttributeError 발생 가능성이 있습니다.
4 ⚠️ 중복 삽입 방지 미비 insert_many()를 단순 실행하면 중복 데이터가 계속 쌓이거나 오류로 중단될 수 있습니다.
5 ⚠️ 병렬 실행 시 세션 공유 문제 ThreadPoolExecutor 내부에서 yfinance.download() 호출 시 세션/캐시 충돌 가능성이 있습니다.
6 ⚠️ 한국 주식 Ticker 일부 .KQ 종목이 오류 발생 코스닥 종목이 .KS로 지정되어 다운로드 실패 가능성 있습니다.



그래서 아래와 같이 정상 적동하는 2개의 스크립트를 얻게 되었습니다. 

01.mongodb_setup.py

02.mongodb_update.py

다음에는 국내 부동산시세 정보도 알아서 모아올 수 있는 방법이 있는지 확인해보도록 하겠습니다. 물론 다른 서비스들이 있는것으로 봐서는 방법이 없지는 않겠지만 저는 실시간까지는 필요없으니 평이한 방법으로 시도해보도록 하겠습니다. :)



출처: @ye._.vely618


월요일, 10월 27, 2025

LLM을 이용한 환율, 지수, 주가 비교 사이트 제작기 (1)

오늘은 머리속으로만 생각해오던 Vibe coding 작업을 한번 해본 것 한번 끄적끄적 적어 올립니다.

이번 작업은 아마 좀 그럴듯해지는 결과물이 나올때 까지 시리즈로 올릴 계획입니다.

첫번째로 올리는게 LLM을 활용하고 AI를 도입한 무슨 무슨 유전체 분석 파이프라인이면 좋았을 수 도 있겠지만 자본주의 시장에서 Cash is King이니 환율, 주식, 지수를 한눈에 볼 수 있도록 하는 그럴듯한 차트를 만들어보는 것을 첫번째 주제로 잡아보았습니다.

당연히 제가 수정할 수 있도록 python, flask를 사용해서 작업해달라고 하고 있습니다.

지금은 chatGPT와 gemini에게 만들어달라고 해보고 있는데 grok와 perplexity를 이용할 예정입니다.

작성된 코드는 업데이트하여 계속 아래 제 github에 commit하도록 하겠습니다. :)

github: dashboard_poc


chatGPT에게 요청

나는 환율가격정보와 여러국가의 증권시장 지수 정보, 한국에 상장되어 있는 상장사들의 주가정보, 미국에 상장되어 있는 상장사들의 주가정보를 일자별로 개시가, 종가, 고가, 저가, 거래량 정보를 가지고 있습니다. 나는 이 정보들을 실시간으로 특정 기간 동안 또는 확인 할 수 있는 전체 기간 동안 비교 하고 싶어. 예를 들어 달라/원 환율정보, 한국의 삼성전자 주가, 미국의 나스닥 지수를 한국의 코스피 지수를 한 화면에 비교하면서 보고 싶어 환율가격정보와 여러국가의 증권시장 지수 정보, 한국에 상장되어 있는 상장사들의 주가정보, 미국에 상장되어 있는 상장사들의 주가정보들은 각각 sqlite3 데이터베이스 파일로 저장되어 있어.
환율가격정보는 finance_currency.db 파일에 currency라는 테이블에
symbol TEXT,
date DATE, open REAL,
high REAL,
low REAL,
close REAL,
volume INTEGER,
dividends REAL,
stock_splits TEXT 구조로 되어 있어. 
여러국가의 증권시장 지수 정보는 finance_index.db 파일에 stocks라는 테이블에, 한국에 상장되어 있는 상장사들의 주가정보는 finance_stock_kr.db파일에 stocks라는 테이블에, 미국에 상장되어 있는 상장사들의 주가정보는 finance_stock.db 파일에 stocks라는 테이블에 stocks라는 테이블에 저장되어 있습니다. 
stocks 테이블은 
symbol TEXT,
date DATE, open REAL,
high REAL,
low REAL,
close REAL,
volume INTEGER,
dividends REAL,
stock_splits TEXT 구조로 되어 있어. 
나는 Python 3.12 기준으로 FLASK를 사용해서 데이터베이스에 있는 환율가격정보와 여러국가의 증권시장 지수 정보, 한국에 상장되어 있는 상장사들의 주가정보, 미국에 상장되어 있는 상장사들의 주가정보들을 실시간으로 확인할 수 있는 웹페이지를 개발해줘.




gemini에게 요청
1. 환율, 인덱스지수, 한국주식종목, 미국주식종목은 각 데이터베이스에서 로딩하여 항목들을 보여주면 좋겠습니다. flask를 시작할 때 환율, 인덱스지수, 한국주식종목, 미국주식종목 의 데이터베이스에서 symbol 항목들을 먼저 불어와서 선택시 지연이 생기지 않으면 합니다.

2. 화면에서 환율, 인덱스지수, 한국주식종목, 미국주식종목 을 선택하는 하는 방법은 드랍다운 메뉴를 통해서 환율, 인덱스지수, 한국주식종목, 미국주식종목 을 선택 할 수 있으면 좋겠습니다. 동일한 화면에서 여러개의 항목을 보여주어야합니다. 추가할 때는 "추가"버튼 또는 "+" 아이콘을 클릭하면 추가 할 수 있으면 좋겠습니다. 그리고 추가한 항목을 삭제할 떄는 "-" 버튼을 클릭하여 항목을 언제나 추가, 삭제할 수 있어 사용자가 편리하게 환율, 인덱스지수, 한국주식종목, 미국주식종목의 항목을 조회할 수 있으면 좋겠습니다.

3. 환율, 인덱스지수, 한국주식종목, 미국주식종목 등 한 chart화면에 다양한 단위의 정보를 부여줘야합니다. Y축의 척도를 환율, 인덱스지수, 한국주식종목, 미국주식종목등 선택한 항목에 따라 동적(dynamic)으로 단위를 자동으로 확인하여 표시해주면 좋겠습니다.

환율은 교환하는 통화의 단위에 따라 표시가 어렵기에 인덱스지수 처럼 단위가 없이 표시해주면 됩니다.

한국주식종목은 원화 기준이기에 달라 기준인 미국주식종목과 단위가 없는 환율, 인덱스지수와 함께 표시할 때 상대적으로 큰 숫자로 표시되어 다른 항목들의 값이 정상적으로 표현되지 않을 수 있습니다.

사용자가 각 항목을 확인 할 때 불편하지 않도록 항목에 따라 Y축의 척도, 단위를 자동으로 구성해주면 좋겠습니다.

4. 환율, 인덱스지수, 한국주식종목, 미국주식종목 등 여러가지 그래프를 하나의 chart화면에서 보여 줄 때 모든 정보들이 보이지 않고 마지막으로 추가한 항목의 그래프만 보이는 오류가 발생할 수 있습니다. 이런 오류가 발생하지 않도록 코드를 오류 없이 작성해주세요.

5. 업로드한 파일은 초기에 작성한 python FLASK로 작성한 파일입니다. 참고하여 위의 요청사항들을 반영하여 사용자가 사용하기 편리하고 오류없는 python기반의 FLASK 사이트를 작성해줘.


첫번째는 chatGPT에게 대략적인 내용을 설명하고 코드를 작성해달라고 하였고, 이후 gemini에게 chatGPT가 작성한 코드를 바탕으로 추가 요청사항을 알려주었습니다.


그래서 아래와 같이 결과물이 나왔는데... 

물론 아직 멀었습니다. 일단 이쁘지가 않습니다. 그리고 Y축의 척도가 선택한 항목에 따라 동적으로 scale이 조정되면 좋을 것 같은데... 그렇지 않다보니 숫자가 작은 항목을 선택하면... 바닥에 기어가는 그래프들만 볼때가 있네요..


그래도 머리에 있는 내용을 타이핑해서 상대방에게 알려주는 것이 얼마나 어려운것인지 다시한번 느끼고 있으며 그럼에도 불구하고 이 내용을 A부터 Z까지 python이라지만 내가 코드를 작성할 수 있었을까? 라는 생각을 가지고 감탄하고 있습니다. :)


아이디어와 설명, 표현을 LLM에게 잘 한다면 사실 못할게 없을것 같네요. :)

그리고 위에서 얘기한것과 같이 다른 LLM들도 사용할 예정인데 품질 향상을 위해서가 아니라 무료 버전을 사용하고 있어서 하나의 모델에게 많은 일을 시키지 못해서 그렇습니다. :) 

음... 좀 번거롭긴 하지만 생각보다 약간씩 모델에 차이가 있다보니 여러 LLM을 돌려사용하면 품질이 조금 더 향상되지 않을까 합니다. ㅎㅎ
더 업데이트해서 지금보다 나은 결과물을 가지고 두번째 글을 쓰도록 하겠습니다. :)




출처: @ye._.vely618