ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Code Interpreter를 이용한 주가 차트 분석 - 3
    코인 2023. 7. 23. 12:56

    지난 시간에 이어 이번에는 Code Interpreter를 활용하여 Python 코드를 받아서 주가 차트를 분석하는 프로그램을 노트북에서 실행시키는 방법을 알아보겠습니다.

     

    ChatGPT-4 vs. Code Interpreter: 코딩 도우미의 진화

    ChatGPT-4의 Default 모드와 Code Interpreter의 차이는 ChatGPT에게 사용자가 가진 파일을 입력으로 사용할 수 있다는 것이라고 생각합니다. ChatGPT가 처음 등장했을 때는 Chatbot의 성격이 강했죠. 구글에서는 질문 후 사용자가 직접 관련된 글을 찾아야 했다면 ChatGPT는 질문에 답을 해준다는 것이 가장 다른 점이었습니다. 하지만 그 대답에는 한계가 많았던 것이 사실이죠. 그래서 아직은 검색할 때는 구글을 사용하는 것이 정신 건강에 좋은것 같습니다.

     

    ChatGPT의 강력한 기능 중 하나는 Coding을 도와주는 기능이었습니다. 이는 훌륭한 기능이지만, 프롬프트만으로 Coding을 작성하는 것은 쉬운 일이 아니었죠. 에러도 많이 나고, 사용자의 의도를 정확하게 프롬프트에 표현하고 ChatGPT가 이를 이해하도록 하는 것은 쉬운 일이 아니었습니다.

     

    하지만 Code Interpreter를 이용하면 파일을 입력함으로써 사용자의 의도를 더욱 정확하게 표현할 수 있고, ChatGPT와 원활한 대화를 할 수 있게 해줍니다. 또한 사용하면서 느낀점은 스스로 비평하는 기능이 잘 되어 있고 사용자가 입력한 요구 사항을 구현하는데 필요한 로직을 스스로 생각하고 이를 사용자에게 설명해주어, 사용자가 어떤 로직으로 작업을 수행하는지 이해할 수 있습니다. 이것은 마치 똑똑한 신입사원에게 일을 시킨 뒤 그들의 작업 상황을 자세히 보고 받는 것과 비슷합니다. 

     

    그럼 이제 Code Interpreter를 통해 사용자의 로컬 컴퓨터에서 구동하게 하는 Python Code를 생성해 보겠습니다.

     

    먼저, 어제 약 2시간 동안 구현한 Python 코드를 사용하여 주가 데이터를 분석한 결과를 PDF 파일로 생성한 내용을 보여드리겠습니다. 2시간이란 시간이 길다고 생각하실 수도 있겠으나 중요한 것은 Code를 1도 모르는 사람도 자연어와 데이터만으로 그래프를 생성하고 그 그래프를 PDF로 저장하는 Python Code를 만들 수 있다는 것입니다. 만약 Code에 대한 이해가 더 높거나 분석하는데 필요한 양질의 데이터를 가지고 있다면 시간은 더 짧아졌을 것입니다. 또한 자신이 무엇을 하고 싶은지 정확히 알고 있다면 Code Interpreter는 사용자의 목표를 이루는데 강력한 도구가 될 것 같습니다.

    Netflix Stock Chart - Code Interpreter

    위 결과는 아래와 같은 단계로 생성되었습니다.

    • Nasdaq 웹사이트에서 Nasdaq에 상장된 전체 회사의 이름과 Ticker를 가져온다.
    • 사용자의 입력으로 회사 이름을 입력 받아 해당 회사의 Ticker를 검색한다.
    • 검색된 Ticker를 이용하여 yfinance 함수를 활용하여 최근 1년치 일일 주가데이터를 가져와 CSV 파일로 저장한다.
    • 저장된 데이터를 이용하여 주가 차트는 Candle Stick으로 Volume은 막대 그래프로 그린다.
    • 종가를 기준으로 20, 60, 120일 Moving Average데이터를 추가하고 그래프에 추가한다.
    • Bollinger Band의 Upper/Lower Band를 계산하고 그래프에 추가한다.
    • Bollinger Band의 횡보 구간을 알아내기 위해 Bollinger Band의 미분값을 계산하고 그래프에 추가한다.

    각 단계는 하나씩 코드를 내려 받고 사용자의 로컬 컴퓨터에서 구동하여 실행 성공 여부를 확인한 후에 다음 단계로 넘어가는 방식을 택했습니다. 아무리 똑똑한 신입사원이라도 위 내용을 한번에 주고 한번에 결과를 내라고 하면 성공하기 쉽지 않을 것입니다. 

     

    제가 위 단계를 거치면서 느낀점은 정말 마치 Code 전문가와 일하고 있다는 느낌을 받았습니다. 내가 입력을 주면 Code Interpreter는 나의 입력을 먼저 자신의 언어로 이해하고 절차를 만들고 그 절차의 단계를 보여 주고 있습니다. 다음은 그 예시 입니다.

     

    Code Interpreter 예시

    Prompt

    첨부된 파일의 구성을 분석해줘.

     

    Code Interpreter Response

    첨부하신 파일은 주식 거래 데이터를 담고 있는 CSV 파일입니다. 이 데이터는 주식의 일일 거래 정보를 담고 있으며, 다음과 같은 컬럼들을 포함하고 있습니다:

    • Date: 거래일자
    • Open: 시가 (일자별 개장 시의 가격)
    • High: 고가 (해당 일자의 최고 거래 가격)
    • Low: 저가 (해당 일자의 최저 거래 가격)
    • Close: 종가 (일자별 마감 시의 가격)
    • Adj Close: 조정 종가 (배당, 주식 분할 등을 고려하여 조정한 종가)
    • Volume: 거래량 (해당 일자의 총 거래 주식 수)

    이 데이터는 총 250개의 행으로 구성되어 있습니다. 아래에는 처음 5개의 행을 보여드립니다:

     

    모든 컬럼은 null 값이 없으며, 모든 데이터가 적절히 입력되어 있습니다.

     

    Prompt

    나는 위에 첨부된 csv 파일을 이용하여 이번에 첨부하는 python code를 너에 요청해서 만들었어. 나는 여기서 indicator를 추가하고 싶어. 아래와 같은 단계로 진행해줘. - 20일, 60일, 120일 moving average를 계산하여 H, I, J 열에 추가하여 저장하는 코드를 추가해줘. - 계산되지 않는 날짜는 null 처리해줘.

    Code Interpreter Response

    첨부하신 Python 코드 파일(3_Plot_Chart.py)을 확인하고, 이 파일에 이동 평균선을 계산하여 추가하는 코드를 삽입하겠습니다.

    먼저 첨부하신 파일의 내용을 확인해야 합니다. 이는 시스템의 보안 정책으로 인해 직접적인 파일 열람이 불가능하므로, 파일의 내용을 적절히 처리하도록 하겠습니다.

    1. 첨부하신 Python 코드 파일을 읽습니다.
    2. 파일의 내용을 분석하여 이동 평균선을 계산하고 데이터프레임에 추가하는 코드를 삽입합니다.
    3. 수정된 코드를 사용자에게 반환합니다.

    아래는 이동 평균선을 계산하고 데이터프레임에 추가하는 기본적인 코드입니다. 이 코드는 첨부하신 Python 코드 파일에 적절하게 삽입되어야 합니다.

    이 코드는 'Close' 컬럼에 대한 20일, 60일, 120일 이동 평균을 계산하고, 결과를 각각 'MA_20', 'MA_60', 'MA_120'라는 새로운 컬럼에 저장합니다. 이동 평균선의 계산에 사용되는 데이터가 충분하지 않은 날짜에 대해서는 결과값이 NaN으로 자동 처리됩니다.

    먼저 첨부하신 Python 코드 파일의 내용을 확인해보겠습니다.

     

    첨부하신 파일의 내용은 특정 회사의 주식 데이터를 다운로드하고 이를 시각화하여 PDF로 저장하는 Python 코드입니다.

     

    이 코드는 yfinance 라이브러리를 사용해 Yahoo Finance에서 주식 데이터를 가져오고, mplfinance 라이브러리를 사용해 주식 가격과 거래량을 캔들스틱 차트로 그립니다. 사용자가 회사 이름을 입력하면, 이 코드는 NASDAQ 목록에서 해당 이름을 포함하는 모든 회사의 주식 데이터를 다운로드합니다.

    다음은 이동 평균을 계산하고 데이터프레임에 추가하는 코드를 기존 코드에 삽입한 버전입니다:

    이 코드는 원래의 코드에 이동 평균선을 계산하는 세 줄을 추가하였습니다. 이 변경사항은 주식 데이터를 다운로드 받은 후, 이를 CSV 파일로 저장하기 전에 이루어집니다. 이렇게 함으로써, 저장된 CSV 파일에는 이동 평균선이 포함됩니다.

     


    위와 같이 사용자의 입력을 Code Interpreter가 어떻게 사고하고 어떠한 로직으로 진행하는지 볼 수 있기 때문에 사용자는 Code Interpreter와 마치 대화하는 느낌을 받을 수 있습니다. 또한, 각 Prompt마다 계속해서 자기가 가지고 있는 데이터를 입력 시킬 수 있기 때문에 사고의 확장이나 Code의 능력을 계속해서 증대 시킬 수 있습니다.

     

    이제 우리는 자신의 목표를 이루기 위한 든든한 지원자를 얻은 셈입니다. 가장 중요한 것은 목표 설정은 사용자의 몫이라는 것입니다. AI에게 종속되는 관계가 아닌 AI를 자신의 도구로 사용할 수 있는 자세를 가지고 AI 세계에 진입해야 할 것입니다.

     

     

     

     

Designed by Tistory.