본문 바로가기
실버를 위한 코딩/파이썬 연습

[파이썬 연습] 주식 거래의 변동성 돌파 전략

by forSilver 2024. 8. 15.
반응형

주식 거래의 변동성 돌파 전략

변동성 돌파 전략을 구현하고 백테스팅하기 위한 파이썬 코드를 작성하고자 한다면, 여기에 표준 Python 라이브러리를 사용하여 삼성전자 주식 데이터에 적용할 수 있는 전체 코드 예시를 제공합니다. 이 예시는 pykrx 모듈을 사용하여 데이터를 불러오고, 변동성 돌파 전략을 구현하여 그 성과를 평가합니다.

완성된 파이썬 코드

# 필요한 라이브러리를 불러옵니다.
import pandas as pd
from pykrx import stock
import numpy as np

# 삼성전자의 주식 데이터를 2023년 1월 1일부터 2023년 12월 31일까지 불러옵니다.
start_date = '2023-01-01'
end_date = '2023-12-31'
df = stock.get_market_ohlcv_by_date(start_date, end_date, "005930")

# 데이터프레임의 인덱스를 날짜로 설정합니다.
df.reset_index(inplace=True)
df['date'] = pd.to_datetime(df['날짜'])
df.set_index('date', inplace=True)

# 변동성 돌파 전략의 매수 목표가를 계산합니다.
k = 0.5  # k 값은 변동성의 비율을 결정합니다.
df['range'] = df['고가'].shift(1) - df['저가'].shift(1)  # 전일 고가와 저가의 차이를 계산
df['target'] = df['종가'].shift(1) + df['range'] * k  # 매수 목표가를 계산

# 백테스팅을 위한 로직을 구현합니다.
df['return'] = np.where(df['시가'] > df['target'], df['종가'] / df['시가'], 1)  # 목표가 이상에서 시가로 매수하여 종가로 매도
df['cumulative_return'] = df['return'].cumprod()  # 누적 수익률을 계산

# 백테스팅 결과를 출력합니다.
print(df[['시가', '종가', 'range', 'target', 'return', 'cumulative_return']])

실행된 결과 화면

코드 설명

  • 데이터 불러오기: pykrx 라이브러리를 사용하여 2023년 한 해 동안의 삼성전자 주식 데이터를 불러옵니다. 이 데이터에는 시가, 고가, 저가, 종가가 포함되어 있습니다.
  • 변동성 돌파 전략 구현: 전일의 가격 변동폭을 기반으로 매수 목표가를 설정합니다. 이 목표가는 전일 종가에 전일 변동폭의 0.5배를 더한 값입니다.
  • 백테스팅: 매수 목표가를 다음 날 시가와 비교하여 시가가 매수 목표가 이상일 때 매수하고, 종가에서 매도합니다. 이를 통해 일별 수익률과 누적 수익률을 계산합니다.

이 코드를 통해 변동성 돌파 전략의 성능을 평가할 수 있으며, print 함수를 사용하여 각 날짜의 시가, 종가, 계산된 매수 목표가, 일별 수익률, 그리고 누적 수익률을 확인할 수 있습니다. 이러한 분석은 향후 전략의 조정과 최적화에 도움을 줄 수 있습니다.