파이썬 – Python과 판다를 야후 파이낸스 API 활용 예제 1 – 주식관련

Yahoo, python
Table of Contents

    간단한 샘플 예제를 통하여 다시 한번 api 에 대한 사용법을 적용해봤습니다. 이 예제들은 yfinance 라이브러리를 사용하여 다양한 주식 데이터를 분석하고 시각화하는 방법을 보여줍니다.

    yfinance 라이브러리는 Python을 사용하여 금융 데이터를 쉽게 가져오고 분석할 수 있게 해줍니다. 이번 글에서는 yfinance를 활용한 주식 포트폴리오 성과 분석, 주식 간의 상관관계 분석, 특정 주식의 이동평균과 볼린저 밴드 시각화, 재무제표 분석, 배당금 성장 추세 분석 등의 복잡한 예제를 다루며, 이를 통해 투자 결정을 도울 수 있는 유용한 정보를 제공하고자 합니다.

    주식 포트폴리오의 성과 분석

    여러 주식으로 구성된 포트폴리오의 성과를 분석하고 시각화합니다. 애플(AAPL), 마이크로소프트(MSFT), 구글(GOOGL), 아마존(AMZN)으로 구성된 포트폴리오의 지난 1년간 누적 수익률을 계산하고 이를 시각화합니다.

    
    
    import yfinance as yf
    import pandas as pd
    import matplotlib.pyplot as plt
    
    # 한글 폰트 설정
    plt.rcParams['font.family'] ='Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] =False
    # 포트폴리오에 포함될 주식 목록
    tickers = ["AAPL", "MSFT", "GOOGL", "AMZN"]
    
    # 지난 1년간의 일일 주가 데이터를 가져옵니다.
    data = yf.download(tickers, period="1y", interval="1d")["Adj Close"]
    
    # 각 주식의 일일 수익률을 계산합니다.
    returns = data.pct_change()
    
    # 포트폴리오의 누적 수익률을 계산합니다.
    cumulative_returns = (1 + returns).cumprod()
    
    # 포트폴리오의 누적 수익률을 시각화합니다.
    plt.figure(figsize=(14, 7))
    for ticker in tickers:
        plt.plot(cumulative_returns[ticker], label=ticker)
    plt.title('포트폴리오의 누적 수익률')
    plt.xlabel('날짜')
    plt.ylabel('누적 수익률')
    plt.legend()
    plt.grid(True)
    plt.show()

    결과:

    주식의 상관관계 분석

    여러 주식 간의 상관관계를 분석하여 포트폴리오 다각화에 도움을 줍니다. 애플(AAPL), 마이크로소프트(MSFT), 구글(GOOGL), 아마존(AMZN), 테슬라(TSLA) 간의 지난 2년간 일일 수익률을 기반으로 상관관계 매트릭스를 계산하고 이를 시각화합니다.

    import yfinance as yf
    import seaborn as sns
    import matplotlib.pyplot as plt
    plt.rcParams['font.family'] ='Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] =False
    # 주식 목록
    tickers = ["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"]
    
    # 지난 2년간의 일일 주가 데이터를 가져옵니다.
    data = yf.download(tickers, period="2y", interval="1d")["Adj Close"]
    
    # 각 주식의 일일 수익률을 계산합니다.
    returns = data.pct_change()
    
    # 주식 간의 상관관계 매트릭스를 계산합니다.
    corr_matrix = returns.corr()
    
    # 상관관계 매트릭스를 시각화합니다.
    plt.figure(figsize=(10, 8))
    sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
    plt.title('주식 간의 상관관계 매트릭스')
    plt.show()

    특정 주식의 이동평균과 볼린저 밴드 시각화

    특정 주식의 이동평균과 볼린저 밴드를 시각화하여 시장 변동성을 분석합니다.애플(AAPL)의 지난 1년간 주가 데이터를 기반으로 20일 이동평균과 볼린저 밴드를 계산하고 이를 시각화합니다.

    import yfinance as yf
    import seaborn as sns
    import matplotlib.pyplot as plt
    plt.rcParams['font.family'] ='Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] =False
    
    # 티커 심볼 정의 (예: 애플)
    ticker = yf.Ticker("AAPL")
    
    # 지난 1년간의 일일 주가 데이터를 가져옵니다.
    data = ticker.history(period="1y", interval="1d")
    
    # 20일 이동평균을 계산합니다.
    data['MA20'] = data['Close'].rolling(window=20).mean()
    
    # 볼린저 밴드를 계산합니다.
    data['UpperBB'] = data['MA20'] + 2 * data['Close'].rolling(window=20).std()
    data['LowerBB'] = data['MA20'] - 2 * data['Close'].rolling(window=20).std()
    
    # 이동평균과 볼린저 밴드를 시각화합니다.
    plt.figure(figsize=(14, 7))
    plt.plot(data['Close'], label='종가')
    plt.plot(data['MA20'], label='20일 이동평균')
    plt.plot(data['UpperBB'], label='상단 볼린저 밴드')
    plt.plot(data['LowerBB'], label='하단 볼린저 밴드')
    plt.fill_between(data.index, data['LowerBB'], data['UpperBB'], color='gray', alpha=0.1)
    plt.title('애플(AAPL)의 이동평균과 볼린저 밴드')
    plt.xlabel('날짜')
    plt.ylabel('가격')
    plt.legend()
    plt.grid(True)
    plt.show()

    주식의 재무제표 분석

    특정 주식의 재무제표 데이터를 분석하여 회사의 재무 건전성을 평가합니다. 애플(AAPL)의 대차대조표, 손익계산서 및 현금흐름표 데이터를 가져와 출력합니다.

    import yfinance as yf
    import seaborn as sns
    import matplotlib.pyplot as plt
    plt.rcParams['font.family'] ='Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] =False
    
    # 티커 심볼 정의 (예: 애플)
    ticker = yf.Ticker("AAPL")
    
    # 재무제표 데이터를 가져옵니다.
    balance_sheet = ticker.balance_sheet
    income_statement = ticker.financials
    cash_flow = ticker.cashflow
    
    # 재무제표 데이터를 출력합니다.print("애플(AAPL)의 대차대조표:")
    print(balance_sheet)
    
    print("\n애플(AAPL)의 손익계산서:")
    print(income_statement)
    
    print("\n애플(AAPL)의 현금흐름표:")
    print(cash_flow)

    주식의 배당 성장 분석

    애플(AAPL)의 배당금 지급 내역을 가져와 배당금 성장 추세를 시각화합니다.

    import yfinance as yf
    import seaborn as sns
    import matplotlib.pyplot as plt
    plt.rcParams['font.family'] ='Malgun Gothic'
    plt.rcParams['axes.unicode_minus'] =False
    
    # 티커 심볼 정의 (예: 애플)
    ticker = yf.Ticker("AAPL")
    
    # 배당금 데이터를 가져옵니다.
    dividends = ticker.dividends
    
    # 배당금 성장 추세를 시각화합니다.
    plt.figure(figsize=(14, 7))
    plt.plot(dividends.index, dividends.values, marker='o')
    plt.title('애플(AAPL)의 배당금 성장 추세')
    plt.xlabel('날짜')
    plt.ylabel('배당금 ($)')
    plt.grid(True)
    plt.show()

    결론

    yfinance 라이브러리를 활용하면 주식 데이터를 효과적으로 분석하고 시각화할 수 있습니다. 이번 글에서 다룬 예제들은 실제 투자 전략을 수립하는 데 있어 중요한 인사이트를 제공합니다. 포트폴리오 성과를 분석하고, 주식 간의 상관관계를 파악하며, 이동평균과 볼린저 밴드를 통해 시장 변동성을 예측하고, 재무제표와 배당금 데이터를 분석하여 회사의 재무 건전성과 배당 성장 추세를 평가하는 데 유용합니다.