사람들은 자동화된 외환 거래 수수료 계산기에 숫자를 입력할 때 내부적으로 어떤 일이 일어나는지 자주 묻습니다. 이 게시물은 Python을 사용하여 동일한 근본적인 계산 엔진을 처음부터 구축함으로써 이에 답합니다.
아래의 공식들은 기관 및 리테일 시장 전반에서 사용되는 표준 수학적 모델을 나타냅니다. 예시의 가격들은 라이브 API 견적이 아닌 설명용 정적 수치입니다.
거래의 세 가지 비용
국제결제은행(BIS)과 같은 기관이 추적하는 외환 거래량 데이터에 따르면, 리테일 통화 거래량은 딜러 네트워크와 ECN 장소 모두에서 계속 증가하고 있습니다. 이러한 네트워크 전반에서 실행되는 모든 거래는 최대 세 가지의 개별 비용을 수반합니다:
- 스프레드(Spread): 매수호가(bid)와 매도호가(ask) 사이의 간격입니다. 트레이더는 주문을 실행하는 바로 그 순간 이 비용을 지불합니다.
- 수수료(Commission): 로트당 고정 수수료로, 주로 원화 또는 ECN 스타일 계좌에 부과됩니다. 브로커들은 보통
Pip 값은 포지션의 로트 크기와 견적 통화(쌍에서 두 번째 통화)에 전적으로 달려 있습니다. 표준 로트 하나는 기본 통화의 10만 단위를 의미합니다. 모든 것을 깔끔하게 USD로 보고하기 위해, 아래 코드는 작은 정적 비율 사전(dictionary)을 활용하여 견적 통화를 변환합니다. 데이터 구조는 표준 Python dataclasses를 사용하여 구성했습니다:
from dataclasses import dataclass
# 아래 예시들을 위한 설명용 정적 가격입니다.
...
가장 주의해야 할 부분은 to_usd 함수입니다. 예를 들어 GBPJPY와 같은 쌍의 경우, 견적 통화는 엔(Yen)입니다. 코드는 사전에서 USDJPY를 찾아 수학적으로 역변환합니다. 실제 서비스에 사용할 계산기는 정적 사전을 사용하는 대신 거래소 API를 통해 실시간 견적을 가져올 것입니다.
2단계: 비용 공식
Pip 값을 설정했으므로, 각 특정 비용을 계산하는 것은 단 하나의 산술 연산만 필요합니다:
- 스프레드 비용 (Spread cost) = 스프레드(pips) × Pip 값
- 수수료 (Commission) = 로트당 수수료 × 로트 수
- 스왑 비용 (Swap cost) = 밤당 스왑(pips) × Pip 값 × 청구된 밤 수
총 비용은 이 세 가지의 합계와 같습니다. 그 총 비용을 Pip 값으로 나누면
주말에는 자체적인 스왑(rollover) 실행이 없습니다. 이를 보상하기 위해 브로커들은 지정된 평일(거의 항상 수요일)에 '트리플 스왑(triple swap)'을 부과하여 토요일과 일요일을 거치는 정산 롤오버를 반영합니다. 위에서 정의한 rollovers 함수는 이 두 가지 조건을 모두 처리합니다.
화요일에 개설된 거래를 3일 동안 보유하면 화요일, 수요일(세 번 계산됨), 목요일—총 5박의 스왑 비용이 발생합니다.
반대로, 금요일에 개설된 거래를 5일 동안 보유하면 금요일 밤을 지나 토요일과 일요일은 완전히 건너뛰고 월요일과 화요일에 걸쳐—총 단지 3박만 발생합니다. 테스트 실행에서 rollovers(5, 4)는 3을 반환합니다.
브로커들은 일반적으로 스왑 금리를 부호가 있는 값으로 인용하며, 음수 수치는 차변(debit)을 나타냅니다. 이 코드는 비용이 양의 비용으로 기록되고 이자 크레딧은 순 수수료를 줄이도록 부호를 반전시킵니다.
계산 예시 (Worked Examples)
다음은 Python 스크립트가 출력하는 정확한 숫자들입니다. 각 계산을 수동으로 검증할 수 있습니다.
1. 일반 계좌: EUR/USD, 1랏(lot), 1.2핍(pip) 스프레드
- 핍 가치: $10.00
- 스프레드 비용: 1.2 × 10 = $12.00
- 총계: $12.00, 손익분기점(break-even) 1.2핍 (총 거래 가치의 0.0109%)
2. ECN 계좌: EUR/USD, 1랏(lot), 0.1핍 스프레드, $7 왕복 수수료(round-turn commission)
- 스프레드 비용: 0.1 × 10 = $1.00
- 수수료: $7.00
- 총계: $8.00, 손익분기점 0.8핍 (총 거래 가치의 0.0073%)
이 시나리오에서는 ECN 계좌가 더 저렴하게 운영되는데, 이는 거래량의 전체 1.0랏을 실행할 때 일반적입니다. 이 스프레드 우위는 브로커가 최소 티켓 수수료를 부과하는 경우 분수 마이크로랏(fractional micro-lots)에서는 상당히 줄어듭니다.
3. GBP/JPY: 0.5랏, 1.5핍 스프레드, 밤당 -0.8핍 스왑, 화요일부터 3일 보유
- 핍 가치: 100,000 × 0.01 × 0.5 ÷ 150 = $3.33
- 스프레드 비용: 1.5 × 3.33 = $5.00
- 스왑: 0.8 × 3.33 × 5박 = $13.33
- 총계: $18.33, 손익분기점 5.5핍
이 스윙 시나리오에서는 보유 비용(holding costs)이 초기 스프레드보다 커집니다. 이는 오버나잇 지수(rollover rates)가 장기적인 포지션 보유 전략을 결정하는 반면, 단기 인트라데이 스캘핑에는 미미한 영향을 미치는 이유를 보여줍니다.
계산기가 누락하는 것들
실제 시장 실행 비용을 변화시키는 몇 가지 변수들은 정적 스크립트에 하드코딩할 수 없습니다:
- 변동성 및 유동성 급등: 티어 1(Tier-1) 거시 경제 발표 시점과 매일 오후 5:00 EST 오버나잇 지수 기간 동안 스프레드가 빠르게 확대됩니다. 이 스크립트의 입력값들은 보장된 체결(guaranteed fills)이라기보다는 중앙값 평균을 나타냅니다.
- 브로커 반올림: 브로커리지 플랫폼은 내부 파이프(pip) 분수와 일일 이자 차감액을 다르게 반올림하여, 수동 계산과 비교했을 때 소액의 센트 단위 불일치를 만듭니다.
- 스왑 프리 계좌: 이슬람 또는 스왑 프리 계좌는 변동 이자 차감액 대신 고정된 관리 수수료로 대체하거나 특정 조건 하에서 야간 보유 비용을 제거합니다.
이러한 변수들을 라이브 인터페이스에서 평가하려면, 브라우저 기반의 BrokerCatalogue 외환 거래 수수료 계산기를 사용하십시오. 이 도구는 통화쌍(pair), 포지션 규모(position sizing), 계좌 구조, 스프레드, 커미션, 스왑 금리를 직접 처리하여 순 비용(net cost), 백분율 영향(percentage impact), 그리고 필요한 손익분기점 파이프 거리(required break-even pip distance)를 표시합니다.
사용해보기
파이썬 스크립트를 복사하고, RATES 딕셔너리를 현재 시장 견적값으로 구성한 다음, 브로커가 발표한 일정에 따라 trading_cost 함수를 실행하여 여러 플랫폼의 수수료 프로필을 비교해보세요.