Today_I_Learned

장내채권 가격 데이터 조회 파이썬 코드 예제

CONCAT 2023. 9. 29. 23:38
728x90

  • 신한투자증권에서 제공하는 장내시세 페이지의 API가 너무 대놓고 노출되어 있어서 참을 수 없었다.
  • pandas를 통해서 금융 데이터 분석하기에는 꽤나 괜찮은 예제

예제 코드

import requests
import pandas as pd

class bond:
    def __init__(self):
        self.get_prices()
        pass

    def get_prices(self):
        # 데이터 받기
        URL = 'https://www.shinhansec.com/siw/wealth-management/bond-rp/590401/data.do'
        response = requests.get(URL)
        data = response.json().get('body').get('반복데이타0')
        # 테이블 전처리
        df = pd.DataFrame(data)
        df.columns = [
            '종목명', '매도수익률', '잔존만기일수', '거래대금', '표면금리',
            '신용도', '종목코드', '현재가', '발행주체', '이자지급방법',
            '잔존만기_연', '잔존만기_월', '잔존만기_일', '매수수익률', '표면금리2',
            'x1', 'x2','만기일시', '거래량', '등락률', '전일종가',
        ]
        # 필드 전처리
        df.종목명 = df.종목명.str.strip()
        df = df.astype({
            '매도수익률': 'float',
            '잔존만기일수': 'int',
            '거래대금': 'int',
            '표면금리': 'float',  
            '현재가': 'float',  
            '매수수익률': 'float',  
            '잔존만기_연': 'int',  
            '잔존만기_월': 'int',  
            '잔존만기_일': 'int',  
            '거래량': 'int',  
            '등락률': 'float',  
            '전일종가': 'float',  
        })
        df.drop(columns=['표면금리2', 'x1', 'x2'], inplace=True)
        # df.info()
        self.prices = df.set_index('종목코드')

b = bond()
b.prices