Execution Cost Audit
- 유틸리티
-
Carlos Macaya Rodriguez
I build tools for MetaTrader 5 — trade and risk management utilities, panels, and diagnostics that work with the terminal's own data. - 버전: 2.0
- 활성화: 10
거래에 실제로 얼마나 비용이 드는지 궁금했던 적이 있으신가요? Execution Cost Audit는 계좌에 이미 있는 청산 내역을 읽고 알려 드립니다. 각 체결 순간에 제시된 스프레드, 각 체결이 얼마나 미끄러졌는지, 그리고 그 위에 수수료와 스왑이 얼마를 더했는지. 미리 설치할 것도, 기다릴 것도 없습니다. 읽기만 할 뿐, 주문을 보내는 일은 절대 없습니다.
왜 만들었나
제 거래에 얼마가 들어가는지 알고 싶었는데, 찾아본 도구는 하나같이 같은 답을 내놓았습니다. 설치하고 몇 주 뒤에 다시 오라고요. 하지만 내역은 이미 제 계좌에 있었습니다. 모든 거래와 모든 가격이 함께요. 각 체결 순간의 스프레드는 브로커의 틱 아카이브에 있었습니다. 조각은 전부 있었는데, 아무도 맞추지 않고 있었을 뿐입니다.
그래서 그 일을 하는 것을 직접 만들었습니다. 차트에 올리면 이미 가지고 있는 청산 내역을 읽고, 각 거래 기록으로부터 왕복 거래 하나하나를 재구성한 뒤, 틱 아카이브에서 체결된 그 밀리초에 무엇이 제시되고 있었는지, 그리고 체결가가 주문이 요청한 가격에서 얼마나 떨어졌는지를 찾아냅니다. 수수료와 스왑은 거래 기록 자체에서 가져옵니다. 1분 뒤면 지난 90일, 또는 지난 1년, 또는 터미널이 기억하는 전부가 얼마나 들었는지 알게 됩니다.
주문을 열거나, 수정하거나, 닫는 일은 절대 없습니다. 코드 어디에도 거래 함수가 없으며, 자동매매를 켜 둘 필요도 없습니다.
무엇을 알려 주나
- 스프레드. 각 체결 순간에 제시된 그대로입니다. 지금 화면에 보이는 값도, 브로커 평균도, M1 봉의 스프레드 필드도 아닙니다. 그 필드는 스프레드가 벌어진 그 1분까지 포함해 1분 전체를 평균한 값입니다.
- 슬리피지. 주문이 요청한 것과 실제로 받은 것의 차이입니다. 시장가 주문은 요청 가격, 스탑이나 리밋은 그 가격 수준. 부호는 양수가 언제나 불리함을 뜻하도록 맞춰 두었습니다.
- 수수료, 부대 비용, 스왑. 왕복 거래별로, 거래 기록에서 바로 가져옵니다.
- 그리고 어떤 체결에 대해 틱 아카이브에 아무것도 없으면 그렇다고 알려 줍니다. 그 체결은 지어내지 않고 미측정으로 남기며, 보고서는 그 비율이 얼마였는지 밝힙니다.
네 가지 비용을 섞지 않기
저지르기 쉬운 실수가 하나 있습니다. 스프레드, 슬리피지, 수수료, 스왑을 모두 더해서 총이익에서 빼는 것입니다. 이건 이중 계산입니다. 스프레드와 슬리피지는 이미 총이익 안에 들어 있습니다. 매도호가에 사고 매수호가에 팔았기 때문입니다. 수수료와 스왑은 그 위에 따로 부과됩니다. 보고서는 이것들을 분리해 둡니다. 실제로 계좌에 들어온 금액을 보여 주고, 그 옆에 같은 거래를 수수료도 스왑도 없이 중간가에 체결했다면 얻었을 금액을 보여 줍니다. 비용을 백분율로 표시할 때는 이 두 번째 숫자가 분모입니다.
스왑도 같은 방식으로 다룹니다. 결과에서는 상계된 값으로 보이고, 그다음 지불한 것과 받은 것으로 나뉘어 표시됩니다. 지불한 부분만 비용으로 계산하므로 비용 행을 더하면 언제나 합계와 일치합니다.
돈은 어디로 갔나
모든 숫자를 심볼별, 진입 시각별, 요일별, 세션별, 방향별, 매직 넘버별, 그리고 포지션이 청산된 방식별로 나눕니다. 손절 청산의 슬리피지는 따로 보고합니다. 놀랄 만한 것은 대개 거기에 있기 때문입니다. 비용이 가장 큰 왕복 거래 10건과, 전체 마찰 비용 중 최악의 10%에 얼마나 몰려 있는지도 볼 수 있습니다. 생각보다 큰 경우가 많고, 바꿀 수 있는 무언가를 가리킵니다.
브로커가 당신을 어떻게 체결시키나
브로커에게 따져 물을 수 있는 세 가지. 어느 것도 당신의 전략이 좋은지와는 무관합니다.
1. 스프레드는 안정적인가? 제시 스프레드의 90번째 백분위수를 중앙값과 비교합니다. 아무 일도 없을 때만 적용되는 광고용 스프레드는 여기서 드러납니다.
2. 슬리피지는 얼마나 큰가? 해당 종목의 통상적인 스프레드를 기준으로 재므로, 금의 몇 포인트와 EURUSD의 몇 포인트가 같은 잣대로 평가되지 않습니다.
3. 균형이 맞는가? 움직인 체결 가운데 몇 건이 불리한 쪽으로 움직였는지. 늘 한 방향으로만 미끄러지는 호가창은 지연 문제가 아닙니다.
세 가지를 합쳐 0에서 100까지의 점수와 알파벳 등급을 만듭니다. 어떤 항목의 표본이 부족하면 그 항목을 빼고 나머지를 다시 환산하므로, 브로커가 틱 아카이브를 제공하지 않는 계좌도 체결을 기준으로 등급을 받습니다.
포인트를 돈으로 바꾸되 스스로를 속이지 않기
흔한 지름길은 현재 틱 가치를 쓰는 것인데, 그러면 오늘의 환율이 넉 달 전 거래에 적용됩니다. 대신 청산된 각 포지션이 자신의 실현 손익으로 자기 환산 계수를 보정합니다. 알려진 거리를 움직였고 알려진 결과를 기록했으니, 그 순간 브로커가 적용한 환산이 교차 환율까지 포함해 드러나는 것입니다. 틱 가치는 거의 움직이지 않은 포지션을 위한 예비 수단일 뿐입니다.
무엇을 제외했는지 알려 준다
필터를 적용한 보고서는 완전한 보고서와 똑같이 생겼습니다. 그래서 거래가 70건인 계좌에서 4건만 감사하고는 비용에 문제가 없다고 결론짓는 일이 생깁니다. 이 보고서는 감사한 거래의 기간, 검색한 기간, 적용 중인 필터, 그리고 그 기간 밖에 청산된 왕복 거래가 몇 건 있는지를 항상 명시합니다. 패널에서도, HTML 보고서에서도, CSV에서도.
무엇이 나오나
- 차트 위의 패널, 다섯 페이지: Overview, Symbols, Time, Quality, Method. 어느 모서리에든 고정할 수 있고, 차트 높이에 맞춰 조정되며, 내용이 넘치면 스크롤됩니다.
- 그래프가 내장된 독립 HTML 보고서. 외부 파일이 없어 어떤 컴퓨터에서도 열리고 깔끔하게 인쇄됩니다. 브로커에게 보내기에도, 여섯 달 뒤의 자신에게 보내기에도 좋습니다.
- 왕복 거래당 한 줄인 CSV. UTF-8에 바이트 순서 표식, 구분자는 선택 가능. 직접 쓰는 스프레드시트용입니다.
구매 전에 먼저 써 보기
전략 테스터에는 감사할 계좌 내역이 없습니다. 그래서 테스터에서는 이 제품이 틱 흐름 위에 모의 거래 세트를 만들고 대신 그것을 감사합니다. 주문은 전혀 보내지 않습니다. 스프레드, 판단과 체결 사이의 가격 변동, 손절 체결은 모두 브로커가 그 심볼과 기간에 대해 기록한 틱에서 나오므로, 체결 수치는 그 브로커의 그 종목을 설명합니다. 지어낸 것은 거래 일정뿐이며, 모든 화면이 그렇게 밝힙니다. "실제 틱 기반 모든 틱" 모델을 사용하세요. OHLC 모델과 시가 모델은 체결 시점을 재기에는 너무 성긴 틱을 만들어 내며, 그런 일이 생기면 보고서는 미측정으로 남긴 체결이 몇 건인지 알려 줍니다.
유용한 부수 효과도 있습니다. 어떤 심볼과 기간에든 갖다 대면, 계좌를 열기 전에 스스로 물어봤을 법한 질문에 답해 줍니다. 이 브로커에서 이 종목을 거래했다면 비용이 얼마나 들었을까?
필요한 것
MetaTrader 5, DLL 없음. 헤징 계좌든 네팅 계좌든, 어떤 심볼이든, 어떤 시간대든. 스프레드 측정에는 거래한 심볼의 틱 아카이브가 필요합니다. 어떤 심볼에서 처음 실행할 때는 터미널이 틱을 내려받는 동안 1분쯤 걸릴 수 있습니다. 패널과 보고서가 아직 없는 심볼의 이름을 알려 주고, 감사는 몇 분 동안 스스로 다시 시도합니다.
주요 파라미터
- 기간: 최근 N일, 사용자 지정 날짜 범위, 또는 사용 가능한 전체 내역.
- 필터: 심볼(브로커 접미사 유무 무관), 매직 넘버와 범위, 방향, 최소 거래량.
- 측정: 호가 조회 창(밀리초), 체결당 스프레드의 절반 또는 전체, 자동 금액 보정 또는 현재 틱 가치.
- 세션: 서버 시간 기준 아시아, 런던, 뉴욕 시간대. 자정 넘김 허용.
- 패널: 모서리, 오프셋, 글꼴 크기, 색상, 자동 갱신 간격.
- 보고서: HTML과 CSV 개별 켜고 끄기, CSV 구분자, 첫 감사 시 내보내기, 계좌 정보 숨기기, 보고서 폴더와 이름 접미사.
- 전략 테스터 데모: 거래량, 하루 거래 수, 보유 시간, 가정 수수료, 손절 거리.
한계, 솔직하게
- 완전히 청산된 왕복 거래만 셉니다. 미청산 포지션은 왕복의 절반이고, 절반의 왕복에는 측정할 청산이 없습니다.
- 시장가 체결 계좌에서는 주문에 요청 가격이 없어 진입 슬리피지를 측정할 수 없습니다. 보고서는 빈틈을 메우는 대신 측정 비율을 보여 줍니다.
- 일부 서버는 시장가 주문을 체결 가격으로 기록합니다. 계좌의 모든 시장가 체결이 정확히 0의 슬리피지를 보이면, 그 체결들은 완벽하다고 평가되는 대신 미측정으로 처리되며, 보고서가 그렇게 알립니다.
- 스프레드와 슬리피지는 아카이브에 담긴 것의 측정값이고, 그 아카이브는 브로커의 것입니다.
- 체결 등급은 체결을 설명할 뿐, 수익성을 설명하지 않습니다. 완벽한 브로커라도 지는 전략을 이기게 만들지는 못합니다.
질문
보고서에서 앞뒤가 맞지 않는 것이 있으면 제품 댓글에 물어보시거나 MQL5에서 개인 메시지를 보내 주세요. 둘 다 읽습니다. 설명이 안 되는 보고서야말로 제가 꼭 듣고 싶은 이야기입니다.
