신호 충돌 해결 룰 설계: 뉴스·공시·기술·매크로가 싸울 때 ‘일관되게’ 결정하는 법
최종 수정: 작성자: Finyul
지표는 매수인데 뉴스가 불안할 때, 해법은 신호를 더 찾는 게 아니라 우선순위·가중치·거부권(Stop rule)을 고정하는 것입니다. 이 글은 멀티소스/멀티에이전트 환경에서 흔들림을 줄이는 룰 테이블·플로우·템플릿을 바로 가져다 쓰게 정리합니다.
전체 폐루프(분석→예측→결정→실행)가 먼저 필요하면 LLM 멀티에이전트 투자 시스템(MAS) 완전 가이드를 참고하세요.

왜 충돌이 생기는가: 신호는 “틀린 게” 아니라 “시간축/의미/시장상태”가 다르다
1) 시간축이 다르면 같은 사실도 결론이 달라진다
뉴스는 T+1에 강하고, 매크로는 T+20에 강합니다. 기술적 신호는 “지금 가격 반응”이라 단기엔 유효하지만, 이벤트 충격엔 쉽게 뒤집힙니다.
2) 텍스트 신호는 ‘사건’, 가격 신호는 ‘반응’이다
공시/뉴스는 “무슨 일이 있었는가”, 기술적은 “시장이 어떻게 반응했는가”. 둘이 충돌할 수밖에 없습니다.
3) 시장 상태(추세/횡보/급변)가 신호 신뢰도를 바꾼다
저변동 시장에서는 “돌파/크로스”가 더 자주 가짜가 됩니다. 예를 들어 REITs 기반 멀티에이전트 연구에서는 동적 임계값(θ)로 sideways(횡보)를 정의할 때 약 33%가 횡보로 분류된다고 서술합니다. 즉 “횡보가 기본”인 시장에서는 기술적 매수 신호가 더 자주 충돌을 만든다는 뜻입니다.
| 원인 | 한 줄 설명 | 보충 |
|---|---|---|
| 1) 시간축(Time Horizon) | 단기 신호와 중장기 신호는 같은 사건에도 다른 결론을 낸다 | 뉴스/이벤트는 단기, 매크로는 중장기, 기술적은 즉시 반응 |
| 2) 의미(Meaning) | 텍스트=사건, 가격=반응 | 공시·뉴스는 “무슨 일이 있었나”, 기술적은 “시장이 어떻게 반응했나” |
| 3) 시장상태(Regime) | 시장 상태가 신호 신뢰도를 바꾼다 | 동적 임계값 설정에서 sideways(횡보) ≈33%로 나타남(연구 설정). Nv≈30일, qL/qU=30%/70%, τhigh/τlow≈1.4/0.7 |
충돌을 유형화하면 절반은 끝난다: 6가지 대표 충돌 패턴
아래 6개만 “패턴 라이브러리”로 만들어두면, 그날그날 감정이 아니라 규칙으로 처리됩니다.
1. 뉴스 불안 vs 기술적 매수
| 증상 | 뉴스는 부정·기술은 매수라 결론이 엇갈림 |
| 원인 | 사건(뉴스)이 가격에 반영되기 전/후 불명 |
| 권장 룰 | 반영 시점 확인 후 우선순위(확정성) 적용 |
| 흔한 실수 | 기술만 보고 진입 후 뉴스로 휩쓸림 |
2. 공시 확정 vs 기술적 반대
| 증상 | 공시는 중립/악재, 기술은 돌파·매수 |
| 원인 | 신뢰도·시간축 차이 |
| 권장 룰 | 우선순위 — 공시(확정) > 기술적 |
| 흔한 실수 | 루머를 확정처럼 취급하거나 기술만 신뢰 |
3. 매크로 역풍 vs 종목 호재
| 증상 | 매크로는 금리↑/리스크, 종목은 호재 |
| 원인 | 기간·자산 계층 불일치 |
| 권장 룰 | 가중치 합의(기간별 T+1/T+20 분리) |
| 흔한 실수 | 한 축만 보기 |
4. 단기 호재 vs 중장기 악재(기간 충돌)
| 증상 | 단기 호재인데 중장기 매크로는 악재 |
| 원인 | 시간축 불일치 |
| 권장 룰 | 기간별 가중치 분리, Stop rule(합의 약하면 hold) |
| 흔한 실수 | 단기만 보고 중장기 무시 |
5. 신호 강도 불균형(한쪽만 과신)
| 증상 | 한 신호만 confidence 과도 |
| 원인 | 한 축만 확신 |
| 권장 룰 | Stop rule 후보(과신 축 강등 또는 hold) |
| 흔한 실수 | 과신한 한 축이 전체를 지배 |
6. 데이터 품질 충돌(루머/중복/근거 부재)
| 증상 | 출처 불명·중복 기사·근거 없음 |
| 원인 | evidence 누락, 출처 품질 낮음 |
| 권장 룰 | 근거 부족이면 보류(insufficient evidence), 신뢰도 강등 |
| 흔한 실수 | 추측형 뉴스를 확정처럼 반영 |
해결의 핵심 3종 세트: 우선순위 + 가중치 합의 + Stop rule(거부권)
신호 충돌 해결은 “정답 찾기”가 아니라 “일관성 만들기”입니다. 아래 3가지를 세트로 씁니다.
1) 우선순위(Priority)
확정성/품질로 먼저 컷
예: 공시(확정) > 루머(불확정)
2) 가중치 합의(Weighted Consensus)
남은 신호를 점수로 합의
Score = Σ(direction × weight × confidence)
3) Stop rule(거부권)
충돌이 크면 HOLD
HOLD도 결정으로 기록(사유 필수)
로그 저장: 입력 신호 / 적용된 우선순위 / score breakdown / stop rule 여부 / 최종 결정
룰 1) 우선순위 매트릭스: “상황별로” 우선순위를 바꿔라
고정 우선순위는 간단하지만 위험합니다. 시장 상태/이벤트 유형/데이터 품질에 따라 우선순위가 바뀌어야 합니다.
추천: 3축 우선순위 기준
- (A) 이벤트 확정성: 공시/규제(확정) > 주요 뉴스(준확정) > 소셜/루머(불확정)
- (B) 시장 상태: 급변동/리스크온오프 전환 시 매크로·리스크 트리거 상향
- (C) 데이터 품질: 출처 불명/중복 기사/추측형 문장 많으면 신뢰도 강등
| 시장 상태 | 공시/공식발표 | 매크로 | 뉴스 | 기술적 |
|---|---|---|---|---|
| 추세(Trend) | 2(중대 공시 시 1로 승격) | 3 | 4 | 1 |
| 횡보(Sideways) | 1 | 2 | 3 | 4(횡보에선 기술적 오신호 증가) |
| 급변동/이벤트(Shock) | 1 | 2(리스크 트리거) | 3 | 4(보조) |
실전 팁: 우선순위는 “누구 말이 맞냐”가 아니라 사고를 줄이는 장치입니다. 특히 공시처럼 확정 정보가 들어오면, 기술적 신호보다 우선하도록 해두는 게 일반적으로 안전합니다.
룰 2) 가중치 합의 모델: “신호 점수화”로 흔들림을 줄인다
우선순위로 ‘상위 룰’을 먼저 적용한 다음, 남은 신호는 가중치 합의(컨센서스)로 결정합니다.
최소 점수 모델(바로 쓰는 형태)
- 방향 s: 매수 +1 / 매도 -1 / 중립 0
- 신뢰도 c: 0~1
- 가중치 w: 신호 중요도(합=1 권장)
- 최종 점수: Score = Σ(wᵢ × sᵢ × cᵢ)
- 시간 감쇠(옵션): wᵢ(t) = wᵢ × exp(-λΔt) (뉴스는 빨리 만료)
| signal_type | direction | confidence | weight | contribution | evidence_ref | note |
|---|---|---|---|---|---|---|
| 뉴스 | +1/0/-1 | 0~1 | 0.15 | — | 기사ID/키 | 기간/만료/품질 |
| 공시·공지 | +1/0/-1 | 0~1 | 0.35 | — | 문서ID | — |
| 기술적 | +1/0/-1 | 0~1 | 0.25 | — | 데이터키 | — |
| 매크로 | +1/0/-1 | 0~1 | 0.25 | — | 데이터키 | — |
위 가중치(0.35, 0.25, 0.25, 0.15)는 “정답”이 아니라 시작점입니다. 운영 로그로 튜닝하세요.
최종 점수에 기여한 신호 비중(뉴스/공시/기술/매크로)
일별 최종 결정 점수에 각 신호가 기여한 비중
기여도 정의
- 뉴스: contribution_news = |방향×신뢰도×가중치|
- 공시: contribution_disclosure (공시 신호 기여 비중)
- 기술: contribution_technical (기술적 신호 기여 비중)
- 매크로: contribution_macro (매크로 신호 기여 비중)
막대는 위 네 가지 기여도를 쌓아 그날 최종 점수에 각 신호가 얼마나 기여했는지 보여줍니다.
룰 3) Stop rule(거부권): “충돌이 큰 날은 안 하는 게 전략”을 규칙화
Stop rule은 신호 충돌 해결의 마지막 안전장치입니다. 모든 신호가 싸우면 시장보다 내 감정이 먼저 움직이기 때문입니다.
Stop rule 트리거(추천 5종)
- 충돌 점수 임계: |Score|가 너무 작다(합의가 약함)
- 신뢰도 낮음: 핵심 신호들의 c가 전반적으로 낮다
- 급변동/이벤트 리스크: 변동성 급등, 거래중단, 중요 이벤트 직전/직후
- 근거 부족: evidence(근거) 누락/출처 불명 비중 큼
- 리스크 룰 발동: 포지션 상한/스텝/손실 트리거 위반
| 트리거 | 설명 | 기본 액션 | 필수 로그 필드 |
|---|---|---|---|
| 합의 점수 약함 | |Final Score|가 너무 작음 | HOLD | score_breakdown, threshold_id |
| 핵심 신호 confidence 전반 낮음 | 평균 c 낮음 | HOLD 또는 size 축소 | avg_confidence, low_conf_sources |
| 근거 부족 | evidence 누락/출처 불명 비중 큼 | HOLD + needs_review | missing_evidence_list, source_quality |
| 급변동/이벤트 리스크 | 변동성 급등·거래정지·중요 이벤트 직전후 | HOLD | volatility_flag, market_status |
| 리스크 룰 발동 | 상한/스텝/손실 트리거 위반 | HOLD 또는 reduce | violated_rule, account_state_snapshot |
HOLD도 결정으로 기록(사유 필수).
운영 포인트: Stop rule은 “아무것도 안 함”이 아니라 결정 하나를 한 것입니다. 반드시 “왜 hold였는지”를 로그에 남겨야 다음 주 리뷰에서 개선이 됩니다.
로그를 어떤 단위로 남기고, 나중에 같은 입력으로 다시 돌려보는(리플레이) 구조를 어떻게 잡을지는 전략 운영에서 로그/리플레이(리뷰) 구조 만들기에서 필드 설계·리뷰 템플릿과 함께 다룹니다.
멀티에이전트/LLM 시스템에 붙이는 방법: JSON 출력 → 검증 → 충돌 해결 엔진
충돌 해결은 “좋은 판단력”이 아니라 입력 형식이 고정되어야 돌아갑니다.
- 신호 입력 최소 필드: signal_type, direction, confidence, evidence, horizon, timestamp
- 충돌 해결 엔진 출력: final_action, reason, stop_rule_triggered, score_breakdown
final_action·score_breakdown 같은 필드를 쓰려면 에이전트 출력을 먼저 JSON으로 고정해야 한다. LLM 에이전트 출력 표준화: JSON 스키마 템플릿으로 분석→예측→결정 연결하기에서 분석·예측·결정 단계별 스키마와 필수 필드를 정리했다.
엔진이 낸 final_action을 실제 주문으로 넘길 때는 계정 상태(Account State)와 실행 레이어가 선행되어야 한다. 계정 상태(Account state)·주문 실행(Execution) 레이어 설계에서 최소 스키마와 5개 게이트를 다룬다.

