커버드콜 ETF 순환

커버드콜 ETF 순환 매매 도움말

이 프로그램의 전략 원리, 화면 사용법, 주요 수치 해석을 안내합니다.

전략 개요 핵심 개념 화면 안내 수치 사전 설정 파라미터 처음 시작하기

전략 개요

커버드콜 ETF란?

커버드콜 ETF는 KOSPI200 같은 지수를 보유하면서 동시에 콜옵션을 매도(커버드콜)하는 구조입니다. 옵션 프리미엄을 배당으로 지급하므로 일반 지수 ETF보다 배당 수익률이 높지만, 지수가 급등할 때 상방 수익이 제한되는 특성이 있습니다. 최근에는 주간 만기(Weekly) 옵션을 이용해 매주 배당을 지급하는 상품이 출시됐습니다.

왜 두 종목을 교대로 보유하는가?

주간 커버드콜 ETF의 분배금은 콜옵션 프리미엄 수입에서 나오기 때문에, 일반 주식과 달리 배당락일에 주가가 거의 하락하지 않습니다. 따라서 분배금을 받은 직후 다른 종목으로 갈아타도 평가손실이 발생하지 않습니다.

분배 시점이 월 중반(매달 두 번째 금요일)인 종목과 월 하반(마지막 거래일)인 종목을 교대로 보유하면, 한 달에 두 번 분배금을 수령할 수 있어 연간 수익률을 높일 수 있습니다.

단순히 교대 보유에 그치지 않고, 갈아타는 시점을 NAV 이격률 차이(edge)가 유리한 때로 맞추면 이동 자체의 손실을 줄이거나 오히려 소폭의 이득을 얻을 수 있습니다.

핵심 원리: 갈아탈 때 "파는 가격 / NAV" − "사는 가격 / NAV" 가 클수록 이동에 유리

중반(mid) · 하반(late) 종목 구분

주간 커버드콜 ETF는 분배 시점에 따라 두 그룹으로 나뉩니다.

구분분배 시점예시 종목
중반 (mid)매월 두 번째 금요일498400 KODEX 200타겟위클리커버드콜
하반 (late)매월 마지막 거래일 전후0167B0 SOL 200타겟위클리커버드콜

중반 분배를 받은 후 하반 종목으로 이동(A→B), 하반 분배를 받은 후 중반 종목으로 이동(B→A)하는 주기로 운용합니다. 이동 타이밍은 배당락 일정이 아닌 NAV 이격률 edge가 트리거선을 넘는 시점에 결정됩니다.

슬라이스 분할 실행

한 번에 전량 갈아타면 하루의 시장 상황에 모두 영향받습니다. 이 프로그램은 이동 금액을 N 슬라이스로 나눠 매일 조금씩 실행합니다. 예를 들어 슬라이스 10회면 총 이동 금액의 1/10씩 10 거래일에 걸쳐 이동합니다. 매일 edge가 트리거선 이상일 때만 그 날의 슬라이스를 실행합니다.

핵심 개념

NAV 이격률 (Disparity from NAV)

NAV(순자산가치)는 ETF가 보유한 자산의 실질 가치입니다. 실제 거래 호가(bid/ask)는 NAV와 약간 다릅니다. 이 차이를 bps로 나타낸 것이 NAV 이격률입니다.

매도 이격률 (bid/NAV) = (매수호가 − NAV) / NAV × 10,000 bps 매수 이격률 (ask/NAV) = (매도호가 − NAV) / NAV × 10,000 bps

이동 Edge

갈아타기 한 번의 순이득을 추정하는 지표입니다.

edge(A→B) = A 매도 이격률(bid/NAV) − B 매수 이격률(ask/NAV) edge(B→A) = B 매도 이격률(bid/NAV) − A 매수 이격률(ask/NAV)

edge가 양수이면 거래 비용(스프레드)을 고려해도 이득이 남는 상태입니다. edge가 높을수록 이동에 유리한 시점입니다.

