퀀트 투자 전략을 설계하고 백테스트를 하다 보면, 단순히 누적 수익률만 확인해서는 전략의 성과를 충분히 이해하기 어렵습니다.
특히 전략이 월 단위로 얼마나 안정적으로 수익을 냈는지를 확인하려면 '월별 수익률 리포트'가 필수입니다.
많은 퀀트 초보자들이 엑셀로 일일이 계산하거나 전문 툴에 의존하는 경우가 많지만, 파이썬(Python)을 활용하면 한 번의 코드 실행으로 자동화된 월별 리포트를 생성할 수 있습니다.
이번 글에서는 파이썬을 사용해 CSV로 저장된 전략 수익률 데이터를 기반으로 월별 수익률 테이블을 생성하고,
리포트 형태로 보기 좋게 정리하는 방법을 단계별로 소개하겠습니다.
1. 준비 데이터: 일간 수익률 CSV 파일 불러오기
먼저 기본 데이터는 다음과 같은 형태의 CSV 파일입니다.
📄 strategy_returns.csv (예시):
DATE | Return |
2025.01.05 | 0.0042 |
2025.01.06 | -0.0031 |
... | ... |
각 행은 일별 수익률이며, Return 컬럼은 **전일 대비 수익률 (단위: 소수점)**입니다.
파일을 불러오는 코드는 다음과 같습니다.
import pandas as pd
# CSV 불러오기
df = pd.read_csv("strategy_returns.csv")
df["Date"] = pd.to_datetime(df["Date"])
df = df.sort_values("Date")
정렬까지 완료했으면, 이제 본격적으로 월별 수익률을 계산할 준비가 되었습니다.
2. 월별 수익률 계산 로직 (누적 곱 방식)
일별 수익률을 월 단위로 묶어 그 월의 전체 수익률을 계산하려면 단순 평균이 아닌 '누적 곱(Cumulative Product)' 방식을 사용해야 합니다.
📌 수익률 공식:
(1 + r_1) \times (1 + r_2) \times \dots \times (1 + r_n) - 1
아래는 월별 수익률을 계산하는 함수입니다.
def calculate_monthly_returns(df):
df["YearMonth"] = df["Date"].dt.to_period("M") # '2022-01', '2022-02' 형태
monthly_returns = (
df.groupby("YearMonth")["Return"]
.apply(lambda x: (x + 1).prod() - 1) # 누적 곱 방식으로 계산
.reset_index()
)
monthly_returns["YearMonth"] = monthly_returns["YearMonth"].astype(str)
return monthly_returns
실행:
monthly = calculate_monthly_returns(df)
print(monthly.head())
이제 각 월의 수익률을 계산했으니, 보기 좋게 표로 구성해봅시다.
3. 월별 수익률 피벗 테이블 형태로 보기 좋게 정리
실전에서는 전략의 성과를 연도별/월별 매트릭스 테이블 형태로 보고 싶을 때가 많습니다.
예: 연도는 행, 월은 열 이를 위해 다음과 같은 피벗 테이블을 생성합니다.
# 연도, 월 분리
monthly["Year"] = monthly["YearMonth"].str.slice(0, 4)
monthly["Month"] = monthly["YearMonth"].str.slice(5, 7)
# 월별 수익률 테이블 생성
pivot_table = monthly.pivot(index="Year", columns="Month", values="Return")
# 보기 좋게 소수점 퍼센트로 변환
pivot_table = pivot_table.applymap(lambda x: "{0:.2%}".format(x) if pd.notnull(x) else "")
print(pivot_table)
출력 예시 :
Year | 01 | 02 | 03 | ... | 12 |
2024 | 3.24% | -1.52% | 1.10% | ... | 5.10% |
2025 | 1.92% | 0.83% | -0.50% | ... | 2.15% |
이렇게 정리하면
특정 연도의 어떤 달에 전략이 강했는지, 약했는지를 한눈에 파악할 수 있습니다.
4. 추가 기능: 수익률 평균, 변동성, 누적 수익률 표시
마지막으로 아래와 같은 정보를 요약해 표시하면 퀀트 전략 리포트로 바로 활용할 수 있는 수준이 됩니다.
# 연도별 누적 수익률
yearly_returns = (
df.groupby(df["Date"].dt.year)["Return"]
.apply(lambda x: (x + 1).prod() - 1)
)
# 연도별 평균 수익률, 표준편차
yearly_mean = df.groupby(df["Date"].dt.year)["Return"].mean()
yearly_std = df.groupby(df["Date"].dt.year)["Return"].std()
# 출력
report = pd.DataFrame({
"연도별 누적 수익률": yearly_returns,
"연도별 평균 일 수익률": yearly_mean,
"일간 수익률 표준편차": yearly_std
}).applymap(lambda x: "{0:.2%}".format(x))
print(report)
이 출력값은 전략 설명서에 그대로 붙여 넣어도 손색없을 정도로 정돈된 리포트입니다.
모든 작업은 코드 한 번 실행으로 자동 생성되기 때문에 매월 또는 전략별로 리포트를 만들 때 매우 효율적입니다.
✅ 마무리 – 퀀트 전략 리포트는 자동화로 완성된다
퀀트 전략을 실제로 운영하고 비교하려면, 단순히 백테스트 결과 그래프만 봐서는 부족합니다.
월별 수익률, 변동성, 손실 구간 등을 수치로 보여주는 정형화된 리포트가 꼭 필요합니다.
이번 글에서 소개한 방법은 기존의 엑셀 수작업 방식보다 훨씬 빠르고 정확하며,
파이썬을 이용해 누구나 쉽게 자동화할 수 있는 실전 활용 기법입니다.
이제 퀀트 전략을 하나 만들 때마다 **“한 줄 코드 실행 = 전략 리포트 자동 완성”**이라는 루틴을 구축해보세요.
👉 다음 글에서는 이 월별 리포트를 PDF로 자동 변환해 저장하는 방법도 함께 소개드리겠습니다.
'Quant' 카테고리의 다른 글
파이썬 수익률 리포트를 PDF로 자동 저장하기 (1) | 2025.06.30 |
---|---|
파이썬 퀀트 – 수집한 종가 데이터로 CAGR, MDD 계산하기 (0) | 2025.06.29 |
PER+PBR 점수 전략 구현 – 파이썬 실전 코드 예시 (1) | 2025.06.29 |
파이썬을 활용한 코스피·코스닥 전 종목 10년 종가 데이터 가져오기 (0) | 2025.06.28 |
파이썬으로 만드는 나만의 퀀트 백테스트 시스템 – 기초부터 시작 (0) | 2025.06.28 |
엑셀로 퀀트전략 백테스트 하는 법 – 코스피·코스닥 종목 다운로드부터 수익률 계산까지 (0) | 2025.06.27 |
[퀀트 플랫폼] ③ 퀀터스 - 단계별 설정 방식과 다양한 전략 분석 (0) | 2025.06.27 |
[퀀트 플랫폼] ② 젠포트 - 다양한 지표 설정을 지원하는 Tool (1) | 2025.06.26 |