FinTech

Python : 주식 : 성공 횟수 계산 방법, 예제, 구현

StockAi 2023. 3. 8. 07:30

투자자 또는 거래자는 백테스트 기간 동안 성공적으로 거래된 수를 확인하여 투자 전략의 효과를 평가할 수 있습니다. 이 블로그 게시물에서는 성공 횟수와 Python을 사용하여 백테스트 결과로 읽는 방법에 대해 설명합니다.

 

Python : 주식 : 성공 횟수 계산 방법, 예제, 구현

 

성공 횟수

성공 횟수는 특정 기간 동안 실행된 수익성 있는 거래의 총 수를 의미합니다. 이 지표는 이익을 창출한 거래의 비율을 표시함으로써 투자 전략의 효과에 대한 통찰력을 제공할 수 있습니다.

예를 들어, 한 투자자가 백테스트 기간 동안 100개의 거래를 실행하고 그 중 60개가 수익성이 있다면 성공 횟수는 60회가 될 것입니다.

 

 

Python을 사용하여 성공 횟수를 백테스트 결과로 읽는 방법 

Python은 투자 데이터를 분석하고 투자 전략을 뒷받침하는 강력한 도구입니다. 이 섹션에서는 Python을 사용하여 백테스트 결과로 성공 횟수를 읽는 단계를 거칩니다.

 

 

1단계: 필요한 라이브러리를 가져옵니다 

첫 번째 단계는 필요한 라이브러리를 가져오는 것입니다. 우리는 판다 라이브러리를 사용하여 데이터를 로드하고 조작할 것입니다.

import pandas as pd

 

 

2단계: 데이터를 로드합니다 

다음 단계는 데이터를 로드하는 것입니다. 재고에 대한 과거 가격 데이터가 포함된 CSV 파일을 사용할 예정입니다. CSV 파일에는 날짜, 공개 가격, 높은 가격, 낮은 가격, 마감 가격 및 볼륨에 대한 열이 있어야 합니다.

data = pd.read_csv('stock_data.csv')

 

 

3단계: 거래 신호를 계산합니다 

다음으로, 백테스트 기간의 거래 신호를 계산하겠습니다. 거래 신호는 투자를 매수, 매도 또는 보유할 시기를 결정하는 데 사용되는 기준입니다. 단순 이동 평균 교차 전략을 예로 들어 보겠습니다.

이 전략에서는 20일 이동 평균과 50일 이동 평균을 계산합니다. 20일 이동 평균이 50일 이동 평균을 초과하면 구매 신호를 생성하고, 20일 이동 평균이 50일 이동 평균을 초과하면 판매 신호를 생성합니다.

data['20_day_ma'] = data['close'].rolling(window=20).mean()
data['50_day_ma'] = data['close'].rolling(window=50).mean()
data['signal'] = np.where(data['20_day_ma'] > data['50_day_ma'], 1, 0)
data['positions'] = data['signal'].diff()

 

 

4단계: 성공 횟수를 계산합니다 

거래 신호를 받으면 성공 횟수를 계산할 수 있습니다. diff() 함수를 사용하여 현재 위치와 전날 위치의 차이를 계산합니다. 양수 값은 매수 트랜잭션을 나타내고 음수 값은 매도 트랜잭션을 나타냅니다. 그런 다음 cumprod() 함수를 사용하여 각 거래에 대한 일일 수익의 누적 곱을 계산합니다. 값이 1보다 크면 거래가 성공했음을 나타내고 1보다 작으면 거래가 성공하지 않았음을 나타냅니다.

data['returns'] = data['close'].pct_change()
data['trade_returns'] = data['positions'] * data['returns']
data['success'] = data['trade_returns'].cumprod() > 1
number_of_successes = len(data[data['success']])

 

 

5단계: 결과를 시각화합니다 

결과를 시각화하기 위해 성공적인 거래와 실패한 거래의 비율을 보여주는 파이 차트를 만들 수 있습니다. matplotlib 라이브러리의 pie() 함수를 사용하여 차트를 만들 것입니다.

success_rate = number_of_successes / len(data)
plt.pie([success_rate, 1-success_rate], labels=['Successes', 'Failures'])
plt.title('Success Rate')
plt.show()

 

 

모든 것을 통합

다음은 Python을 사용하여 성공 횟수를 백테스트 결과로 읽기 위한 전체 코드입니다:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('stock_data.csv')

data['20_day_ma'] = data['close'].rolling(window=20).mean()
data['50_day_ma'] = data['close'].rolling(window=50).mean()
data['signal'] = np.where(data['20_day_ma'] > data['50_day_ma'], 1, 0)
data['positions'] = data['signal'].diff()

data['returns'] = data['close'].pct_change()
data['trade_returns'] = data['positions'] * data['returns']
data['success'] = data['trade_returns'].cumprod() > 1
number_of_successes = len(data[data['success']])

success_rate = number_of_successes / len(data)
plt.pie([success_rate, 1-success_rate], labels=['Successes', 'Failures'])
plt.title('Success Rate')
plt.show()

print(f"Number of Successes: {number_of_successes}")

 

 

이 코드는 주식에 대한 과거 가격 데이터를 로드하고, 거래 신호를 계산하고, 성공 횟수를 계산하고, 성공 및 실패한 거래의 비율을 보여주는 파이 차트를 만들고, 성공한 거래의 총 수를 출력합니다.

 

 

결론

이 블로그 게시물에서는 성공 횟수와 Python을 사용하여 백테스트 결과로 읽는 방법에 대해 설명했습니다. 이 게시물에 설명된 단계에 따라 백테스트 기간 동안 이루어지는 수익성 있는 거래의 비율을 계산하고 시각화하여 투자 전략의 효과에 대한 통찰력을 제공할 수 있습니다. 이 정보는 투자 전략을 평가하고 정보에 입각한 투자 결정을 내릴 때 매우 유용할 수 있습니다.