Victor

[연재] 지분·지배구조 (2) 순환출자를 어떻게 계산하나

연재 · 2026-08-03

같은 질문에 답이 세 개 나왔습니다

 

이재용 회장은 삼성전자를 몇 퍼센트 갖고 있을까요.

 

제 화면에는 이 숫자가 세 개 있습니다.

 

  • 1.65% — 본인 이름으로 직접 들고 있는 몫
  • 3.906% — 계열사를 거쳐 내려오는 것까지 다 더한 몫
  • 16.77% — 주주총회에서 실제로 움직일 수 있는 표

 

셋 다 맞습니다. 셋 다 같은 공시에서 나왔고요. 그런데 어느 걸 화면에 크게 띄우느냐에 따라 이 사람이 삼성전자의 1% 주주로 보이기도 하고, 17% 주주로 보이기도 합니다.

 

 

지난 편에서 공시를 세 개 붙여 재료를 모았습니다. 오늘은 그 재료로 계산을 하는 이야기예요. 곱셈 자체는 초등학교 산수인데, 재벌 지배구조에서는 그 곱셈이 영원히 안 끝날 수 있습니다.

 

30%의 40%는 12%입니다

 

기본은 간단합니다. A가 B의 30%를 갖고, B가 C의 40%를 가지면, A는 C를 12% 갖고 있는 셈이에요. 0.3 × 0.4 = 0.12.

 

경로가 여럿이면 각 경로를 곱해서 더합니다. 화면에서는 이렇게 보입니다.

 

 

이재용 회장이 삼성물산을 갖는 경로가 두 개예요. 직접 들고 있는 19.76%가 하나, 삼성생명을 거쳐 오는 게 하나입니다. 두 번째 경로는 10.44% × 0.06% = 0.0063%로, 있으나 마나 한 크기죠. 그래도 화면에 적어둡니다. 왜 소계가 19.766%인지를 보는 사람이 확인할 수 있어야 하니까요.

 

숫자만 던지고 근거를 안 보여주면, 틀렸을 때 아무도 못 잡습니다. 그리고 이런 도구는 틀립니다. 반드시요.

 

곱셈을 화면에 노출할지는 한참 고민했어요. 10.44% × 0.06% = 0.0063%라는 표기는 솔직히 좀 지저분하거든요. 깔끔하게 소계만 보여주는 안도 만들어봤는데, 며칠 쓰다 되돌렸습니다. 소계만 있으면 제가 봐도 못 믿겠더라고요. 대신 각 구간의 퍼센트에 그 회사 업종 색을 입혀서, 숫자를 따라가면 어느 회사를 거친 건지 눈으로 짚을 수 있게 했습니다.

 

숫자 세 개가 다 필요한 이유

 

앞에서 답이 세 개라고 했잖아요. 하나만 고르면 안 되나 싶으실 텐데, 셋이 각각 다른 질문에 답합니다.

 

  • 직접 보유는 "이 사람 이름으로 등기된 게 얼마인가". 공시에 그대로 적혀 있는 값이고, 상속세나 지분 매각 같은 이야기에서 쓰입니다.
  • 경제적 소유는 "배당이 얼마나 흘러오는가". 회사가 1조를 벌면 이 사람 몫이 얼마인지를 봅니다.
  • 의결권 지배력은 "누가 사장을 정하는가". 합병을 밀어붙이거나 막을 수 있는 힘이고요.

 

재벌 지배구조 논쟁은 대개 두 번째와 세 번째의 차이에서 나옵니다. 배당은 조금 받는데 결정권은 다 쥐고 있다는 이야기죠. 그래서 이 도구는 셋을 다 계산해서 나란히 놓기로 했습니다. 하나만 골라 보여주면 그건 이미 해석을 한 겁니다.

 

문제는 회사들이 서로를 갖고 있다는 것

 

여기서 재벌 구조 특유의 문제가 나옵니다.

 

A가 B를 갖고, B가 C를 갖고, C가 다시 A를 갖는 구조가 있어요. 순환출자라고 부릅니다. 이러면 위 계산이 안 끝납니다. A에서 출발해 B, C를 거쳐 A로 돌아오고, 다시 B로 가고, C로 가고… 지분율이 점점 작아질 뿐 영원히 안 멈춰요.

 

해결은 두 줄이었습니다.

 

 