트리거선 (Trigger Edge)

과거 관측된 edge의 최솟값과 최댓값 범위에서 move_trigger_ratio 위치에 해당하는 값입니다.

트리거선 = worst_edge + (best_edge − worst_edge) × move_trigger_ratio

예) 과거 edge 범위가 −30 ~ +50 bps이고 trigger_ratio = 0.7이면: 트리거선 = −30 + 80 × 0.7 = +26 bps → 현재 edge ≥ 26 bps일 때만 슬라이스를 실행합니다.

유리도 (Favorability Ratio)

현재 edge가 역사적 범위에서 어느 위치인지를 0~100%로 나타냅니다.

유리도 = (현재 edge − worst_edge) / (best_edge − worst_edge) × 100%

100%에 가까울수록 역대 최고 수준으로 이동에 유리한 상황입니다. 트리거선에 해당하는 유리도 = move_trigger_ratio × 100 (%)입니다.

방향 (Direction)

AUTO A_TO_B B_TO_A PAUSED
상태의미
AUTO배당락 일정을 자동 계산하여 방향을 결정
A_TO_B중반(A) → 하반(B) 이동 실행 중
B_TO_A하반(B) → 중반(A) 이동 실행 중
PAUSED이동 조건 미충족 또는 배당락 이후 일정 기간이 지나 대기

Phase (단계)

Phase의미
study_running엔진 실행 중, 매매 조건 감시 중
ordering슬라이스 주문 실행 중
waiting체결 대기 중
paused시장 정지(사이드카·서킷브레이커) 또는 조건 미충족
stopped엔진 정지

화면 안내

📊 대시보드

실시간 매매 상황을 한눈에 모니터링하는 메인 화면입니다.

  • 엔진 상태 카드: Phase, 방향, 시작/정지 버튼
  • 자산 현황: A형·B형 보유금액, 현금, 총액
  • 조합 진행 현황: 슬라이스 진행률, edge, 유리도
  • 보유 종목 테이블: 수량, 평단, 평가금액
  • 수동 회전: 긴급 상황 시 수동으로 일회 이동 실행

⚙️ 설정

종목·파라미터·API 정보를 설정하는 화면입니다.

  • A/B형 종목 풀: 매매 대상 후보 종목 등록
  • 조합 관리: 중반·하반 쌍, 배정 금액, 슬라이스 수, 배당락일
  • 연결 정보: LS 증권 API 키, 계좌번호
  • 매매 파라미터: 슬리피지, 대기 시간, 관측 기간 등
  • 데이터 보관: 스냅샷·로그 저장 주기 및 보관 기간

📈 분석

조합별 NAV 이격률 추이와 edge 시계열을 차트로 분석합니다.

  • 조합 선택: 분석할 중반·하반 쌍 선택
  • NAV 이격률 추이: 매도·매수 이격률 시계열 차트
  • Edge 차트: 방향별 edge와 트리거선 표시
  • 표시 범위: 최근 200~전체 포인트 선택, 가로 스크롤
  • 장중만 필터: 09:00~15:30 실거래 시간 데이터만 표시

📋 로그

엔진 동작 로그를 실시간으로 확인합니다.

  • INFO·WARN·ERROR·DATA 레벨 구분
  • 시세 수신, 주문 실행, WebSocket 연결 상태
  • 시장 상태 변화(사이드카·서킷브레이커 등)

🗄️ 데이터

DB 크기 확인 및 데이터 정리를 수행합니다.

  • 테이블별 행 수·기간 조회
  • 특정 날짜 이전 데이터 수동 삭제
  • DB VACUUM으로 파일 크기 축소

🛡️ 방어력

ETF의 하방 방어력과 상방 참여율을 KODEX200 대비로 분석합니다.

  • 방어 비율: KOSPI200 하락 시 낙폭 비율
  • 상방 참여율: KOSPI200 상승 시 수익 비율
  • 구간별(소폭/중폭/급락) 세부 분석
  • 회귀선 기울기(β)로 비교

