이 스킬
현금흐름 품질 × 거버넌스 감사 동시 적신호
accrual ratio (현금흐름 vs 회계이익 갭) + governance amber (이사회 독립성 / 특수관계자) + audit-change (감사인 변경) 3 신호 동시 발현 시 분식 / 회계 신뢰도 적신호. Dechow et al (2011) "Predicting Material Accounting Misstatements" 학술 결과 적용. analysis ↔ scan 격리 메우는 조합. 트리거 — '분식 의심', '회계 신뢰도', 'accrual governance audit'.
이어 가기
절차
실행 순서
- 1
`accrualRatio : float` · `highAccrual : bool`
- 2
`fcfNiRatio : float`
- 3
`boardIndependence : float` · `relatedPartyRatio : float` · `govAmber : bool`
- 4
`auditChanged : bool`
- 5
`flagCount : int (0~3)` · `tripleFlag : bool`
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 삼성전자 accrual + governance + audit triple
- HMM 회계 신뢰도 적신호
공개 호출 방식
import dartlab
import polars as pl
target = "005930"
c = dartlab.Company(target)
def latest_period(df):
if hasattr(df, "columns"):
for col in df.columns:
if str(col)[:4].isdigit():
return str(col)
return "latest"
def compact(obj):
if isinstance(obj, pl.DataFrame):
return {"type": "DataFrame", "rows": obj.height, "columns": obj.width}
if isinstance(obj, dict):
return {"type": "dict", "keys": list(obj.keys())[:8]}
return {"type": type(obj).__name__}
earnings_quality = c.analysis("earningsQuality")
cashflow = c.analysis("cashflow")
governance = c.analysis("governance")
cf = c.show("CF", freq="Y")
def ready(obj):
if isinstance(obj, pl.DataFrame):
return not obj.is_empty()
return bool(obj)
dual_flags = [ready(earnings_quality), ready(cashflow), ready(governance)]
emit_result(
table=[
{"signal": "earningsQuality", "result": compact(earnings_quality)},
{"signal": "cashflow", "result": compact(cashflow)},
{"signal": "governance", "result": compact(governance)},
],
values={"target": target, "flagCount": sum(dual_flags), "tripleFlag": all(dual_flags)},
date=latest_period(cf),
) 호출 동작
c.analysis("earningsQuality")— accrual ratio + FCF/NI 비율.c.analysis("governance")— 이사회 독립성 + 특수관계자 비중.c.scan("audit")— 최근 2 년 감사인 변경 여부.- 3 신호 boolean 결합 → triple flag.
대표 반환 형태
pl.DataFrame — 컬럼:
accrualRatio : float·highAccrual : boolfcfNiRatio : floatboardIndependence : float·relatedPartyRatio : float·govAmber : boolauditChanged : boolflagCount : int (0~3)·tripleFlag : bool
연계 절차
- 본 recipe → triple flag 종목 식별.
- tripleFlag = True →
recipes.credit.quantConsensus와 결합 — Beneish M-score 분식 신호와 교차 검증. - universe 적용 →
recipes.governance.auditNetwork로 cross-sectional flag.
기본 검증
ValidateRecipe(..., capture=False)기준으로 공개 호출 블록이 실행되어야 한다.requiredEvidence의 근거 종류가 모두 반환되어야 한다.- target을 바꿔도
Company("005930")하드코딩 가정이 남지 않아야 한다.
AI 직접 사용 방식
ReadSkill에서 사용자 질문과whenToUse를 맞춰 이 recipe를 고른다.GetSkillBody로 본문 전체를 읽고linkedSkills순서대로 먼저 필요한 엔진 skill을 확인한다.## 공개 호출 방식의 첫 Python 블록을 target만 바꿔ValidateRecipe(..., capture=False)로 smoke 실행한다.- 실행 결과의
skillRef,tableRef,valueRef,dateRef,executionRef중 누락된 근거가 있으면 답변을 작성하지 말고 호출 또는 근거 요구를 보강한다. - 답변은 결론, 핵심 근거, 메커니즘, 반례·한계, 후속 모니터링 순서로 작성하고
falsifier.description이 있으면 반례 단락에서 반드시 확인한다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | unknown | — |
| Web AI | unknown | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
- accrual ratio 가 산업 평균 (제조업 vs 서비스) 차이 무시.
- governance amber 정의가 회사 size / industry 별 thresholds 다름.
- 단일 신호 (accrual 만) 로 분식 단정 금지.
- 감사인 변경 = 분식 단정 금지 — 정상 rotation 도 있음.