매매기법 · 8/13강 · 2분 읽기
IFVG+PO3를 3등급으로 쪼개면 보이는 것: 신호 강도별 실전 분해
신호는 전부 같은 무게가 아니다
7강에서 PO3(축적→조작→분산)와 Confirm DOL 체크리스트를 배웠습니다. 실전에서 이 아이디어로 자동 매매 시스템을 만들어보면 흥미로운 문제에 부딪힙니다 — "스윙 스윕"과 "반전된 FVG(IFVG)"라는 두 조건을 얼마나 엄격하게 요구할 것인가에 따라 완전히 다른 시스템이 나옵니다.
실제로 이 조건을 구현하고 백테스트를 돌려보면 이런 일이 벌어집니다: 두 조건을 동시에 요구하면 신호가 드물지만 근거가 탄탄하고, 둘 중 하나만 요구하면 신호는 3~5배 늘어나지만 그만큼 근거 없는 진입이 섞여 들어와서 전체 승률을 갉아먹습니다. 이 강의는 그 세 가지 버전을 등급별로 뜯어보고, 각각이 왜 다른 성격을 갖는지 전문 트레이더 관점에서 설명합니다.
3등급의 정확한 정의
| 등급 | 이름 | 요구 조건 | 신호 빈도 | 근거 강도 |
|---|---|---|---|---|
| 1등급 | IFVG+PO3 (엄격) | 스윙 스윕 그리고 같은 방향으로 반전된 FVG 구간 안에 현재가 위치 | 낮음 | 가장 강함 |
| 2등급 | PO3 스윕만 | 스윙 스윕만 (FVG 확인 없음) | 중간 | 중간 |
| 3등급 | IFVG 재진입만 | 반전된 FVG 구간 진입만 (스윕 확인 없음) | 높음 | 가장 약함 |
1등급: 스윕 + IFVG가 겹치는 자리만
가장 엄격한 조건입니다. 순서로 보면:
- 최근
swing_lookback(기본 10봉) 구간의 고점 또는 저점을 꼬리로 뚫고 반대로 마감(스윕)합니다. - 그 스윕 방향과 반대 방향이었던 FVG가, 스윕 이후 시점에 역전(inversion) 상태로 바뀌어 있어야 합니다. 예를 들어 고점 스윕(하락 신호 후보)이 나왔다면, 원래 불리시였던 FVG가 이미 무효화되어 이제는 저항 구간으로 역전된 상태여야 합니다.
- 현재 종가가 그 역전된 FVG 구간(상단~하단) 안에 들어와 있어야 진입합니다.
즉 "유동성을 쓸어간 자리"와 "가격 공백이 뒤집혀 저항/지지로 바뀐 자리"가 같은 지점에서 겹칠 때만 진입합니다. 두 개의 독립적인 근거가 같은 결론을 가리키는 것 — 전문 트레이더들이 "합류(confluence)"라고 부르는 개념을 코드로 그대로 구현한 것입니다.
💡 실전 팁: 합류 조건을 쓰는 전략은 신호 개수 자체가 리스크 관리 도구입니다. 하루 종일 신호가 안 나온다고 조바심 내며 조건을 느슨하게 풀면, 그 순간 이 전략은 사실상 2등급이나 3등급이 되어버립니다.
2등급: 스윕만 확인 (FVG 확인 생략)
1등급에서 FVG 조건을 빼고, 스윕 하나만으로 진입합니다. 스윙 고점/저점을 꼬리로 뚫고 반대로 마감한 봉 하나가 근거의 전부입니다.
이 버전의 가장 큰 약점은 "진짜 유동성 스윕"과 "그냥 시끄러운 봉 하나"를 구분할 방법이 없다는 것입니다. 변동성이 큰 구간에서는 스윙레벨을 살짝 넘었다가 되돌아오는 봉이 하루에도 여러 번 나올 수 있고, 이 전략은 그때마다 진입 신호를 냅니다. 뒤에 나올 "유동성 신선도 필터"가 이 약점을 부분적으로 보완합니다.
3등급: 역전된 FVG 구간이면 진입 (스윕 확인 생략)
반대로 스윕 조건을 빼고, "가격이 역전된 FVG 구간 안에 있다"는 사실 하나만으로 진입합니다. 논리는 "가격 공백이 한 번 뒤집혔으니 앞으로도 지지/저항으로 작동할 것이다"라는 가정 하나뿐입니다.
세 등급 중 근거가 가장 약합니다. 왜냐하면 그 FVG 구간에 가격이 들어온 이유가 "의미 있는 되돌림"인지 "그냥 지나가는 길목"인지를 전혀 구분하지 않기 때문입니다. 이 등급을 백테스트에 포함시키면 십중팔구 매매 횟수가 가장 많이 늘어나고, 전략별 승률 표를 확인해보면 세 등급 중 성적이 가장 낮게 나오는 경우가 흔합니다.
왜 하나의 전략으로 합쳐두지 않고 셋으로 쪼갰나
실전에서 세 조건을 "OR"로 묶어 하나의 전략처럼 쓰면(셋 중 하나라도 만족하면 진입), 겉보기엔 매매가 활발해서 좋아 보입니다. 하지만 이렇게 하면 치명적인 문제가 생깁니다: 백테스트 결과에 세 등급의 손익이 전부 섞여버려서, 정작 돈을 벌어준 게 1등급 신호 몇 개였는지, 아니면 3등급 신호들이 그 이익을 다 깎아먹고 있었는지를 전혀 알 수 없게 됩니다.
전문 트레이더가 시스템을 검증할 때 반드시 하는 작업이 바로 이 "신호원 분리 회계(attribution)"입니다. 세 등급을 별개의 전략으로 등록해서 백테스트를 돌리면, 전략별 승률·평균 R·매매 횟수가 각각 따로 나옵니다. 이렇게 하면 다음과 같은 질문에 데이터로 답할 수 있습니다.
- 1등급은 매매 횟수가 적은 대신 평균 R이 확실히 더 높은가?
- 2등급을 추가로 켰을 때 전체 계좌의 기대값이 개선되는가, 악화되는가?
- 3등급은 아예 꺼두는 게 나은가?
⚠️ 세 등급을 전부 켜면 REGISTRY에 등록된 순서(1등급 → 2등급 → 3등급)대로 검사해서 가장 먼저 나온 신호 하나만 씁니다. 즉 1등급 조건이 만족되면 2·3등급 조건은 아예 확인하지 않습니다 — 더 근거가 강한 신호가 있으면 항상 그걸 우선한다는 뜻입니다.
유동성 신선도 필터: 스윕에도 등급이 있다
2등급(스윕만)의 약점을 보완하기 위한 별도 필터가 있습니다. 방금 스윕한 스윙레벨이 "처음 건드리는 자리"인지 "이미 여러 번 시험된 자리"인지를 구분합니다.
- 되짚어볼 구간: 최근 50봉(
liquidity_freshness_lookback) - "같은 자리"로 인정하는 오차 범위: 레벨 대비 0.05%(
liquidity_freshness_tolerance_pct) 이내 - 이 범위 안에서 몇 번까지 터치된 걸 "신선"으로 볼지: 1회(
liquidity_freshness_max_touches) 이하
이 필터를 켜면, 스윙레벨을 이미 2번 이상 테스트한 적 있는 "고저항(High Resistance)" 자리에서 나온 스윕은 걸러냅니다. 처음 건드리는 "저저항(Low Resistance)" 자리의 스윕만 신호로 인정합니다.
여기서 전문가들 사이에 실제로 의견이 갈리는 지점이 있다는 걸 짚고 넘어가겠습니다. 어떤 트레이더는 "처음 건드리는 자리라야 아직 소화 안 된 유동성이 많아서 스윕의 힘이 세다"고 보고, 어떤 트레이더는 반대로 "이미 여러 번 시험된 자리일수록 그 레벨을 지키려는 참여자가 많아서 반등이 더 강하다"고 봅니다. 이 필터는 전자의 해석을 코드로 옮긴 것이며, 기본값은 꺼져 있습니다(use_liquidity_freshness_filter=False) — 검증되지 않은 가정이라는 뜻이므로, 켜기 전에 반드시 백테스트로 실제 효과를 확인해야 합니다.
정리
- 같은 "PO3+FVG" 아이디어라도 조건을 얼마나 엄격하게 요구하느냐에 따라 완전히 다른 위험/수익 프로파일의 전략이 됩니다.
- 1등급(스윕+IFVG 합류)은 신호가 드문 대신 근거가 탄탄하고, 3등급(IFVG만)으로 갈수록 신호는 많아지지만 근거는 약해집니다.
- 여러 등급을 하나의 전략으로 뭉뚱그리면 정작 무엇이 이익을 만드는지 알 수 없게 됩니다 — 신호원별로 반드시 따로 집계하세요.
- 유동성 신선도 필터처럼 "그럴듯하지만 검증 안 된" 필터는 기본값을 꺼둔 채로 시작해서, 데이터로 효과를 확인한 뒤에만 켜는 것이 안전합니다.