주요 수치 해석

단위: bps (베이시스 포인트)

1 bps = 0.01% = 0.0001입니다. 작은 가격 차이를 정밀하게 표현할 때 사용합니다.

10 bps = 0.10% | 30 bps = 0.30% | 100 bps = 1.00%

대시보드 조합 카드 수치

항목설명
이동 Edge현재 시점의 갈아타기 이득 추정값 (bps). 양수일수록 유리.
트리거선 (Trigger)슬라이스를 실행할 최소 edge 임계값. 이 값 이상일 때 주문 실행.
유리도현재 edge가 역사적 범위에서 몇 %에 위치하는지 (0~100%). 100%=역대 최고.
이동 적기 횟수과거 edge가 트리거선을 아래서 위로 교차한 횟수. 많을수록 신뢰도 높음.
관측 수통계에 사용된 과거 데이터 포인트 수. 적으면(< 30) 통계 신뢰도 낮음.
진행률전체 슬라이스 중 완료된 비율. 10슬라이스 중 3완료 = 30%.
괴리 EdgeNAV 이격률 기반 신호 강도 (bps)
MA Edge200분 이동평균 대비 가격 기반 신호 강도 (bps)
종합 Score괴리 Edge × 괴리 가중치 + MA Edge × MA 가중치 합산

분석 화면 차트 수치

항목설명
bid/NAV 이격률매수호가와 NAV의 차이. 높을수록 매도에 유리.
ask/NAV 이격률매도호가와 NAV의 차이. 낮을수록 매수에 유리.
평균 / 최고 / 최저관측 기간 내 edge의 통계 범위
샘플링 1/N포인트가 많아 N개 중 1개씩 표시. 정밀도보다 추세 확인 목적.

방어력 화면 수치

항목설명
방어 비율 (%)KODEX200이 하락한 날 해당 ETF가 평균 몇 %만 하락하는지. 낮을수록 방어력 좋음.
β↓ (하방 베타)KODEX200 1% 하락 시 ETF의 평균 하락폭. 0.8이면 KODEX200의 80%만 하락.
상방 참여율 (%)KODEX200이 상승한 날 해당 ETF가 평균 몇 %를 따라가는지.
β↑ (상방 베타)KODEX200 1% 상승 시 ETF의 평균 상승폭.

주요 설정 파라미터

조합(Pair) 설정

파라미터설명 / 권장값
배정 금액 (allocation_krw)이 조합에 투입할 총 금액 (원). 슬라이스 수로 나눠 매일 실행.
슬라이스 수 (slice_count)총 이동 금액을 몇 회로 나눌지. 기본 10회. 많을수록 시장 리스크 분산.
트리거 비율 (move_trigger_ratio)0~1 사이. 높을수록(0.8~0.9) 조건을 엄격히 적용. 낮으면(0.5~0.6) 자주 실행.
배당락일 (ex_div_dates)배당락 주기 자동 계산에 사용. 두 종목의 배당락일 입력 (YYYYMMDD).
이동 기간 (rotation_window_days)배당락일 기준 몇 일 이내에만 이동 허용. 기본 14일.

매매 전략 설정

파라미터설명 / 권장값
최대 슬리피지 (max_slippage_bps)주문 실행 시 허용할 최대 가격 불리함. 기본 30 bps. 초과 시 주문 취소.
감시 주기 (watch_interval_seconds)REST API 호가 조회 간격. 기본 30~60초. 너무 짧으면 API 제한 가능.
주문 타임아웃 (order_timeout_seconds)단일 주문의 최대 체결 대기 시간. 기본 60초.
최소 관측 수 (min_move_observations)트리거선 계산에 필요한 최소 데이터 수. 기본 30. 미만이면 실행 보류.
통계 기간 (move_stats_lookback_days)edge 통계(평균·최고·최저)를 계산할 과거 기간. 기본 30일.

안전 장치 설정