이번 경로에서 이미 지나온 회사는 다시 밟지 않는다. 그리고 깊이 8단계에서 무조건 멈춥니다. 이 두 가지가 있으면 계산은 반드시 끝나요.

 

여덟 단계면 충분한지 궁금하실 수 있는데, 실제 데이터에서 여덟 단계를 넘는 유효한 소유 사슬은 거의 없습니다. 그보다 깊어지면 지분율 곱이 0.0001% 수준이라 화면에서 의미가 없기도 하고요.

 

한 가지 더 조심해야 했습니다. 이렇게 경로를 끊으면, 순환 고리 안에 있는 사슬이 통째로 사라질 수 있어요. 상위 주주를 거슬러 올라가다 고리에서 끊기면 그 지점을 유효한 종점으로 기록하도록 따로 처리했습니다. 안 그러면 순환출자 그룹의 소유 사슬 표가 이유 없이 비어 보입니다.

 

순환출자를 찾아 그리기

 

계산에서 피하는 것과 별개로, 고리 자체는 찾아서 보여주고 싶었어요. 재벌 구조에서 순환출자는 그 자체가 이야깃거리니까요.

 

 

현대자동차그룹입니다. 순환출자 고리가 4개고, 그래프에서 주황색으로 그려집니다. 기아 18.1% → 현대모비스 30.7% → 현대자동차 35.2% → 다시 기아. 이런 식으로 네 개가 서로 얽혀 있어요. 삼성은 고리가 하나(삼성생명 0.06% → 삼성물산 19.34% → 삼성생명)뿐이라 비교하면 차이가 확 보입니다.

 

112개 그룹을 다 돌려보니 순환출자 고리가 잡히는 곳은 6개 그룹뿐이었습니다. 고리가 가장 많은 곳은 사조(16개), 그다음이 현대자동차(4개)고, 삼성·HDC·우리금융·크래프톤이 각각 1개예요. 저는 재벌이면 대개 얽혀 있을 거라 막연히 생각했는데, 실제로는 대부분 지주회사를 세워 위아래로 정리한 뒤였습니다. 만들기 전에는 몰랐던 것 중 하나입니다.

 

고리를 찾는 데는 잔재주가 하나 필요했습니다.

 

 

A→B→C→A와 B→C→A→B는 같은 고리인데, 그냥 찾으면 세 번, 네 번 중복으로 잡힙니다. 그래서 가장 작은 번호가 맨 앞에 오도록 회전시켜 놓고 비교하게 했어요. 그리고 고리 길이는 6단계까지, 개수는 30개까지만 찾습니다. 다 찾으려 들면 큰 그룹에서 시간이 폭발하거든요.

 

이런 상한은 정직하게 말하면 타협입니다. 완벽하지 않아도 화면이 뜨는 쪽을 골랐어요.

 

그리고 이 부분은 눈으로 확인하기가 어렵습니다. 고리를 하나 빠뜨려도 화면은 멀쩡해 보이거든요. 잘못된 화살표는 눈에 띄는데, 없는 화살표는 안 보입니다. 그래서 계산 쪽은 작은 가짜 데이터를 만들어놓고 답을 미리 정해둔 뒤, 코드가 그 답을 내는지 확인하는 식으로 검증했습니다. 지금 50개가 돌고 있어요. "곱셈이 맞는가", "경로가 여럿일 때 더하는가", "고리에서 멈추는가", "고리에서 끊긴 사슬을 종점으로 기록하는가" 같은 것들입니다.

 

실제로 마지막 항목은 검증을 짜다가 발견한 문제였습니다. 순환 고리를 피하는 코드가 고리 안쪽 사슬을 통째로 버리고 있었어요. 화면만 봤으면 몰랐을 겁니다. 삼성물산 소유 사슬이 조금 짧게 나오는 것뿐이었으니까요.

 

소유와 지배는 다릅니다

 

여기까지가 '경제적 소유'입니다. 지분율을 곱해서 내려가는, 배당을 받는 몫이요.

 

그런데 주주총회에서 손을 드는 힘은 이것과 다릅니다. 삼성생명을 지배하고 있다면, 삼성생명이 가진 삼성전자 지분 8.58%는 내 표처럼 움직입니다. 내가 삼성생명 지분을 20%만 갖고 있어도요. 이게 흔히 말하는 '적은 지분으로 그룹을 지배한다'의 원리예요.

 

