Innovate With Data

데이터로 더 큰 가치를 제공합니다.

맨땅에 프로그래밍/Python 복기장

Fear & Greed Index(공탐지수) Python으로 가져오기

데이터위자드 2024. 3. 5. 06:18
반응형

Python 공탐지수 가져오기

CNN에서 제공하는 Fear & Greed Index (공포 탐욕 지수)를 가져와 자동으로 프로그래밍하고 싶었다.

 
 미국 주식 / 채권 투자가 어느 때 보다도 유행 중인 요즘입니다. 국내 주식에 투자하는 동학개미에 빗대어 서학개미라는 신조어를 한 번쯤은 들어보신 적이 있으실 겁니다. 저 역시 서학개미 중에 한 명이고요.
 
 평소 미국 주식시장의 상황을 보기 위해 CNN에서 제공하는 공포와 탐욕지수 사이트를 종종 이용하곤 했는데요.
 

Fear and Greed Index - Investor Sentiment | CNN

 

Fear and Greed Index - Investor Sentiment | CNN

 

www.cnn.com

 

 

Fear & Greed Index @ CNN
Fear & Greed Index @ CNN

 

(24년 3월 5일 현재 기준, 공탐지수가 80이나 기록했네요;;)

 


 'Fear & Greed Index(이하 공탐지수)를 가져와 미국 주식을 자동으로 매매하는 프로그램을 구성하면 편리하겠다.'는 생각이 들어 Python으로 자동화하기로 하였습니다.
 
이번에 이용할 파이썬 패키지는 fear-and-greed입니다. (아래 Pypi 홈페이지에서 확인하실 수 있습니다.) 

 

fear-and-greed · PyPI

 

fear-and-greed

Python wrapper for CNN Fear & Greed Index.

pypi.org

 

위 홈페이지에서 예시로 들은 내용을 보자면, 사용법은 매우 간단합니다.

 

우선, 해당 모듈을 설치해 주고요.

 

pip install fear-and-greed@Pypi
pip install fear-and-greed@Pypi

 

다음으로, 프로그램을 작성해 줍니다.

 

fear-and-greed 예제@Pypi
fear-and-greed 예제@Pypi

 

import 한 줄과, fear_adn_greed.get() 한 줄이면 되는 아주 간단한 프로그램이고,

 

공탐지수 결괏값은, 아래와 같이

 

  1. 공탐지수 점수
  2. 공탐지수 상태(Status)
  3. 현재시간

 

의 List 형으로 반환됩니다.

 

fear-and-greed 결괏값 예제@Pypi
fear-and-greed 결괏값 예제@Pypi

 

 

관련 내용을 확인했으니, 이제 본 작업으로 넘어가 보겠습니다.

 

파이썬 설치 및 모듈 설치에 대한 부분은, 이전 포스팅을 참조해 주시기 바랍니다.

파이썬 (2) - PIP로 모듈 설치하기

 

파이썬 (2) - PIP로 모듈 설치하기

파이썬(Python) 모듈(라이브러리) 이야기 이전 포스팅에서 파이썬 설치에 대해서 정리하였습니다. (파이썬 설치에 대한 내용은 아래 링크를 참조하시기 바랍니다.) 파이썬 (1) - 파이썬 시작하기 파

datawizard.co.kr

 

 

 

fear-and-greed 모듈로 공탐지수 가져오기 자동화

 


먼저, fear_and_greed 패키지를 import 합니다. 또한, math 패키지도 import 해줍니다. (당장 필요는 없지만, 데이터 프레임 처리를 위해 pandas 패키지, 주식정보를 가져오기 위해 yfinance, 그리고 기간 자동화를 위해서 datetime 모듈에서 datetime, date, timedelta 또한 import 하여 줍니다.)

 

참고로 fear_and_greed 모듈은 0.4 버전을 사용하였습니다.
 

 
from datetime import datetime, date, timedelta
import pandas as pd
import math

import fear_and_greed
import yfinance as yf
 

 

 

다음으로, 공탐지수를 가져와서 반환하는 함수를 작성합니다.

 

    
def get_fear_and_greed():
    fg = fear_and_greed.get()        
    fg_score = float(fg[0])
    fg_score = round(fg_score,2)
    fg_status = fg[1]

    return (fg_score, fg_status)
 

 

1. 위에서 설명한 fear_and_greed.get()을 이용하여 공탐지수 정보를 가져온 후, 리스트 변수 fg에 할당합니다.

2. fg[0]은 변수(공탐지수 점수)는 문자형이므로, 부동소수점 변수로 변환하여, fg_score에 할당합니다.

3. round method를 이용해 fg_score를 소수점 둘째 자리까지로 만들어 줍니다.

4. fg[1] 공탐지수 status 또한, fg_status에 할당합니다.

 

 


여기에 조건식으로 현재 공탐지수에 따라 특정 주식을 매수 혹은 매도하는 로직을 추가로 작성합니다.
 

 
def main():
    sell_score = 80
    buy_score = 35
   
    try:
        fg_score, fg_status = get_fear_and_greed()
       
        if fg_score > sell_score:
            sell_stock()

        if fg_score < buy_score:
            buy_stock()
     
       
    except Exception as ex:
        print('예외 처리 : ' + str(ex) )
 

  


전체 코드는 다음과 같습니다.
 

 
 
from datetime import datetime, date, timedelta
import math

import pandas as pd
import fear_and_greed
import yfinance as yf


def get_fear_and_greed():
    fg = fear_and_greed.get()        
    fg_score = float(fg[0])
    fg_score = round(fg_score,2)
    fg_status = fg[1]

    return (fg_score, fg_status)


def buy_stock(ticker):
    print("Buy some stock")
    # slackout("Buy some stock")

def sell_stock(ticker):
    print("Sell some stock")
    # slackout("Sell some stock")


def main():
    sell_score = 80
    buy_score = 35
   
    try:
        fg_score, fg_status = get_fear_and_greed()
       
        if fg_score > sell_score:
            sell_stock()

        if fg_score < buy_score:
            buy_stock()

        print(fg_score, fg_status)
       
    except Exception as ex:
        print('예외 처리 : ' + str(ex) )


if __name__ == "__main__":
    main()
 

 

 실행 결과는,
 

fear-and-greed 예제 실행화면
실행화면

 

공탐지수 79.26으로 CNN 사이트 80과는 조금 차이 나는 것을 보실 수 있습니다. (홈페이지는 결괏값을 올림 혹은 내림하는 것으로 보이네요.)


 
도움이 되셨다면, 왼쪽 아래 '💗' 클릭 부탁드립니다. 감사합니다.

반응형