봉수
무료 금융데이터분석 과정봉수 인텔리전스 교육
봉수 무료 금융데이터분석 과정 · 3강
bongsu.kr/intelligence/lesson03/ · 저자 조봉수 · 봉수 SSGlobal(주) · ΦΡΥΚΤΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ
금융데이터분석전문가 과정 · 3강 (1부 1-2강) 공개 · 무료

판다스 — 2강 계산을 3줄로, 그리고 데이터 속 함정 찾기

2강의 12줄 계산을 판다스 3줄로. 변동성 43.8%, 고점 대비 낙폭 -53.1%, 구글 '가짜 폭락' 2주와 거래량 칸의 함정. 무료 교재·코드.

실습 파일 받기쇼츠 보기: 3강 쇼츠 「거래량 함정」
-11.5%2강과 같은 답(3줄로)
43.8%1년 변동성
-53.1%고점 대비 최대 낙폭

저자 조봉수 · 봉수 SSGlobal(주) · ΦΡΥΚΤΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ · 2026-10-21 실습 폴더: lesson03 (파일 7개 + 정답 1개 + 자료 2개: 비트코인 일봉 5,937일 · 구글 주간 1,156주)

AI 이용 고지: 이 교재와 실습 코드는 AI(Claude)와 함께 만들었습니다. 모든 숫자는 원자료와 코드로 다시 계산할 수 있습니다. 모든 매매는 모의 계산이며 투자 권유가 아닙니다.

목차

  1. 오늘의 질문
  2. 2강에서 가져오는 것
  3. 수업 진행표 (약 70분)
  4. 0단계 — 판다스 설치 확인
  5. 1단계 — 한 줄로 읽기
  6. 2단계 — 들고만 있기를 3줄로
  7. 3단계 — 하루 수익률을 한꺼번에
  8. 4단계 — 고점 대비 낙폭과 월별 수익률
  9. 5단계 — 0교시 복습: 원주가와 수정주가
  10. 6단계 — 내 손으로 다시 짜기
  11. 오늘의 발견 — 거래량 칸의 함정
  12. 면접 대비 / 현업 적용 체크리스트
  13. 숙제
  14. 정답 (먼저 풀고 나서 보기)

1. 오늘의 질문

2강에서는 비트코인 파일을 읽는 데만 12줄이 들었습니다. 현업에서는 수천 종목을 매일 다룹니다. 그때마다 for 문을 짤 수는 없습니다.

오늘은 판다스(pandas)를 씁니다. 판다스는 엑셀 표를 파이썬 안에 넣은 도구입니다. 2강의 숫자 -11.5%를 3줄로 똑같이 다시 냅니다. 같은 숫자가 나와야 새 도구를 믿을 수 있습니다.

2. 2강에서 가져오는 것

2강 오늘(판다스)
csv.DictReader + for + sort (12줄) pd.read_csv(...).sort_index() (1줄)
period(rows, a, b) 함수 df.loc[a:b]
p[-1][1] / p[0][1] - 1 p.iloc[-1] / p.iloc[0] - 1
고점 peak = max(peak, price) 를 날마다 p.cummax() 한 번에

3. 수업 진행표 (약 70분)

시간 단계 대표님이 할 일 확인할 숫자
0~5분 0단계 python step0_check.py "준비 끝"
5~15분 1단계 python step1_read.py (5937, 5)
15~25분 2단계 python step2_hold_3lines.py +462.1% / -11.5%
25~35분 3단계 python step3_returns.py 변동성 43.8%, 검산 -11.5%
35~45분 4단계 python step4_drawdown_monthly.py MDD -53.1%
45~55분 5단계 python step5_googl_split.py -51.3%, -95.2% → 분할
55~70분 6단계 빈 파일 채우기 -11.5% / 43.8% / -53.1% / 2개

규칙은 똑같습니다. 한 번에 하나만 바꿉니다. 에러 메시지는 끝까지 읽습니다.

4. 0단계 — 판다스 설치 확인

python step0_check.py - "준비 끝 — pandas …"가 나오면 1단계로 갑니다. - No module named 'pandas'가 나오면 python -m pip install pandas를 한 번 치고 다시 실행합니다.

5. 1단계 — 한 줄로 읽기