그래서 계산을 하나 더 만들었습니다.

 

 

삼성 요약 화면입니다. 핵심 계열사인 삼성에피스홀딩스에서, 경제적 소유는 17.31%인데 의결권 기준 지배력은 74.3%. 괴리 배수 4.3배입니다.

 

계산 방식은 이렇습니다.

 

 

이미 지배하고 있는 주체들의 지분을 합쳐서, 그게 다른 어떤 개별 주주보다 크면 그 회사도 지배하는 것으로 봅니다. 그리고 그 회사가 가진 지분을 100% 내 것으로 승계해서 다시 계산해요. 더 이상 늘어나지 않을 때까지 반복합니다.

 

곱하지 않고 승계한다는 게 핵심이에요. 소유는 곱셈, 지배는 승계. 이 두 가지가 다르다는 걸 화면에서 나란히 보여주고 싶었습니다.

 

앞에서 본 이재용 회장의 삼성전자 16.77%가 이 계산의 결과입니다. 뜯어보면 삼성생명 8.58% + 삼성물산 5.05% + 본인 1.65% + 삼성화재 1.49%예요. 본인 지분은 그중 10분의 1도 안 됩니다.

 

 

이 계산은 단순화된 것입니다

 

여기서 한 가지는 분명히 해둬야겠습니다. 이 지배력 계산은 가정이 들어간 값이에요.

 

실제 주주총회에서는 이렇게 딱 떨어지지 않습니다. 소액주주가 위임장을 몰아줄 수도 있고, 금융 계열사가 가진 지분은 의결권이 제한되기도 하고, 국민연금이 반대표를 던지기도 하죠. 제 계산은 "블록으로 최대주주면 그 회사를 지배한다"는 한 줄 규칙을 반복 적용한 것뿐입니다.

 

그래서 화면에서도 이 숫자에는 '지배 의결권'이라고 이름을 따로 붙이고, 경제적 소유와 다른 칸에 뒀어요. 같은 표에 나란히 놓으면 둘 다 똑같이 확정된 사실처럼 보이니까요. 계산은 정확할 수 있지만, 계산의 전제는 늘 누군가의 선택입니다.

 

같은 계산을 반대 방향으로 돌리면 이런 표가 나옵니다. 이재용 회장이 모든 경로를 통해 각 계열사에 갖는 경제적 소유지분이요. 삼성물산 19.766%, 삼성생명 14.262%, 삼성카드 10.248%… 지분율이 그룹 안에서 어떻게 옅어지는지가 한눈에 보입니다.

 

사람이 붙잡은 곳 — 한화생명이 사람으로 잡혔습니다

 

계산 코드에서 AI는 꽤 정확했어요. 곱셈, 경로 탐색, 중복 제거 같은 건 사람보다 잘합니다. 제가 붙잡은 건 이번에도 판단이었습니다.

 

가장 황당했던 건 한화생명이 총수 일가로 잡힌 것입니다.

 

수집 단계에서 주주 이름이 두세 글자 한글이면 개인으로 보게 해뒀거든요. 그런데 '한화생명', '교보생명', '흥국화재' 같은 네 글자 회사 이름이 그 규칙에 걸립니다. 그래서 그룹 화면에 총수 일가 자리에 회사가 떡하니 앉아 있었어요.

 

 

결국 '생명', '화재', '증권', '캐피탈' 같은 회사 이름 꼬리를 40개 남짓 적어 넣고, 그걸로 걸러냈습니다. 그리고 지분이 0.1%도 안 되는 개인은 아예 빼기로 했어요. 어느 계열사에 0.01% 들고 있는 비가족 임원까지 그리면 화면이 사람 이름으로 뒤덮이니까요.

 

우아한 해법이 아닙니다. 목록을 손으로 적는 건 늘 나중에 새는 방식이에요. 그래도 지금은 이게 제일 정확합니다. 규칙 하나로 우아하게 풀려다가 SK 자회사를 전부 지주사로 만든 게 지난 편 이야기였고요.

 

이 일에서 배운 게 하나 있습니다. AI에게 "개인과 회사를 구분해줘"라고 시키면 그럴듯한 규칙을 금방 만들어줍니다. 두세 글자면 사람, 이런 식으로요. 그리고 그 규칙은 대부분의 경우 맞습니다. 문제는 나머지 몇 퍼센트인데, 그게 하필 화면 맨 위 '총수 일가' 칸에 뜹니다. 틀린 게 눈에 제일 잘 띄는 자리에 앉는 거예요.

 

