매매기법 · 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가 겹치는 자리만

가장 엄격한 조건입니다. 순서로 보면:

  1. 최근 swing_lookback(기본 10봉) 구간의 고점 또는 저점을 꼬리로 뚫고 반대로 마감(스윕)합니다.
  2. 그 스윕 방향과 반대 방향이었던 FVG가, 스윕 이후 시점에 역전(inversion) 상태로 바뀌어 있어야 합니다. 예를 들어 고점 스윕(하락 신호 후보)이 나왔다면, 원래 불리시였던 FVG가 이미 무효화되어 이제는 저항 구간으로 역전된 상태여야 합니다.
  3. 현재 종가가 그 역전된 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만)으로 갈수록 신호는 많아지지만 근거는 약해집니다.
  • 여러 등급을 하나의 전략으로 뭉뚱그리면 정작 무엇이 이익을 만드는지 알 수 없게 됩니다 — 신호원별로 반드시 따로 집계하세요.
  • 유동성 신선도 필터처럼 "그럴듯하지만 검증 안 된" 필터는 기본값을 꺼둔 채로 시작해서, 데이터로 효과를 확인한 뒤에만 켜는 것이 안전합니다.