주식 분석 프로젝트 9편
전략의 실전 적용 가능성 검토 & 체결 시뮬레이션
📌 이번 실습 목표
- 전략이 실제 시장에서 실행 가능한지 점검
- 시장가/지정가/거래량 조건 등 체결 가능성 요소 분석
- 슬리피지, 수수료 반영 후 실수익률 시뮬레이션
🔍 왜 이 과정이 필요한가?
지금까지 우리는 종가를 기준으로 매매 전략을 설계하고 평가해왔습니다. 하지만 실제 시장에서는 다음과 같은 문제들이 존재합니다:
- 매수 시점의 가격이 생각보다 높아질 수 있음 (슬리피지)
- 지정가 주문은 체결되지 않을 수 있음
- 호가 단위, 거래량이 적으면 매매 지연 발생
따라서 실전 적용 전에 반드시 체결 가능성과 실제 수익 가능성을 검토해야 합니다.
🛠️ 슬리피지 적용한 전략 수익률 계산
시장가 매매 가정 시 체결가가 평균보다 높거나 낮게 체결된다고 가정하고, 슬리피지(0.1% 등)를 반영합니다.
def apply_slippage(df, slippage_rate=0.001):
df = df.copy()
df['Entry Price'] = df['Close'].shift(1) * (1 + slippage_rate * df['Position'].diff().clip(lower=0))
df['Exit Price'] = df['Close'].shift(1) * (1 - slippage_rate * df['Position'].diff().clip(upper=0))
df['Adjusted Return'] = 0
for i in range(1, len(df)):
if df['Position'].iloc[i] == 1 and df['Position'].iloc[i-1] == 0:
entry = df['Entry Price'].iloc[i]
elif df['Position'].iloc[i] == 0 and df['Position'].iloc[i-1] == 1:
exit = df['Exit Price'].iloc[i]
df.loc[df.index[i], 'Adjusted Return'] = (exit - entry) / entry
df['Cumulative Adjusted'] = (1 + df['Adjusted Return'].fillna(0)).cumprod()
return df
📉 거래량 기준 체결 가능성 판단
체결이 불가능할 수도 있는 조건:
- 하루 거래량 < 10만 주 이하인 종목
- 호가 간격이 커서 시장가 주문이 불리할 수 있는 경우
● 예시 필터링 코드
df = yf.download("005930.KS", period="1y")
if isinstance(df.columns, pd.MultiIndex):
df.columns = df.columns.get_level_values(0)
df = run_strategy(df)
df = apply_slippage(df, slippage_rate=0.001)
low_volume = df[df['Volume'] < 100000]
print(f"거래량 낮은 일 수: {len(low_volume)}일")
💵 수수료 및 세금 반영
commission = 0.0015 # 총 매매 수수료 0.15%
df['After Fee Return'] = df['Adjusted Return'] - commission
df['Cumulative Net Return'] = (1 + df['After Fee Return'].fillna(0)).cumprod()
📊 시각화 예시
import matplotlib.pyplot as plt
plt.figure(figsize=(14, 6))
plt.plot(df['Cumulative Adjusted'], label='슬리피지 적용')
plt.plot(df['Cumulative Net Return'], label='슬리피지+수수료 적용')
plt.legend()
plt.grid(True)
plt.title("전략 실수익률 비교")
plt.show()
✅ 오늘의 요약
- 실전 시장에서는 단순 백테스트보다 다양한 변수를 고려해야 함
- 슬리피지, 거래량 부족, 수수료/세금은 수익률에 큰 영향
- 실제 자동매매 이전 단계에서 이런 시뮬레이션은 필수
'Python' 카테고리의 다른 글
[주식 분석 프로젝트] 총정리 – 한국 주식 기반 기술적 분석 (2~7편 요약) (0) | 2025.04.29 |
---|---|
[주식 분석 프로젝트] 7편 – 전략 성과 평가: 수익률 vs 리스크 (0) | 2025.04.28 |
[주식 분석 프로젝트] 6편 – 전략 조건 최적화 실험 (0) | 2025.04.27 |
[주식 분석 프로젝트] 5편 – 전략의 종목별 확장 및 비교 (0) | 2025.04.26 |
[주식 분석 프로젝트] 4편 – 기술적 지표 전략 백테스팅 (0) | 2025.04.25 |