Yuer DSL을 이용한 Fail-Closed 투자 위험 게이트 구축

발행: (2026년 1월 6일 오후 02:58 GMT+9)
6 min read
원문: Dev.to

It looks like only the source citation was provided. Could you please share the text you’d like translated? Once I have the content, I’ll translate it into Korean while preserving the original formatting and markdown.

문제 설명 (공학, 금융이 아님)

대부분의 AI 시스템은 투자 상황에서 모델이 실행되기 전에 실패합니다.

일반적인 실패 유형

  • 불완전한 정보가 조용히 용인됨
  • 불확실성이 서술적 확신으로 대체됨
  • AI가 방향성 언어를 생성함 (“looks good”, “probably safe”)
  • 인간이 AI 출력을 암묵적인 승인으로 간주함

이것은 시스템 설계 실패이며, 모델링 실패가 아닙니다.
따라서 우리는 한 단계 앞서 시작합니다.

이 시스템이 실제로 하는 일

이 시스템은 정확히 하나의 질문에만 답합니다:

이 투자 시나리오가 구조적으로 정식 평가 단계에 진입할 자격이 있습니까?

다음과 같은 질문에는 답하지 않습니다:

  • 우리가 투자해야 하나요?
  • 이 자산이 매력적인가요?
  • 예상 수익은 얼마인가요?

자격을 안전하게 판단할 수 없는 경우, 시스템은 거부합니다.
이는 결정 엔진이 아니라 위험 게이트입니다.

최소 Yuer DSL 위험‑게이트 요청

아래는 사전 평가 게이팅에 사용되는 최소 실행 가능한 요청 프로필입니다.
이는 Yuer DSL 자체가 아니라 Yuer DSL의 한 적용 시나리오입니다.

protocol: yuerdsl
version: INVEST_PRE_REQUEST_V1
intent: risk_quant_pre_gate

scope:
  domain: investment
  stage: pre-evaluation
  authority: runtime_only

responsibility:
  decision_owner: ""
  acknowledgement: true

subject:
  asset_type: equity
  market:
    region: ""
    sector: ""

information_status:
  financials:
    status: partial
  governance:
    status: unknown
  risk_disclosure:
    status: insufficient

risk_boundary:
  max_acceptable_loss:
    percentage_of_capital: 15

uncertainty_declaration:
  known_unknowns:
    - "Market demand volatility"
    - "Regulatory exposure"
  unknown_unknowns_acknowledged: true

constraints:
  prohibited_outputs:
    - investment_recommendation
    - buy_sell_hold_signal
    - return_estimation

이 요청은 설계상 결정을 내릴 수 없습니다.

Source:

실패‑클로즈 강제 적용 (검증자 로직)

실패‑클로즈 동작은 코드에서 강제되며, 정책 텍스트에서는 적용되지 않습니다.
아래는 단순화된 런타임 게이트 검증자 예시입니다:

def pre_eval_gate(request: dict):
    # 책임 앵커는 필수
    if not request.get("responsibility", {}).get("acknowledgement"):
        return block("NO_RESPONSIBILITY_ANCHOR")

    # 정보 완전성 검사
    info = request.get("information_status", {})
    for key, field in info.items():
        if field.get("status") in ("missing", "unknown", "insufficient"):
            return block(f"INSUFFICIENT_{key.upper()}")

    # 불확실성은 명시되어야 함
    uncertainty = request.get("uncertainty_declaration", {})
    if not uncertainty.get("known_unknowns"):
        return block("UNCERTAINTY_NOT_DECLARED")

    if not uncertainty.get("unknown_unknowns_acknowledged"):
        return block("UNCERTAINTY_DENIAL")

    return allow("ELIGIBLE_FOR_EVALUATION")

def block(reason):
    return {"status": "BLOCK", "reason": reason}

def allow(reason):
    return {"status": "ALLOW", "reason": reason}

핵심 특성

  • 점수화 없음
  • 순위 매김 없음
  • 대체 로직 없음

구조가 안전하지 않다면 → 시스템이 중단됩니다.

허용된 런타임 출력 (엄격히 제한됨)

런타임은 다음만 반환할 수 있습니다:

evaluation_gate:
  status: ALLOW | BLOCK
  reason_code: ""
  • ALLOW → 평가를 시작할 수 있음
  • BLOCK → 평가가 금지됨

둘 다 투자 품질이나 정확성을 의미하지 않습니다.

왜 이 시스템은 “도움을 주는” 것을 거부하는가

많은 AI 도구는 항상 답을 제공하도록 최적화됩니다.
책임이 큰 분야에서는 이것이 위험 요소가 됩니다.

이 게이트는 의도적으로:

  • 보수적
  • 거절 중심
  • 사용하기 불편

왜냐하면 초기에 거부하는 시스템이 늦게 설명하는 시스템보다 더 안전하기 때문입니다.

Responsibility Boundary (Critical)

The design explicitly prevents:

  • AI becoming a decision proxy
  • Humans offloading responsibility to language output

Decision authority remains human‑only.
The system only decides whether thinking is allowed to continue.

대상

유용한 대상

  • 전문 투자자
  • 내부 위험 및 컴플라이언스 팀
  • 되돌릴 수 없는 자본 결정을 내리는 창업자
  • 높은 책임성을 요구하는 AI 시스템을 구축하는 설계자

적합하지 않음

  • 거래 신호 생성
  • 자문 에이전트
  • 데모 기반 AI 워크플로우

One‑Sentence Summary

시스템은 당신이 무엇을 해야 할지 결정하도록 돕지 않으며, 언제 결정을 하면 안 되는지를 방지합니다.

최종 메모

Yuer DSL은 이 예제에 의해 정의되지 않습니다.
이는 EDCA OS와 정렬된 시스템에서 위험 정량화 행동을 고정하기 위해 사용되는 단일 애플리케이션 패턴입니다.

원칙은 간단합니다: 언어는 조건을 설명할 수 있지만, 평가를 진행하도록 허용할 수 있는 것은 fail‑closed 런타임뿐입니다.

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...