# -*- coding: utf-8 -*-
"""
3강 · 3단계 — 하루 수익률을 한꺼번에: pct_change()
for 문 없이 5,937일 전부를 한 번에 계산한다(이것이 판다스·넘파이의 힘: '벡터 계산').
"""
from pathlib import Path
import pandas as pd

df = pd.read_csv(Path(__file__).parent / "data" / "BTC_USD_daily.csv", parse_dates=["timestamp"], index_col="timestamp").sort_index()
p = df.loc["2025-01-01":"2026-09-30", "close"]                 # 검증구간만

ret = p.pct_change().dropna()                                   # 오늘 ÷ 어제 - 1  (첫날은 비어서 버림)
print("하루 수익률 개수:", len(ret))
print(f"하루 평균 {ret.mean():+.3%} · 하루 표준편차(흔들림) {ret.std():.2%}")
print(f"1년으로 환산한 흔들림(변동성): {ret.std() * 365 ** 0.5:.1%}   ※ 코인은 365일 쉬지 않음, 주식은 보통 252")
print(f"가장 좋은 날 {ret.idxmax().date()} {ret.max():+.1%} · 가장 나쁜 날 {ret.idxmin().date()} {ret.min():+.1%}")
print("오른 날:", (ret > 0).sum(), " 내린 날:", (ret < 0).sum())
print()
# 하루 수익률을 곱해 나가면 '보유 수익률'과 같아야 한다 — 검산 습관
grow = (1 + ret).prod() - 1
print(f"검산: 하루 수익률을 모두 곱한 값 {grow:+.1%}  ==  2단계 검증구간 보유 -11.5% ?")

# ── 해 보기 ──
# ① 하루에 5% 넘게 떨어진 날은 며칠?   →  (ret < -0.05).sum()
# ② 학습구간(2023~2024)의 1년 변동성은 검증구간보다 큰가 작은가?