그래서 요즘은 이런 종류의 규칙을 받으면 먼저 화면을 열고 눈에 띄는 자리부터 훑습니다. 코드를 읽는 것보다 빠르고, 이상한 걸 훨씬 잘 잡아냅니다.

 

100%가 넘으면 데이터를 의심합니다

 

계산이 맞는지는 어떻게 알까요. 지분 구조에는 다행히 자연스러운 검산이 하나 있습니다. 한 회사의 지분 합계는 100%입니다.

 

그래서 회사마다 알려진 주주 지분을 다 더해보고, 100%에서 1.5%포인트 넘게 어긋나면 경고를 붙이게 했어요.

 

 

이건 지금도 안 고쳐진 사례입니다. 삼성FN리츠인데, 삼성생명 78.04% + 삼성화재 74.92% + 미래에셋자산운용 13.65% + 한화생명 8.98%…를 더하면 179.99%가 나와요.

 

리츠는 공모·사모 구조가 겹쳐 공시가 이렇게 잡히는 것으로 보입니다. 원자료를 뜯어 고칠 수도 있었지만, 한 회사를 손으로 고치기 시작하면 나머지 1,878개를 다 못 믿게 됩니다. 그래서 경고만 붙이고 그대로 뒀어요. 대신 경제적 소유지분 계산에는 100% 상한을 걸어서, 이 숫자가 다른 계산까지 오염시키지는 않게 막았습니다.

 

 

깊이 8단계, 허용오차 1.5%포인트, 소유지분 상한 100%. 이 세 숫자가 계산 전체의 안전장치예요. 다 코드 맨 앞에 모아놨습니다. 나중에 바꿀 일이 생기면 여기만 보면 되니까요.

 

이렇게 한 데는 이유가 있습니다. 이런 값이 코드 여기저기에 흩어져 있으면, 나중에 "왜 8단계지?"라는 질문에 아무도 답을 못 합니다. 저조차도요. 한 곳에 모아두고 옆에 왜 그 값인지를 한 줄 적어두면, 반년 뒤에 열어봐도 판단을 다시 할 수 있습니다. AI와 만들 때 특히 그렇습니다. 코드는 빨리 늘어나는데, 왜 그렇게 했는지는 머리에만 남거든요.

 

다음 편

 

오늘은 곱셈과 승계, 순환출자를 끊는 방법, 그리고 100%를 넘는 숫자를 어떻게 다룰지에 대한 이야기였습니다.

 

다음 편은 이 계산 결과를 화면에 그리는 이야기예요. 회사 1,879개와 화살표 2,697개를 웹페이지 하나에 담았는데, 그래프 라이브러리까지 파일 안에 통째로 넣었습니다. 12MB짜리 HTML 한 장이 됐고, 인터넷 없이도 열립니다. 왜 그런 이상한 선택을 했는지 적어보겠습니다.

 

지분 구조는 victor-house.com/equity에서 보실 수 있습니다. 학습·참고용이고, 투자 판단의 근거로 쓰라고 만든 것은 아닙니다.

 

#지분구조 #지배구조 #순환출자 #재벌 #대기업집단 #DART #전자공시 #삼성그룹 #현대자동차그룹 #이재용 #의결권 #소유지배괴리 #경제적소유지분 #주주현황 #국민연금 #데이터시각화 #파이썬 #알고리즘 #그래프탐색 #AI활용 #AI자동화 #클로드 #바이브코딩 #비개발자개발 #데이터분석 #개인프로젝트 #사이드프로젝트 #도구만들기 #휴먼인더루프 #빅터하우스

댓글

    로그인 없이 쓰는 대신, 등록한 댓글은 직접 지울 수 없습니다. 지워야 할 댓글은 옆의 신고를 눌러주세요.
    네이버 블로그글 원문 보러가기 →유튜브 쇼츠만드는 장면 20초로 보기 →
    관리자 Victor · 문의는 우상단 신고·제안으로 남겨주세요.
    글과 화면은 정적 파일로 만듭니다. 댓글과 조회수만 외부 데이터베이스에 저장합니다 — 개인정보처리방침

    오류 신고 · 제안

    관리자 Victor에게 전달됩니다