[알고리즘 트레이딩] KOSPI 시가총액 상위 200 종목 분석 및 JSON, HTML 저장 (파이썬)

개요

KOSPI 시가총액 기준 상위 200개 종목을 분석하여 종목별 EPS, BPS, PER, PBR, DIV, DPS 등의 정보를 포함한 데이터를 생성하고, 이를 JSON 및 HTML 파일로 저장하는 파이썬 스크립트를 작성하였습니다.

구현 목표

  • KOSPI 시가총액 상위 200개 종목을 가져오기
  • 종목별 가능한 모든 재무 정보를 포함하기
  • 시가총액이 전체 KOSPI에서 차지하는 비율 계산
  • 데이터를 JSON, HTML 파일로 저장하여 활용성 증가
  • 실행 날짜를 매개변수로 받아 특정 일자의 데이터를 분석할 수 있도록 설정

코드 구현

1. get_kospi_top_200 함수

이 함수는 KOSPI 종목 데이터를 가져와 시가총액 기준으로 정렬한 후, 추가적인 재무 정보를 포함하여 데이터 프레임을 생성합니다.

from pykrx import stock
import pandas as pd

def get_kospi_top_200(date):
    df = stock.get_market_cap_by_ticker(date, market='KOSPI').reset_index()
    additional_info = stock.get_market_fundamental_by_ticker(date, market='KOSPI').reset_index()
    df = df.merge(additional_info, on='티커', how='left')
    df.rename(columns={'티커': '종목코드'}, inplace=True)
    df['종목명'] = df['종목코드'].apply(lambda x: stock.get_market_ticker_name(x))
    total_market_cap = df['시가총액'].sum()
    df['시가총액 비율(%)'] = (df['시가총액'] / total_market_cap) * 100
    df = df.sort_values(by='시가총액', ascending=False).head(200)
    return df, total_market_cap

2. JSON 및 HTML 저장 함수

import json

def save_to_json(df, date):
    file_name = f'kospi_top_200_{date}.json'
    with open(file_name, 'w', encoding='utf-8') as f:
        json.dump(df.to_dict(orient='records'), f, ensure_ascii=False, indent=4)
    print(f'JSON 파일 저장 완료: {file_name}')


def save_to_html(df, date):
    file_name = f'kospi_top_200_{date}.html'
    df.to_html(file_name, index=False)
    print(f'HTML 파일 저장 완료: {file_name}')

3. 실행 메인 함수

import sys

def main():
    if len(sys.argv) != 2:
        print("사용법: python script.py YYYYMMDD")
        sys.exit(1)
    
    date = sys.argv[1]
    try:
        df, total_market_cap = get_kospi_top_200(date)
        print(f'KOSPI 전체 시가총액: {total_market_cap:,.0f} 원')
        print(df)
        save_to_json(df, date)
        save_to_html(df, date)
    except Exception as e:
        print(f'오류 발생: {e}')

if __name__ == "__main__":
    main()

실행 방법

python script.py 20240320
  • 20240320을 원하는 날짜(YYYYMMDD)로 변경하여 실행하면 해당 일자의 KOSPI 데이터를 가져옵니다.
  • JSON과 HTML 파일이 생성되며, kospi_top_200_20240320.jsonkospi_top_200_20240320.html 형식으로 저장됩니다.

정리

이 스크립트는 KOSPI 시가총액 상위 200개 종목의 정보를 가져와 JSON과 HTML 파일로 저장하는 기능을 수행합니다. 이를 활용하여 특정 날짜의 KOSPI 주요 종목 정보를 분석하거나 웹 기반 데이터 시각화에 활용할 수 있습니다.

댓글

이 블로그의 인기 게시물

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[PLC] PLC 아날로그 입출력 기본

공압 속도 제어: 미터인 vs 미터아웃

제너 다이오드에 저항을 연결하는 이유

[농사] 실내 식물 재배 조명, 어떤 걸 선택해야 할까?

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[스마트팜] 아쿠아포닉스에서 pH 제어를 자동화해보자! (Python 활용)

사각형의 넓이 공식의 증명

3선 결선식 센서의 타입 PNP, NPN

PLC 출력 형태