
최근 X(트위터) 피드에서 핫하게 주목을 받고 있는 내용이 있습니다. 바로 골드만 삭스가 공식적으로 공개한 "gs-quant" 인데요, 이것을 처음 보면 “골드만삭스가 자동매매 코드를 공개한 것인가?”라는 생각이 들 수 있습니다. 하지만 공개 저장소를 직접 확인해 보면 이 프로젝트는 2026년에 갑자기 나온 비밀 전략이 아닙니다. GitHub 저장소는 2018년 12월부터 공개돼 있었고, 공식 설명도 이를 골드만삭스의 퀀트 개발자들이 만든 quantitative finance용 Python toolkit으로 소개합니다.
그렇다고 개인 투자자에게 볼 가치가 없다는 뜻도 아닙니다. 오히려 흥미로운 부분은 특정 매수 신호보다 전략을 작은 부품으로 나누고, 비용과 위험을 처음부터 모델에 넣고, 같은 규칙을 백테스트로 검증하는 구조에 있습니다. 최근 2.0 계열에서는 공식 저장소 자체에 MCP와 agent용 skill 계층도 추가됐습니다. 이번 글에서는 “골드만의 비법”이 아니라, 공개된 구조에서 초보 퀀트 투자자와 자동매매 개발자가 실제로 가져갈 만한 설계 원칙을 정리해 보겠습니다.

