반응형
주식 거래의 변동성 돌파 전략
변동성 돌파 전략을 구현하고 백테스팅하기 위한 파이썬 코드를 작성하고자 한다면, 여기에 표준 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
함수를 사용하여 각 날짜의 시가, 종가, 계산된 매수 목표가, 일별 수익률, 그리고 누적 수익률을 확인할 수 있습니다. 이러한 분석은 향후 전략의 조정과 최적화에 도움을 줄 수 있습니다.
'실버를 위한 코딩 > 파이썬 연습' 카테고리의 다른 글
다음 리스트(list)의 요소를 주어진 함수를 사용하여 나타내시오 (2) | 2024.09.25 |
---|---|
[파이썬] 파이썬 인터렉티브 셸 (100) | 2024.08.16 |
[파이썬 연습] 로깅과 어노테이션 (36) | 2024.08.14 |
[파이썬 연습] 어노테이션과 타입 힌트 (3) | 2024.08.13 |
[파이썬 연습] 파이썬 데코레이터 (0) | 2024.08.12 |