ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 📊 파이썬으로 주간/월간 수익률 리포트 자동 생성하기
    기술개발 2025. 6. 14. 17:07

    지난 1편에서는 Python을 이용해
    개별 종목의 주가와 이동평균선을 시각화하고,
    자동 리포트로 저장하는 방법을 소개했습니다.
    → [1편 보러가기]

    이번 글에서는 그 연장선으로,
    주간 및 월간 기준의 수익률을 자동으로 계산해 리포트로 저장하는 방법을 다룹니다.

    📈 "이번 달에 이 종목 얼마나 올랐지?"
    📉 "최근 몇 주 동안은 수익률이 어땠을까?"
    이런 질문에 대해 자동으로 답할 수 있는 리포트 도구를 만들어봅니다.


    ✅ 이번 글의 목표

    • 주가 데이터를 주간(W) / 월간(M) 단위로 리샘플링
    • 각 기간의 수익률을 자동 계산
    • 표 형식으로 저장 (CSV 또는 HTML)
    • 추후 리포트/대시보드에서 활용 가능하도록 정리

    📥 1단계: 주가 데이터 가져오기

    먼저, 분석할 주식 데이터를 yfinance 라이브러리로 가져옵니다.

    import yfinance as yf
    
    symbol = 'AAPL'  # 분석할 종목 코드 (애플)
    df = yf.download(symbol, start="2023-01-01", end="2024-01-01")

    위 코드를 실행하면 1년치 애플(AAPL) 주가 데이터를 가져올 수 있습니다.


    🧮 2단계: 주간 / 월간 수익률 계산

    Pandas의 resample() 기능을 활용하면,
    일별 데이터를 주간(W-FRI) 또는 월간(M) 단위로 집계할 수 있습니다.

    # 주간 수익률 계산 (금요일 기준 종가 사용)
    weekly = df['Close'].resample('W-FRI').last().pct_change() * 100
    weekly = weekly.dropna().round(2)
    
    # 월간 수익률 계산
    monthly = df['Close'].resample('M').last().pct_change() * 100
    monthly = monthly.dropna().round(2)
    • resample('W-FRI'): 매주 금요일의 종가로 리샘플링
    • pct_change(): 전 기간 대비 백분율 변화율
    • round(2): 소수점 2자리로 반올림

    ✅ 예시 출력 (주간 수익률)

    2023-01-13    1.72
    2023-01-20   -0.98
    2023-01-27    3.12
    ...

    💾 3단계: 리포트 파일로 저장

    계산된 수익률은 엑셀이나 웹에서 활용할 수 있도록
    CSV 또는 HTML 파일로 저장할 수 있습니다.

    # CSV 저장
    weekly.to_csv('weekly_return.csv', header=['Weekly Return (%)'])
    monthly.to_csv('monthly_return.csv', header=['Monthly Return (%)'])
    
    # HTML 테이블 저장 (옵션)
    weekly.to_frame().to_html('weekly_return.html')
    • .to_csv()는 엑셀에서 바로 열 수 있고,
    • .to_html()은 대시보드나 웹서비스로 확장할 때 유용합니다.

    파일 이름에 날짜나 종목명을 자동으로 넣는 것도 추천!
    예: AAPL_weekly_return_2024-06.csv


    ✨ 보너스: 전체 흐름 자동화 예시

    하나로 묶으면 다음과 같이 전체 리포트 생성 스크립트를 구성할 수 있습니다:

    import yfinance as yf
    from datetime import datetime
    
    symbol = 'AAPL'
    today = datetime.now().strftime('%Y-%m-%d')
    df = yf.download(symbol, start="2023-01-01", end=today)
    
    weekly = df['Close'].resample('W-FRI').last().pct_change() * 100
    monthly = df['Close'].resample('M').last().pct_change() * 100
    
    weekly.dropna().round(2).to_csv(f'{symbol}_weekly_return_{today}.csv')
    monthly.dropna().round(2).to_csv(f'{symbol}_monthly_return_{today}.csv')

    이걸 cron이나 task scheduler로 매주 실행하면
    자동 리포트 생성 시스템 완성!


    📌 마무리

    이제 Python을 통해

    • 매주 / 매달 자동으로 수익률을 계산하고
    • 깔끔한 리포트 파일로 저장까지 할 수 있게 되었습니다.

    이 기능은 향후 포트폴리오 성과 비교, 투자 전략 검증 등
    다양한 분석에 응용 가능합니다.


    🔜 다음 편 예고

    [3편] 여러 종목 수익률 비교 리포트 만들기

    • AAPL, TSLA, NVDA 등 여러 종목을 한 번에 비교
    • 수익률 테이블 & 그래프 자동 생성
    • 포트폴리오 분석으로 확장 가능

    🙋‍♂️ 공유 & 피드백 환영

    이 글이 도움이 되셨다면,
    공감 / 댓글 / 스크랩으로 응원해주세요 🙌
    궁금한 점이나 개선 아이디어도 환영합니다!

Designed by Tistory.