python step1_read.py

df = pd.read_csv("data/BTC_USD_daily.csv", parse_dates=["timestamp"], index_col="timestamp").sort_index()

나와야 하는 결과: 표 크기(줄, 칸): (5937, 5), 처음 종가 0.05, 끝 종가 81545.02

해 보기 - ① 2025-01-01 종가 (2강에서는 for + if로 찾았습니다) - ② 처음보다 몇 배인가 - ③ 거래량이 가장 컸던 날 → 11장 '오늘의 발견'으로 이어집니다

6. 2단계 — 들고만 있기를 3줄로

python step2_hold_3lines.py

p = df.loc[a:b, "close"]        # 1줄: 기간 자르기 (끝 날짜도 포함)
r = p.iloc[-1] / p.iloc[0] - 1  # 2줄: 끝 ÷ 처음 - 1
print(f"{name}: 보유 {r:+.1%}") # 3줄: 찍기
구간 기간 날 수 보유
학습 2023-01-01 ~ 2024-12-31 731일 +462.1%
검증 2025-01-01 ~ 2026-09-30 638일 -11.5%

2강과 같은 숫자입니다. 새 도구로 옛 숫자를 다시 내는 것, 이것이 도구를 바꿀 때의 검증입니다. - loc은 이름(날짜)으로, iloc은 순번(0, 1, … -1)으로 찾습니다.

7. 3단계 — 하루 수익률을 한꺼번에

python step3_returns.py

p.pct_change() 한 줄이 637개 하루 수익률을 한 번에 계산합니다. for 문이 없습니다. 이것을 벡터 계산이라고 합니다.

항목 검증구간 값
하루 표준편차 2.29%
1년 변동성 (× √365) 43.8%
가장 좋은 날 2026-02-06 +12.3%
가장 나쁜 날 2026-02-05 -14.0% (바로 전날)
오른 날 / 내린 날 314 / 323

8. 4단계 — 고점 대비 낙폭과 월별 수익률

python step4_drawdown_monthly.py

peak = p.cummax()   # 그날까지의 최고가
dd = p / peak - 1   # 고점 대비 낙폭

9. 5단계 — 0교시 복습: 원주가와 수정주가

python step5_googl_split.py

주 원주가(close) 수정주가(adjusted close)
2014-04-04 -51.3% -2.9%
2022-07-22 -95.2% -3.5%

원주가로 보면 폭락이지만, 실제로는 주식 분할입니다(2014년 1→2, 2022년 1→20). 수정주가로 보면 -40% 넘게 빠진 주는 0개입니다. 0교시에서 for 문으로 찾던 것을 판다스는 raw[raw < -0.40] 한 줄로 찾습니다. 2부 2-2강 '기업행사와 수정주가'에서 자세히 다룹니다.

10. 6단계 — 내 손으로 다시 짜기

step6_rebuild.py에는 주석만 있습니다. 목표 네 개를 맞추면 수업이 끝납니다.

목표 값
① 검증구간 보유 -11.5%
② 검증구간 1년 변동성 43.8%
③ 검증구간 최대낙폭 -53.1%
④ GOOGL 원주가 '폭락' 주 2개

막히면 answers/step6_answer.py를 봅니다. 정답은 9줄입니다. 보고 나서 다시 빈 파일에 처음부터 씁니다.

11. 오늘의 발견 — 거래량 칸의 함정

1단계 ③에서 거래량이 가장 컸던 날을 찾으면 2024-08-05, 거래량 약 2,122억이 나옵니다. 그런데 비트코인은 총 2,100만 개까지만 발행됩니다. 하루에 2,122억 개가 거래될 수는 없습니다.

df.loc["2024-12-20":"2024-12-25", "volume"]를 찍어 보면 이렇습니다.

날짜 거래량
2024-12-21 103,445,400,000 (약 1천억)
2024-12-22 60,172,030,000 (약 6백억)
2024-12-23 13,477
2024-12-24 13,355

2024-12-22까지와 2024-12-23부터 단위가 1천만 배 가까이 다릅니다. 앞쪽은 달러 금액이거나 여러 거래소를 합친 값, 뒤쪽은 한 곳의 비트코인 개수로 보입니다 [추정 — 자료 제공처 설명은 확인하지 못함]. 어느 쪽이든 한 칸 안에서 단위가 바뀐 자료입니다.