실제 예시: “결정 흔들림”을 줄이는 Before/After
| 구분 | 신호별 상황 | 결과 |
|---|---|---|
| Before | 기술적: 돌파라 매수 | 하루에 결정을 3번 바꾸고, 결과는 과매매 + 후회. |
| 뉴스: 불안한 루머가 떠서 손절 | ||
| 매크로: 금리 상승 중이라 또 망설임 | ||
| After(룰 적용) | 공시/확정 이벤트가 없고, 뉴스는 출처 불명 → 뉴스 신뢰도 강등 | “안 산 이유”가 로그에 남고, 다음에 같은 상황이 오면 재현 가능. |
| 기술적은 매수(+), 매크로는 중립(0), 합의 점수는 약함 → Stop rule 발동(hold) |
결정 안정성 분석
주간 결정 변경 횟수 — 룰 도입 전 vs 후
x축은 주(week), y축은 결정 변경 횟수(주간 합)입니다. 결정 변경이란 같은 자산·전략에서 하루/세션 안에 최종 결정이 바뀐 횟수를 주 단위로 더한 값입니다.Before는 룰 도입 전, After는 룰 도입 후 구간입니다. 차트의 세로 점선은 Rule Live가 적용된 시점을 나타냅니다.비교에 쓴 지표 예시는 결정 변경 횟수, 거래 빈도, 규칙 위반률이며, 데이터는 내부 로그를 사용했습니다.
FAQ
자주 묻는 질문
- 뉴스가 뜨면 기술적 신호는 무시해야 하나요?
- 아니요. 우선순위(확정성/품질)로 먼저 정리하세요. 공시급 확정 정보면 상향, 루머면 강등이 맞습니다.
- 우선순위와 가중치를 동시에 쓰면 복잡하지 않나요?
- 오히려 반대입니다. 우선순위가 "상위 룰(예외 처리)"을 맡고, 가중치가 "일반 케이스 합의"를 맡으면 운영이 단순해집니다.
- Stop rule 기준은 어떻게 정하나요?
- 처음엔 보수적으로 시작하세요. "합의 점수 약함 + 신뢰도 낮음" 같은 간단한 기준으로도 과매매가 줄어듭니다.
- LLM이 신호를 과신(환각/단정)할 때는?
- 용어(enum)·근거(evidence)·형식(JSON) 3가지를 고정하고, 검증 실패 시 hold로 떨어뜨리세요. LLM 환각 줄이는 프롬프트 제약 체크리스트를 참고하세요.
결론: 신호 충돌 해결의 목표는 “정답”이 아니라 “일관성”이다
신호 충돌 해결은 유형화 → 우선순위 → 가중치 합의 → Stop rule → 로그/리뷰로 끝납니다. 오늘 해야 할 일은 딱 하나입니다. 내 결정을 흔드는 “충돌 패턴 6개”를 표로 만들고, 우선순위/가중치/거부권을 고정하세요.
시각화 자산 및 데이터 목록
아래 목록은 디자인·데이터 분석·콘텐츠 제작 등 후속 작업을 위한 기획 가이드라인입니다.
- [일러스트: 뉴스·공시·기술·매크로 4종 신호가 충돌하는 순간]
↳ 제작 지시: 네 개의 신호 소스(문서/차트/뉴스 티커/지표)를 각각 다른 방향으로 당기는 화살표나 장면으로 표현. “한쪽은 매수, 한쪽은 불안” 같은 감정 단어 없이, 시선이 갈라지는 “충돌”만 직관적으로 전달. 색은 소스별로 구분하되 과하지 않게. - [인포그래픽: 충돌 해결 3단계 플로우 — 우선순위 → 가중치 합의 → Stop rule]
↳ 제작 지시: 세 단계를 가로 또는 세로 플로우로 배치. 1단계는 “예외 처리(상위 룰)”, 2단계는 “일반 케이스(합의 점수)”, 3단계는 “거부권(hold)”을 한 단어·아이콘으로 요약. 본문의 ConflictResolveThreeStepsFlow와 동일한 논리이되, 텍스트 양을 줄이고 화살표·박스로만 읽히게. - [표: 시장상태×이벤트유형별 우선순위 매트릭스]
↳ 제작 지시: 행=추세/횡보/급변동, 열=공시·매크로·뉴스·기술적. 셀에는 1~4 우선순위 숫자와 필요 시 한 줄 비고(예: “횡보에선 기술적 오신호 증가”). 본문 표를 그대로 시각 자산으로 사용 가능하며, 반응형에서 가독성만 확보하면 됨. - [차트: 신호별 기여도(뉴스/공시/기술/매크로) 스택바 + 최종 점수 시계열]
↳ 제작 지시: x축=일자(MM/DD), 왼쪽 y축=기여도 합(0~1.4), 오른쪽 y축=최종 점수(-1.5~+1.5). Stop rule 발동일은 마커 또는 배경색으로 구분. 데이터는 운영 로그 기반 실제 스키마(contribution_news 등)를 사용할 것. 가상 수치만 쓸 경우 “교육용 가상 데이터” 캡션 필수. - [차트: 주간 결정 변경 횟수 Before vs After(룰 도입 시점 표시)]
↳ 제작 지시: x축=주(week), y축=결정 변경 횟수(주간 합). Rule Live 주를 세로 점선으로 표시하고, Before 구간과 After 구간을 색·스타일로 구분. connectNulls=false로 Before/After가 서로 다른 시계열로 보이게. 실제 운영 로그가 있으면 해당 수치 사용, 없으면 Methodology에 “내부 로그·가상 데이터” 명시. - [다이어그램: 멀티소스 신호 → JSON 입력 → 충돌 해결 엔진 → final_action/주문]
↳ 제작 지시: 본문의 conflict-resolution-engine-flow.png와 동일한 목적. 4개 신호 소스가 하나의 “충돌 해결 엔진” 박스로 들어가고, 검증·가중치·Stop rule을 거쳐 final_action(또는 HOLD)과 로그로 나가는 흐름. 박스명은 signal_type, score_breakdown, stop_rule_triggered 등 필드명을 노출해도 됨. - [추상 일러스트: Stop rule — “안 한다”가 전략인 순간]
↳ 제작 지시: 손이나 캐릭터가 “진행”이 아닌 “멈춤”을 선택하는 이미지. 은유적 키워드: 방패, 신호등 빨간불, 일시정지 버튼, 문 닫기. “hold” “거부권” 같은 글자 없이 시선만으로 “충돌이 크면 참는 것”이 정답임을 전달. - [데이터: 신호 기여도·최종 점수·Stop rule 발동 여부 시계열]
↳ 제작 지시: 공신력 있는 백테스트/운영 데이터가 있으면 출처(논문, 데이터셋, 내부 로그 버전)를 반드시 명시. 예: arXiv 2602.00082 기반 연구라면 Table/Figure 번호와 기간을 캡션에 포함. 가상 데이터만 사용 시 “교육용·가상” 표기와 Methodology 링크를 함께 둘 것.