먼저, 개인 투자자가 얻는 것과 얻지 못하는 것을 나눠보면
| 가져갈 수 있는 것 | 그대로 얻는 것은 아닌 것 |
|---|---|
| Trigger · Action · Strategy · Engine을 분리하는 설계 방식 | 골드만삭스의 비공개 알파나 종목 추천 전략 |
| 일부 standalone 통계·시계열 도구와 공개 코드 | 기관 고객용 Goldman API·데이터에 대한 자동 접근 |
| 거래비용·위험·거래내역을 함께 보는 백테스트 사고방식 | 설치만 하면 동작하는 개인용 실전 자동주문 시스템 |
| MCP를 통해 금융 도구를 AI agent에 연결하는 공개 실험 구조 | LLM이 곧바로 증권사 주문을 자율 실행한다는 보장 |
gs-quant를 설치한다고 골드만 데이터가 열리는 것은 아닙니다
공식 README는 GS Quant를 트레이딩 전략 개발, 파생상품 분석, 위험관리, 통계 분석 등에 활용할 수 있는 툴킷으로 설명합니다. 동시에 API에 접근하려면 client id와 secret이 필요하며, 이는 골드만삭스의 기관 고객에게 제공된다고 명시합니다.
따라서 pip install gs-quant만으로 골드만의 proprietary data나 내부 시스템이 열리는 것은 아닙니다. 반면 공식 개발자 문서에는 별도 API 인증 없이 실행할 수 있는 일부 standalone 시계열 예제도 있습니다. 개인 개발자 입장에서는 “전체 플랫폼에 접근한다”기보다 공개된 Python 구조와 일부 분석 기능을 학습하고 활용한다고 이해하는 편이 정확합니다.
1. Trigger와 Action을 분리합니다: '언제'와 '무엇을'을 따로 생각하기
gs-quant의 공식 백테스트 가이드는 구조를 매우 명확하게 설명합니다. Trigger는 언제 행동할지, Action은 무엇을 할지를 정의하고, Strategy가 이들을 묶습니다. Engine은 정해진 기간을 따라가며 조건을 평가하고 포지션·위험·손익을 계산합니다.
이 분리는 골드만삭스만의 비밀 설계라기보다 자동매매 시스템을 정돈하기 위한 기본적인 소프트웨어 설계 원칙에 가깝습니다. 그래도 처음 직접 로직을 만들 때는 상당히 유용합니다. 예를 들어 “20일 이동평균이 60일 이동평균을 넘으면 10% 매수”라는 문장을 한 함수에 모두 넣는 대신, 신호 판단과 주문 의도를 나누면 나중에 위험 조건이나 포지션 크기를 바꾸기가 쉬워집니다.
2. 좋은 자동매매는 '매수 신호'보다 '지금 매수해도 되는가'를 따로 봅니다
공개 소스에는 시장 데이터 기준의 MktTrigger, 전략 위험 수준을 보는 StrategyRiskTrigger, 여러 조건을 AND·OR 방식으로 묶는 AggregateTrigger 등이 있습니다. 즉 “가격 조건이 맞으면 매수” 하나로 끝내지 않고 여러 조건을 함께 평가할 수 있도록 설계돼 있습니다.
개인 투자자용으로 번역하면 Signal + Risk Filter + State입니다. 같은 신호가 발생해도 이미 보유 중인지, 포트폴리오 손실이 너무 커지지 않았는지, 한 종목 비중이 상한을 넘지 않는지에 따라 행동은 달라질 수 있습니다. 자동매매를 처음 만들 때 가장 놓치기 쉬운 부분이 바로 이 “현재 상태”입니다.
3. 무엇을 살지뿐 아니라 '얼마나 살지'도 전략입니다
Action에는 단순 거래 추가뿐 아니라 AddScaledTradeAction, EnterPositionQuantityScaledAction, RebalanceAction 같은 형태도 존재합니다. 이는 같은 매수 신호라도 포지션 크기와 자본 배분을 별도 규칙으로 다룰 수 있다는 점을 보여 줍니다.
초보 자동매매에서는 종목 선택과 진입 시점에만 집중하기 쉽지만, 실제 손익의 변동성은 얼마를 배분했는지에 크게 좌우됩니다. 고정 수량이든 목표 비중이든, 포지션 크기를 별도의 명시적 규칙으로 만들어 두는 것이 중요합니다.
4. 거래비용은 마지막에 빼는 숫자가 아니라 처음부터 모델의 일부입니다
gs-quant의 공개 backtest source에는 ConstantTransactionModel, ScaledTransactionModel, AggregateTransactionModel이 있고, Action에는 진입과 청산의 transaction cost를 붙일 수 있습니다. 결과 요약에도 Transaction Costs가 별도 항목으로 포함됩니다.
이 점은 개인 투자자에게 특히 중요한 교훈입니다. 수수료가 낮더라도 잦은 매매에서는 누적 비용이 커지고, 실제 체결에서는 호가 스프레드와 slippage가 발생할 수 있습니다. 백테스트가 끝난 뒤 수익률에서 임의의 비용을 한 번 빼는 것보다 거래가 발생할 때마다 비용을 함께 계산하는 구조가 현실에 더 가깝습니다.
5. 최종 수익률 하나만 보면 백테스트를 잘못 읽기 쉽습니다
현재 공개 코드의 performance summary에는 Total PnL뿐 아니라 Total Transaction Costs, Total Trades, Annualised Return과 Volatility, Sharpe Ratio, Sortino Ratio, Max Drawdown, Drawdown Duration, Calmar Ratio, Current Drawdown 등이 포함됩니다. 또한 trade ledger를 통해 어떤 거래가 언제 발생했는지도 추적할 수 있습니다.
개인 투자자용 시스템에서도 같은 사고방식이 필요합니다. 예를 들어 두 전략이 최종 수익률은 비슷해도 한쪽이 훨씬 큰 최대낙폭(MDD)을 경험했거나 거래 횟수가 지나치게 많다면 실제 운용 난이도는 전혀 다를 수 있습니다. 수익·위험·비용·거래횟수·거래기록을 같이 보는 것이 백테스트 평가의 기본이 됩니다.
6. 로그와 상태를 남겨야 같은 전략을 다시 검증할 수 있습니다
gs-quant의 Backtest 객체는 결과 요약과 거래 기록을 분리해 다룹니다. 이를 개인 자동매매 시스템으로 확장해 생각하면, 단순히 “매수했다”는 결과만 저장하기보다 어떤 데이터와 조건 때문에 진입했는지, 당시 보유 상태와 위험 값은 어땠는지, 비용은 얼마였는지를 함께 기록하는 편이 좋습니다.
여기서 영구 DB나 실시간 장애 복구 방식은 gs-quant 공개 백테스트 구조 그 자체라기보다 개인 실전 시스템으로 옮길 때 추가해야 할 설계입니다. 다만 같은 규칙을 재현하고 오류를 추적하려면 상태와 로그를 별도 계층으로 두는 것이 유용합니다.
gs-quant의 개념을 개인용 코드로 번역하면
| gs-quant 개념 | 개인 투자자 관점 | 최소 구현 예 |
|---|---|---|
| Trigger | 신호·위험 조건 | Boolean 함수 |
| Action | 주문 또는 리밸런싱 의도 | buy/sell/rebalance request |
| Strategy | 규칙들의 묶음 | Python object 또는 config |
| Engine | 과거 데이터 시뮬레이터 | historical loop / event runner |
| Transaction Model | 수수료·slippage 가정 | 거래별 비용 함수 |
| Result / Ledger | 성과와 감사 기록 | DataFrame + CSV/DB |
아주 단순한 교육용 예시로 구조만 만들어 보면
아래 조건은 수익성이 좋은 전략을 추천하기 위한 것이 아니라, 앞의 구조를 코드로 옮기기 전에 어떤 항목을 분리해야 하는지 보여 주기 위한 예시입니다.
- Trigger: MA20 > MA60이고 종가가 MA20 위에 있을 때
- Risk filter: 현재 미보유, 포트폴리오 drawdown이 -8%보다 양호, 해당 자산 목표 비중 10% 이하
- Action: 목표 비중 10%까지 매수
- Exit: 종가가 MA60 아래로 내려가거나 포트폴리오 drawdown이 -8% 이하가 되면 청산
- Record: 수수료, slippage, MDD, Sharpe, 총 거래 수, 진입·청산 이유
여기에는 일부러 백테스트 수익률이나 예쁜 누적수익 곡선을 넣지 않았습니다. 같은 규칙도 데이터 선택, 체결 가정, 비용, 검증 기간에 따라 결과가 크게 달라질 수 있기 때문입니다.
백테스트가 가장 쉽게 좋아 보이는 함정도 같이 확인해야 합니다
- Look-ahead bias: 장 마감 후 알 수 있는 값을 같은 날 이미 알고 거래한 것처럼 계산하지 않았는지
- Survivorship bias: 현재 살아남은 종목만 과거 데이터에 넣어 상장폐지 종목을 빠뜨리지 않았는지
- Overfitting / data snooping: 과거 데이터에 맞게 파라미터를 너무 많이 조정하지 않았는지
- Liquidity·slippage: 과거 종가에 원하는 수량이 전부 체결된다고 가정하지 않았는지
- Data delay와 빈도: 실제 시스템에서 얻는 데이터의 시점·빈도가 백테스트와 같은지
- Regime shift: 특정 시장 환경에서만 통했던 규칙을 모든 시기에 적용하지 않았는지
- Out-of-sample: 전략을 만든 데이터와 별도의 기간에서도 검증했는지
- Leverage·margin: 레버리지 전략이라면 실제 증거금과 강제청산 조건을 반영했는지
2026년 2.0에서 흥미로운 변화: 공식 MCP와 agent skill이 들어왔습니다
이번에 소스에서 직접 비교해 본 부분 중 가장 최근의 변화는 1.6.35에서 2.0.0으로 넘어갈 때입니다. 2026년 6월 4일 배포된 2.0.0의 diff에는 gs_quant/mcp/, MCP server/client와 tool registry, 그리고 gs_quant/skills/ 계열이 공식 저장소에 추가돼 있습니다.
특히 MCP README는 이 기능을 Experimental이라고 분명히 표시하고 있으며, FastMCP 기반 서버가 gs-quant 기능을 LLM agent와 다른 MCP client가 호출할 수 있는 tool로 노출한다고 설명합니다. 2.1.6 공개 소스에서 확인되는 MCP tool은 데이터 조회, MarketView dashboard·widget 조회, 사용자 정보 계열이 중심입니다.
따라서 이를 “AI가 골드만 MCP를 통해 바로 주식을 자동 주문한다”라고 설명하면 현재 공개 소스보다 훨씬 앞선 해석이 됩니다. 더 정확한 표현은 AI agent가 금융 데이터와 도구를 표준화된 방식으로 호출할 수 있도록 연결하는 실험적 계층에 가깝습니다.
AI를 붙인다면 분석과 주문 권한을 분리하는 편이 낫습니다
| AI가 맡기 좋은 영역 | 결정론적 규칙 코드가 맡을 영역 |
|---|---|
| 데이터 탐색과 리서치 요약 | 최대 포지션·손실 한도 확인 |
| 이상 현상 설명과 아이디어 후보 생성 | 주문 수량·가격·중복 주문 검증 |
| 분석 도구 호출과 결과 해설 | 실제 execution 허용 여부 결정 |
LLM은 자연어 이해와 탐색에는 편리하지만 출력이 항상 같은 방식으로 결정되는 시스템은 아닙니다. 특히 실제 돈이 움직이는 주문 단계에서는 “AI가 추천했으니 실행”보다 정해진 위험 한도와 주문 검증을 통과해야만 실행되도록 분리하는 편이 이해하기 쉽고 안전한 설계입니다.
정리: 배울 것은 '골드만의 종목 비법'보다 시스템을 나누는 방법입니다
gs-quant는 2018년부터 공개돼 온 퀀트 금융 툴킷이고, 설치만으로 골드만삭스의 기관 데이터나 비공개 전략을 사용할 수 있는 프로젝트는 아닙니다. 최근 2.0 계열에서 공식 MCP와 agent skill이 추가된 것은 분명 흥미로운 변화지만, 현재 공개 코드를 AI 자동주문 시스템으로 확대 해석할 근거도 확인되지 않았습니다.
개인 투자자가 가져갈 만한 부분은 오히려 더 기본적입니다. Trigger와 Action을 나누고, Risk와 State를 별도로 확인하고, Position Size와 Transaction Cost를 전략에 포함하고, 결과를 수익률 하나가 아니라 위험·비용·거래기록까지 함께 평가하는 것입니다. 이런 구조를 먼저 잡아 두면 특정 지표를 바꾸더라도 시스템 전체를 다시 짜지 않고 실험할 수 있습니다.
결국 gs-quant를 읽는 가장 현실적인 방법은 “골드만이 무엇을 사는지 찾는 것”보다 “규칙 기반 투자 시스템을 어떻게 구조화해 두었는지 배우는 것”에 가깝다고 생각합니다.