기술개발

📊 여러 종목 수익률 비교 리포트 만들기

된다공학 2025. 6. 14. 17:40

앞선 1편2편에서는 단일 종목의 주가를 시각화하거나,
주간/월간 수익률을 자동으로 계산하는 방법을 알아봤습니다.

이번 3편에서는 여러 종목의 수익률을 한눈에 비교하는 리포트를 만들어보겠습니다.


✅ 목표

  • 여러 종목(AAPL, TSLA, NVDA 등)의 주가 데이터를 동시에 수집
  • 기준일 대비 수익률(%)을 계산하여 테이블로 정리
  • 시각화까지 포함한 리포트 형태로 저장

📥 1단계: 여러 종목 데이터 불러오기

import yfinance as yf

symbols = ['AAPL', 'TSLA', 'NVDA', 'GOOGL']
data = yf.download(symbols, start="2023-01-01", end="2024-01-01")['Close']
data = data.dropna()

`yfinance` 는 여러 종목도 한 번에 가져올 수 있어 편리합니다.

 


📈 2단계: 기준일 대비 수익률 계산

returns = (data / data.iloc[0] - 1) * 100
returns = returns.round(2)
  • 기준일(가장 처음 날)의 종가를 기준으로 이후 수익률을 계산합니다.
  • 예를 들어, 2023-01-01 대비 상승률을 % 단위로 구합니다.

📊 3단계: 수익률 테이블 저장

returns.to_csv('multi_stock_return.csv')

이 파일을 열면 날짜별로 각 종목의 누적 수익률이 표로 정리되어 있습니다.

예시"

Date AAPL TSLA NVDA
2023-01-02 0.00 0.00 0.00
2023-01-03 1.23 2.31 -0.58

 


📉 4단계: 수익률 그래프 시각화

import matplotlib.pyplot as plt

plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False
plt.figure(figsize=(12, 6))
for symbol in symbols:
    plt.plot(returns.index, returns[symbol], label=symbol)

plt.title("여러 종목 누적 수익률 비교")
plt.xlabel("날짜")
plt.ylabel("수익률 (%)")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.savefig('multi_stock_return_graph.png')
plt.show()

✅ 그래프 하나로 종목 간의 수익률 추이를 직관적으로 비교할 수 있습니다.


🔄 보너스: 최근 1개월/3개월/6개월/1년 수익률 비교표

latest = data.iloc[-1]
summary = {}

for months in [1, 3, 6, 12]:
    past = data.iloc[-21*months]  # 약 N개월 전 기준
    diff = (latest / past - 1) * 100
    summary[f'{months}개월'] = diff.round(2)

import pandas as pd
summary_df = pd.DataFrame(summary)
summary_df.to_csv('return_summary_by_period.csv')

이 표는 단기·중기·장기 성과 비교에 매우 유용합니다.


📌 마무리

이제 하나의 스크립트로

  • 여러 종목의 누적 수익률을 시각화하고
  • 각 기간별 수익률을 표로 비교하는 리포트를 자동 생성할 수 있게 되었습니다.

이런 방식은
✅ ETF 비교
✅ 포트폴리오 전략 검토
✅ 리밸런싱 판단 근거
로도 확장할 수 있습니다.


🔜 다음 글 예고

[4편] 자동 이메일 리포트 전송하기

  • 생성된 수익률 리포트를 이메일로 매주 자동 발송해보겠습니다.
  • SMTP 연동 + PDF/CSV 첨부 자동화까지 다룹니다.