파라미터설명
장중만 실행 (enforce_market_hours)09:00~15:30 이외 시간에는 주문 실행 차단. 권장: ON
동시호가 중 정지 (pause_during_auction)개장 전 동시호가(08:30~09:00) 중 주문 차단. 권장: ON
시장 정지 시 차단 (block_on_market_halt)사이드카·서킷브레이커 발동 시 주문 중단. 권장: ON
최대 호가 유효시간 (max_quote_age_seconds)이 시간 이상 지난 호가는 무효 처리. 기본 60초.
페이퍼 트레이딩 (paper_trading): ON 상태에서는 주문 실행이 차단되고 시세 감시만 수행합니다. 실제 매매 전 이 모드로 전략을 충분히 검증하세요. 데이터 수집과 분석은 paper 모드에서도 정상 동작합니다.

처음 시작하기

  1. 설정 → 연결 정보 입력
    LS 증권 Open API App Key, App Secret, 계좌번호를 입력합니다. MAC 주소는 법인 계좌에서 필요합니다. 저장 후 [연결 테스트] 버튼으로 정상 연결을 확인하세요.
  2. 설정 → 종목 풀 등록
    A형(중반 배당락) 종목코드와 B형(하반 배당락) 종목코드를 입력합니다. 예: A형에 498400, B형에 0167B0
  3. 설정 → 조합 추가
    중반 종목(A형)과 하반 종목(B형)을 선택합니다. 배정 금액, 슬라이스 수(권장 10), 트리거 비율(권장 0.7), 각 종목의 가장 가까운 배당락일을 입력하고 저장합니다.
  4. 페이퍼 트레이딩 ON 상태로 엔진 시작
    대시보드에서 [시작] 버튼을 눌러 엔진을 시작합니다. 최소 하루 이상 데이터를 수집해 edge 통계를 쌓습니다. 로그 화면에서 시세 수신과 edge 계산이 정상 동작하는지 확인하세요.
  5. 분석 화면에서 edge 추이 확인
    분석 화면에서 edge가 트리거선을 넘는 시점이 얼마나 자주 나타나는지 확인합니다. 관측 수가 30 이상 쌓이면 통계가 안정됩니다.
  6. 실제 매매 전환
    설정에서 페이퍼 트레이딩을 OFF로 변경합니다. 엔진이 트리거 조건 충족 시 실제 주문을 실행합니다. 첫 실행 후 대시보드에서 주문 체결 여부를 확인하세요.
주의: 실제 매매 전 반드시 소액으로 테스트하세요. 슬리피지 설정, 주문 타임아웃, 계좌 잔고 여부를 꼭 확인하세요. 이 프로그램은 매매 의사결정을 보조하는 도구이며, 투자 결과는 본인 책임입니다.

자주 묻는 질문

질문답변
차트가 평평하게 보여요 분석 화면의 장중만 체크박스를 켜세요. 장 마감 후에는 호가가 고정되어 이격률 변화가 없습니다.
ws_reconnect 오류가 반복돼요 LS API는 계정당 WebSocket 연결 1개만 허용합니다. 엔진을 잠시 정지하고 1~2분 후 재시작하면 이전 연결이 해제됩니다.
edge가 계속 음수예요 현재 시장 상황에서 갈아타기가 불리하다는 뜻입니다. 관측 기간 데이터가 쌓일수록 트리거선이 실제 패턴에 맞게 조정됩니다.
관측 수가 너무 적어요 최소 관측 수(min_move_observations) 미만이면 실행이 보류됩니다. 엔진을 며칠간 실행해 데이터를 쌓거나, 설정에서 최솟값을 낮추세요.
슬라이스가 실행되지 않아요 ① edge < 트리거선, ② 장중 시간 외, ③ 페이퍼 트레이딩 ON, ④ 사이드카/서킷브레이커 발동 여부를 확인하세요.
배당락일을 어떻게 알 수 있나요? ETF 운용사(삼성·신한·한화 등) 공시 또는 증권사 HTS의 ETF 정보에서 확인할 수 있습니다.