FinTech

Python : 거래 횟수 계산 방법, 예제, 구현

StockAi 2023. 3. 7. 07:30

투자자 또는 거래자는 백테스트 기간 동안 이루어진 거래 수를 살펴봄으로써 투자 전략의 효과를 평가할 수 있습니다. 이 블로그 게시물에서는 트랜잭션 수와 Python을 사용하여 백테스트 결과로 읽는 방법에 대해 설명합니다.

 

Python : 거래 횟수 계산 방법, 예제, 구현

 

트랜잭션 수

거래 건수는 특정 기간 동안 실행된 총 거래 건수를 말합니다. 이 지표는 투자 전략의 효과를 평가하는 데 사용할 수 있는 거래 활동의 빈도와 규모에 대한 통찰력을 제공할 수 있습니다.

예를 들어, 트랜잭션 수가 많으면 투자 전략이 매우 활성화되어 있음을 나타내고 트랜잭션 수가 적으면 해당 전략이 보다 수동적임을 나타낼 수 있습니다.

 

 

Python을 사용하여 트랜잭션 수를 백테스트 결과로 읽는 방법 

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

 

 

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

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

import pandas as pd
import matplotlib.pyplot as plt

 

 

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() 함수를 사용하여 현재 위치와 전날 위치의 차이를 계산합니다. 양수 값은 매수 트랜잭션을 나타내고 음수 값은 매도 트랜잭션을 나타냅니다.

number_of_transactions = len(data[data['positions'] != 0])

 

 

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

결과를 시각화하기 위해 시간 경과에 따른 트랜잭션 수에 대한 막대 차트를 만들 수 있습니다. 그래프를 만들기 위해 matplotlib 라이브러리의 bar() 함수를 사용합니다.

plt.bar(data.index, data['positions'])
plt.title('Number of Transactions')
plt.xlabel('Date')
plt.ylabel('Position')
plt.show()

 

 

모든 것을 통합하세요

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

import pandas as pd
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.rolling(window=50).mean()['close']
data['signal'] = np.where(data['20_day_ma'] > data['50_day_ma'], 1, 0)
data['positions'] = data['signal'].diff()

number_of_transactions = len(data[data['positions'] != 0])

plt.bar(data.index, data['positions'])
plt.title('Number of Transactions')
plt.xlabel('Date')
plt.ylabel('Position')
plt.show()

print(f"Number of Transactions: {number_of_transactions}")

 

 

이 코드는 주식에 대한 과거 가격 데이터를 로드하고, 거래 신호를 계산하고, 거래 수를 계산하고, 시간 경과에 따른 거래 수를 막대 차트로 만들고, 총 거래 수를 출력합니다.

 

 

결론 

이 블로그 게시물에서는 트랜잭션 수와 파이썬을 사용하여 백테스트 결과로 읽는 방법에 대해 설명했습니다. 이 게시물에 설명된 단계에 따라 백테스트 기간 동안 이루어진 트랜잭션 수를 계산하고 시각화하여 거래 활동의 빈도와 규모를 파악할 수 있습니다. 이 정보는 투자 전략을 평가하고 정보에 입각한 투자 결정을 내릴 때 매우 유용할 수 있습니다.