CHAPTER 09.3 / EXAMPLE CHECK
9.3 Long-Short Python 예제를 점검하고 교정하기
38종목의 rank 1–21 숏·22–38 롱 선택과 -10.5263% 순노출을 19/19로 교정하고, 11개 연구 계약과 비용 후 1.432509%를 점검합니다.
9.3 Long-Short Python 예제를 점검하고 교정하기
Python(파이썬)으로 작성된 가상 Long-Short(롱·숏) 예제를 읽는다. 핵심 질문은 하나다. 38종목에서
rank < 22를 숏으로 둔 한 줄이 실제로 어떤 순위를 선택하고, 어떤 노출과 비용을 만드는가?
순위 방향부터 고정한다
이 사례는 같은 날짜의 38종목에 1위부터 38위까지 중복 없는 순위를 붙인다. 순위 숫자가 작을수록 상위이고, rank < 22인 종목을 Short position(숏 포지션), 나머지를 Long position(롱 포지션)으로 둔다. 방향을 반대로 읽으면 선택 종목과 전략 의미가 모두 뒤집힌다.
| 조건 | 선택 순위 | 포지션 | 종목 수 |
|---|---|---|---|
rank < 22 | 1위–21위 | Short position(숏 포지션) | 21개 |
rank가 22 이상 | 22위–38위 | Long position(롱 포지션) | 17개 |
손으로 세면 숏은 개이고 롱은 개다. 각 신호를 전체 종목 수 38로 나눠 절대 비중을 로 두면 다음 노출이 된다.
- 원래 임계값 방식의 Long exposure(롱 노출)
- 단위: 소수 비중과 퍼센트
- 원래 임계값 방식의 Short exposure(숏 노출) 절댓값
- 단위: 소수 비중과 퍼센트
- 원래 임계값 방식의 Gross exposure(총노출)
- 단위: 소수 비중과 퍼센트
- 원래 임계값 방식의 Net exposure(순노출)
- 단위: 소수 비중과 퍼센트
순노출을 구하는 목적
순노출은 롱과 숏 중 어느 방향의 금액 노출이 더 큰지 확인하는 값이다. 기존 구성은 롱 44.7368%, 숏 55.2632%이므로 순노출이 -10.5263%다. 투자금 100원을 기준으로 해석하면 숏 노출이 롱 노출보다 약 10.53원 큰 상태다.
이 값을 확인해야 전략 수익이 종목 순위 선택에서 나온 것인지, 시장이 하락할 때 더 큰 숏 노출이 이익을 만든 것인지 구분할 수 있다. 순노출 0%는 롱과 숏의 금액만 균형이라는 뜻이며, Beta(베타)·산업·팩터 위험까지 중립이라는 뜻은 아니다.
이 금액 쏠림을 제거하는 교정안은 순위 기준을 rank < 20으로 바꾼다. 그러면 전체 38종목의 절반인 1–19위 19종목은 숏, 20–38위 19종목은 롱으로 자동 선택된다. 이어 롱 19종목의 비중 합계를 +50%, 숏 19종목의 비중 합계를 -50%로 맞춘다. 각 종목에는 절대 비중 약 2.6316%를 동일하게 배정한다.
- 교정 후 포트폴리오에서 번째 종목에 배정된 비중의 절댓값. 실제 비중은 롱 약 +2.6316%, 숏 약 -2.6316%다.
- 단위: 소수 비중과 퍼센트
- 교정된 Long exposure(롱 노출)
- 단위: 소수 비중과 퍼센트
- 교정된 Short exposure(숏 노출) 절댓값
- 단위: 소수 비중과 퍼센트
- 교정된 Net exposure(순노출)
- 단위: 소수 비중과 퍼센트
공매도에서는 주식을 먼저 빌린다
Stock borrowing(주식 차입)은 공매도할 주식을 빌리는 과정이다. 이 문맥에서 차입은 현금을 빌린다는 뜻이 아니다. C를 -50% 숏으로 보유하려면 다음 순서가 필요하다.
- C 주식을 빌린다.
- 빌린 C 주식을 시장에서 매도해 숏 포지션을 만든다.
- 기간이 끝나면 C 주식을 다시 매수한다.
- 매수한 C 주식을 빌려준 곳에 돌려주고, 빌린 기간의 Stock borrow cost(주식 차입비용)를 낸다.
Annual stock borrow rate(연 주식 차입 비용률) 12%는 한 기간에 12%를 낸다는 뜻이 아니다. 아래 계산에서는 1년을 252개 거래기간으로 나눠 한 기간의 비용률로 바꾼 뒤, 실제로 주식을 빌린 숏 노출 50%에만 적용한다.
같은 A·C 거래에서 비용까지 뺀다
9.1과 9.2의 가상 거래를 그대로 쓴다. 리밸런싱 전 A +20%, B -10%에서 목표 A +50%, C -50%로 바꿔 Turnover(회전율)는 90%다. A +2%, C -1%이므로 비용 전 수익률은 1.5%다. Commission(수수료) 2bp와 Slippage(슬리피지) 3bp, Annual stock borrow rate(연 주식 차입 비용률) 12%, 연 252기간을 적용한다.
일반적인 한 기간 비용 후 수익률 계약은 다음과 같다.
- 기간 Trading cost(거래비용률)
- 단위: 기간당 소수 수익률
- Turnover(회전율)
- 단위: 소수 비중
- Commission(수수료)
- 단위: Basis point(베이시스 포인트)
- Slippage(슬리피지)
- 단위: Basis point(베이시스 포인트)
- 기간 Stock borrow cost(주식 차입비용)
- 단위: 기간당 소수 수익률
- 기간 Short exposure(숏 노출)
- 단위: 소수 비중
- Annual stock borrow rate(연 주식 차입 비용률)
- 단위: 연간 소수 비율
- Periods per year(연간 관측 수)
- 단위: 기간/년
- 기간 비용 전 수익률
- 단위: 기간당 소수 수익률
- 기간 비용 후 수익률
- 단위: 기간당 소수 수익률
rank 임계값 방식
숏 1–21위 · 롱 22–38위
롱 17 · 숏 21
순노출 -10.5263%
19/19 교정
롱 비중 합계 +50% · 숏 비중 합계 -50% · 종목당 절대 비중 2.6316%
롱 19 · 숏 19
순노출 0.0000%
- 회전율
- 90.00%
- 거래비용
- 0.045000%
- 차입비용
- 0.022491%
- 비용 전 수익률
- 1.500000%
- 비용 후 수익률
- 1.432509%
순위, 비중, 수익률과 비용은 교육용 가상 자료이며 실제 전략 성과가 아닙니다.
이 계산이 말할 수 없는 것
- 19/19 교정은 순노출만 0으로 맞춘다. Beta·산업·팩터 중립이나 미래 수익을 보장하지 않는다.
- 비용 후 1.432509%는 한 가상 기간의 산술 결과다. 실제 대차료는 달력일, 종목별 차입 가능성, 계약과 회수 조건에 따라 달라진다.
이해 점검
38종목에서 rank < 22가 실제로 선택하는 숏과 롱 순위는 무엇인가?
숏은 1위부터 21위까지 21개, 롱은 22위부터 38위까지 17개다. 이 사례는 순위 숫자가 작을수록 상위라는 방향을 먼저 고정한다.
교정안은 사람이 19종목씩 고르는 방식인가?
아니다. 순위 기준을 rank < 20으로 바꾸면 1–19위는 숏, 20–38위는 롱으로 자동 선택되어 각각 19종목이 된다.
각 종목 절대 비중을 1/38로 두면 원래 구성과 교정된 19/19 구성의 노출은 어떻게 다른가?
원래 구성은 롱 44.7368%, 숏 55.2632%, 순노출 -10.5263%다. 교정 구성은 양쪽 50%로 순노출 0%다.
회전율 90%, 거래비용 0.045%, 차입비용 약 0.022491%와 비용 전 수익률 1.5%에서 비용 후 수익률은 얼마인가?
다. 거래비용과 차입비용을 실제 기간수익률에서 모두 차감한다.
완료 기준
다음을 직접 수행하면 9.3을 마친 것이다.
- 38종목의
rank < 22에서 숏 1–21위 21개와 롱 22–38위 17개를 표시한다. rank < 20에서 숏 1–19위와 롱 20–38위가 각각 19종목으로 자동 선택되는지 확인한다.- 원래 롱 44.7368%, 숏 55.2632%, 순노출 -10.5263%와 교정된 19/19의 순노출 0%를 계산한다.
- 회전율 90%, 거래비용 0.045%, 차입비용 약 0.022491%와 비용 후 수익률 약 1.432509%를 재현한다.
이 페이지의 38종목 순위, A·B·C 비중, 수익률, Beta와 비용은 코드 점검 절차를 익히기 위한 가상 자료다. 실제 종목군, 전략 성과, 차입 가능성, 수익 또는 투자 적합성을 나타내거나 예측하지 않는다. 다음 페이지에서는 기간 단위가 섞인 Sharpe 계산을 별도로 점검한다.