골드만삭스가 공개한 퀀트 코드,
어디까지 공짜로 쓸 수 있나
gs-quant라는 파이썬 라이브러리를 Apache-2.0으로 공개해 두었습니다(별 12,921개, 어제도 커밋). 다만 파생상품 가격 계산과 시장 데이터 조회는 골드만 서버 접근 권한이 필요하고, 키 없이 바로 쓸 수 있는 건 통계·리스크 계산 함수들입니다. 그 함수들이 뭘 하는지, 그리고 실제 종목 13개에 적용하면 무엇이 달라지는지 아래에 정리했습니다.
1. 무엇을 공개했나, 확인한 사실
GitHub API로 직접 조회한 값입니다(2026년 9월 10일 기준).
| 항목 | 값 | 의미 |
|---|---|---|
| 조직 계정 | github.com/goldmansachs | 2011년 12월 개설, 공개 저장소 73개 |
| 대표 프로젝트 | gs-quant | "Python toolkit for quantitative finance" |
| 별(스타) | 12,921 | 포크 1,748 · 열린 이슈 73 |
| 라이선스 | Apache-2.0 | 상업적 이용·수정·재배포 허용 (저작권 표시 유지 조건) |
| 공개 시점 | 2018-12-14 | 7년 이상 유지된 프로젝트 |
| 최근 커밋 | 2026-09-09 | 지금도 관리되는 살아있는 코드 |
| 공식 태그 | derivatives · risk-management · trading-strategies | 저장소가 스스로 밝힌 용도 |
2. 키가 필요한 것과 필요 없는 것
이게 이 글에서 가장 실용적인 부분입니다. gs_quant 폴더를 열어 모듈을 확인하고, 각 파일이 골드만 서버를 호출하는지 소스에서 직접 확인했습니다.
| 모듈 | 키 | 내용 |
|---|---|---|
| timeseries/statistics.py | 불필요 | 표준편차·분산·공분산·z점수·윈저라이즈·백분위 |
| timeseries/econometrics.py | 불필요 | 수익률·변동성·상관계수·베타·샤프비율·최대낙폭 |
| timeseries/technicals.py | 불필요 | 이동평균·볼린저밴드·RSI·MACD·계절조정 |
| timeseries/algebra.py | 불필요 | 시계열 사칙연산·필터·시프트 |
| timeseries/backtesting.py | 불필요 | 바스켓 구성·리밸런싱 시뮬레이션 |
| timeseries/measures*.py | 필요 | 골드만 마켓 데이터 조회 (파일 하나가 241KB에 달함) |
| instrument / risk / markets | 필요 | 파생상품 가격·리스크 계산 (골드만 엔진 호출) |
GsSession·get_session·requests. 호출을 검색한 결과 모두 0건이었고, import 목록도 numpy·pandas·scipy·statsmodels뿐이었습니다. 즉 구조상 서버 없이 도는 계산 코드입니다. 다만 저희가 라이브러리를 설치해 실행까지 해본 것은 아니며, 아래 적용 결과는 같은 정의를 직접 구현해 계산했습니다.3. 키 없이 오늘 쓸 수 있는 함수 5개
winsorize(), 극단값이 통계를 지배하지 못하게
수익률 데이터에서 며칠의 폭등·폭락이 평균과 변동성을 통째로 왜곡하는 일이 흔합니다. 이 함수는 평균에서 ±2.5 표준편차를 넘는 값을 그 경계로 잘라냅니다(기본값). 데이터를 버리지 않고 영향력만 줄이는 방식입니다.
zscores(), 서로 다른 종목을 같은 자로 재기
하루 20% 움직이는 소형주와 2% 움직이는 대형주를 같은 기준으로 비교하면 답이 안 나옵니다. z점수는 (값 − 평균) ÷ 표준편차로 표준화해, "이 종목 기준으로 얼마나 이례적인 움직임인가"를 재게 해줍니다.
volatility(), 위험을 숫자 하나로
일간 수익률의 표준편차에 √252(연간 거래일)를 곱해 연율 변동성을 냅니다. 같은 수익률이라도 이 숫자가 크면 훨씬 험한 길을 지나온 것입니다.
max_drawdown(), 버텨야 했던 최악의 구간
기간 중 고점 대비 가장 깊었던 하락폭입니다. 수익률 표에는 절대 안 나오지만 실제로 사람을 무너뜨리는 숫자가 이겁니다.
bollinger_bands(), relative_strength_index() 같은 익숙한 기술적 지표들
볼린저밴드·RSI·MACD·이동평균도 technicals.py에 들어 있습니다. 차트 프로그램 없이 코드로 같은 값을 계산할 수 있습니다. 차트 기초 사전에서 이 지표들이 무엇을 뜻하는지 그림으로 볼 수 있습니다.
4. 실제로 적용해봤습니다. 종목 13개
저희가 추적하는 AI 공급망 종목 13개에, 위 정의 그대로 연율 변동성 · 위험조정 수익률 · 최대낙폭을 계산했습니다. 가격은 야후 파이낸스 일별 종가, 기간은 각 종목이 저희 데이터에 처음 등장한 날부터 2026년 9월 8일까지입니다.
| 종목 | 총수익률 | 연율 수익률 | 연율 변동성 | 위험조정 | 최대낙폭 |
|---|---|---|---|---|---|
| SNDK | +617.3% | 1056.2% | 115.3% | 9.16 | −56.5% |
| SIVE | +695.8% | 1644.1% | 189.5% | 8.68 | −78.3% |
| MU | +531.6% | 566.1% | 81.2% | 6.97 | −39.1% |
| LITE | +514.3% | 674.0% | 100.1% | 6.73 | −42.8% |
| IQE | +359.3% | 927.6% | 150.8% | 6.15 | −49.2% |
| AXTI | +430.1% | 879.2% | 162.9% | 5.40 | −73.7% |
| AAOI | +305.9% | 530.1% | 148.9% | 3.56 | −65.7% |
| NBIS | +349.0% | 268.0% | 108.6% | 2.47 | −48.3% |
| MTSI | +67.6% | 114.5% | 65.3% | 1.75 | −44.2% |
| COHR | +103.9% | 146.8% | 87.5% | 1.68 | −48.0% |
| JBL | +52.6% | 71.0% | 47.0% | 1.51 | −25.5% |
| NVDA | +33.9% | 29.4% | 36.7% | 0.80 | −20.2% |
| POET | +32.2% | 44.3% | 152.5% | 0.29 | −69.0% |
위험조정 = 연율 수익률 ÷ 연율 변동성 (무위험수익률 0 가정). 위험조정 높은 순 정렬.
여기서 드러난 것 세 가지
- 1등이 바뀝니다. 총수익률 1위는 SIVE(+695.8%)인데, 위험을 나눠 보면 SNDK가 1위가 됩니다. SIVE는 같은 수익을 내기 위해 훨씬 험한 길을 지나왔습니다.
- POET는 함정입니다. 총수익률 +32.2%로 플러스지만, 변동성 152.5%에 최대낙폭 −69.0%. 조금 벌자고 크게 흔들린 경우이고, 위험조정 0.29로 13개 중 꼴찌입니다.
- 가장 안 흔들린 종목은 NVDA였습니다. 변동성 36.7%, 최대낙폭 −20.2%로 둘 다 최소입니다. 수익률은 가장 낮지만, 끝까지 들고 있기 가장 쉬웠던 종목이기도 합니다.
5. 직접 시작하려면
파이썬이 설치돼 있다면 설치는 한 줄입니다.
# 설치
pip install gs-quant
# 키 없이 되는 계산 예시
import pandas as pd
from gs_quant.timeseries import volatility, max_drawdown, winsorize, zscores
prices = pd.Series(...) # 종가 시계열 (야후 파이낸스 등에서)
vol = volatility(prices) # 연율 변동성
mdd = max_drawdown(prices)# 최대낙폭
z = zscores(prices) # 표준화 점수
measures 계열 함수를 호출하면 인증을 요구합니다. 그건 골드만 마켓 데이터 구독 고객용이며, 개인이 무료로 얻을 수 있는 경로는 저희가 확인한 범위에서는 없습니다.
6. 주의할 점
AI 공급망 종목의 언급 데이터에 변동성·낙폭까지 붙여 매주 정리합니다. 데일리 브리핑은 무료입니다.
데일리 브리핑 보기 (무료)