12. 면접 대비 / 현업 적용 체크리스트

면접 대비 - 질문 "판다스로 바꿨을 때 결과가 맞는지 어떻게 확인합니까?" - 답: 기존 방식으로 낸 숫자를 새 도구로 다시 냅니다. 이번 실습에서는 for 문으로 낸 -11.5%를 판다스 3줄로 똑같이 냈고, 하루 수익률을 곱해 다시 -11.5%로 검산했습니다. - 질문 "벤더 자료의 이상값을 어떻게 찾습니까?" - 답: 물리적 한계와 비교합니다. 비트코인 거래량이 총 발행 한도보다 크게 나오는 것을 보고, 날짜별로 찍어 2024-12-23에 단위가 바뀐 지점을 찾았습니다. 그 칸은 분석에 쓰기 전에 출처에 확인합니다.

현업 체크리스트 - [ ] 새 도구의 결과를 옛 결과와 맞춰 보았는가 - [ ] 날짜 순서를 정렬했는가 (파일은 최근이 위일 수 있다) - [ ] 연환산할 때 365와 252 중 맞는 것을 썼는가 - [ ] 한 칸 안에서 단위·출처가 바뀌는 지점이 없는가 - [ ] 원주가가 아니라 수정주가를 썼는가

13. 숙제

  1. 학습구간(2023~2024)의 1년 변동성과 최대낙폭을 구해, 검증구간과 비교해 한 줄로 쓰기.
  2. 거래량 칸을 2024-12-23 이후만 잘라 월별 합계를 구해 보기 (resample("ME").sum()).
  3. 다음 강 예고: 1-3강 — 그림으로 보기. 오늘 숫자(낙폭·월별 수익률)를 그래프로 그립니다.

14. 정답 (먼저 풀고 나서 보기) — 눌러서 펼치기
문제 정답
1단계 ① 2025-01-01 종가 94,383.59달러 (2강과 같음)
1단계 ② 몇 배 약 163만 배
1단계 ③ 거래량 최대 2024-08-05, 약 2,122억 → 11장의 함정
2단계 ① 시작일 2025-01-31 -18.4% (2강과 같음)
2단계 ② 2026-01-01 ~ 2026-10-17 보유 -8.1% (시작 88,738.34달러)
3단계 ① 하루 -5% 넘게 빠진 날 (검증) 12일
3단계 ② 학습구간 1년 변동성 48.6% → 검증(43.8%)보다 컸다
4단계 ① 학습구간 최대낙폭 -26.2% (바닥 2024-09-06)
4단계 ② 99번 산 이유 638일 중 585일이 고점 대비 -2% 아래 → 규칙이 거의 매일 팔고 다음 날 다시 삼
5단계 ① 전체 보유 (원주가 / 수정주가) +229% / +13,145% → 진짜 성과는 수정주가
5단계 ② 배당 있는 주 11번
6단계 -11.5% / 43.8% / -53.1% / 2개

자료: Alpha Vantage 비트코인/달러 일봉(2010-07-17 ~ 2026-10-17), GOOGL 주간 수정주가(2004-08-27 ~ 2026-10-15). 계산 확인: 2026-10-21 버디가 클라우드(pandas 3.0.5)에서 전 단계를 실행해 위 숫자와 일치함을 확인.

실습 파일 받기

받은 파일을 내 PC의 lesson03 폴더에 모읍니다(answers 폴더는 그 안에). 원자료 두 개는 각자 받습니다: get_data_btc.py(비트코인 일봉) · get_data.py(구글 주간) → 실습 폴더의 data에 넣기. 정답 파일은 먼저 풀고 나서 비교용으로만 봅니다. API 키는 남에게 보여 주지 마세요.

AI 이용 고지: 이 교재와 실습 파일은 AI(Claude, 버디)와 함께 만들었습니다. 숫자는 실제 자료와 첫 수강생(봉수 대표)의 PC에서 나온 그대로이며, 같은 코드로 누구나 다시 계산할 수 있습니다. 모든 매매 계산은 모의 계산이며 투자 권유가 아닙니다. 교재는 무료로 읽고 인쇄할 수 있습니다.