본문 바로가기
{재테크}/주식

💾 프로그래머의 재테크 공부: 주식편 2화

by 탱타로케이 2025. 10. 22.
반응형

2화. 변수로 보는 시장 — PER, PBR, ROE의 디버깅

주식은 결국 숫자다.
그런데 초보자일수록 그 숫자들이 무슨 뜻인지 모른 채 “이 회사는 좋아 보여요” “이건 싸대요” 같은 말에 휘둘린다. 하지만 프로그래머는 다르다. 우리는 데이터를 보고, 변수의 의미를 분석하고, 조건을 조합해 패턴을 찾는다.

그래서 이번엔 시장의 대표 변수 세 가지, PER / PBR / ROE를 프로그래밍 언어처럼 해석해보자.

🧠 주식의 변수는 ‘기업의 상태값’

코드에서 int health = 100; 이라면, 이건 캐릭터의 체력을 나타낸다. PER, PBR, ROE도 마찬가지다. 모두 기업의 ‘상태값’을 표현하는 변수다.

  • PER (Price to Earnings Ratio) → 수익 대비 가격. “이 회사가 버는 돈에 비해 주가가 비싼가?”
  • PBR (Price to Book Ratio) → 자산 대비 가격. “이 회사가 가진 자산 대비 주가가 적절한가?”
  • ROE (Return on Equity) → 수익 효율. “이 회사는 주주 돈으로 얼마나 잘 굴리고 있는가?”

PER, PBR, ROE는 결국 ‘수익성’, ‘안정성’, ‘효율성’이라는 세 가지 축을 이룬다. 프로그래머 입장에서 보면 세 개의 독립 변수로 구성된 기업 모델인 셈이다.

🧩 PER — “가격이 논리에 맞는가?”

PER은 주가 ÷ 주당순이익(EPS)이다. 예를 들어, 한 주당 이익이 1,000원인데 주가가 20,000원이라면 PER은 20이다.

  • PER이 낮을수록: “이익 대비 가격이 저렴하다.” → 저평가 가능성
  • PER이 높을수록: “이익 대비 가격이 비싸다.” → 성장 기대 반영

하지만 주의할 점이 있다. PER은 업종마다 다르다. 성장주(예: AI, 반도체)는 PER이 높게 나오는 게 당연하고, 전통 산업(예: 철강, 금융)은 낮아야 정상이다.

PER은 “비싼가?”를 묻는 게 아니라, “이 산업에서는 이 가격이 합리적인가?”를 묻는 지표다.

즉, 코딩으로 치면 이렇게 볼 수 있다.

 if industry == "IT": acceptable_PER = 30 else: acceptable_PER = 10 if company_PER < acceptable_PER: print("저평가 가능성 있음") else: print("성장 기대가 이미 반영됨") 

🧱 PBR — “자산 대비 주가가 합리적인가?”

PBR은 주가 ÷ 주당순자산(BPS)이다. 1보다 낮으면 ‘자산보다 싸다’, 즉 이론상 청산가치보다 낮은 평가를 받는 것이다. 하지만 여기에도 함정이 있다.

회사가 부실하면 PBR이 낮아도 싸지 않다. 낮은 이유가 구조적인 문제 때문일 수 있기 때문이다.

예를 들어, - A회사: PBR 0.7, 부채비율 200%, 매출 감소 - B회사: PBR 1.2, 부채비율 50%, 매출 성장 두 회사 중 누가 더 좋은 회사일까? 당연히 B다. 이건 마치 코드의 복잡도를 보고 리팩토링 대상을 고르는 것과 같다. 숫자 하나만 보고 ‘좋다/나쁘다’를 판단하면 버그가 난다.

PBR이 낮다고 싸지 않다. 깨진 유리컵은 싸도 물을 담을 수 없다.

⚙️ ROE — “효율적으로 굴리고 있는가?”

ROE는 순이익 ÷ 자기자본으로 계산한다. 즉, 주주 돈으로 얼마나 수익을 내는지를 보여주는 지표다. ROE가 높을수록 ‘효율적인 기업’이다.

다만, 단기적으로 ROE가 높다고 무조건 좋은 건 아니다. 일시적 흑자나 자산 축소로 인한 착시 효과일 수도 있다. 따라서 최소 3~5년 평균 ROE를 봐야 한다.

프로그래머 입장에서 ROE는 알고리즘의 성능지표(performance metric)과 같다. 단일 테스트 결과보다 여러 환경에서의 평균 성능이 더 중요하다.

 roe_avg = mean(roe_last_5years) if roe_avg >= 10: print("지속적 수익 구조 보유") else: print("수익성 개선 필요") 

🧮 세 지표를 조합하면 기업의 ‘상태 모델’이 보인다

PER, PBR, ROE는 개별로는 의미가 약하지만 함께 보면 기업의 전체적인 건강 상태를 파악할 수 있다.

 if PER < 10 and PBR < 1 and ROE > 10: print("건전한 저평가 기업") elif PER > 30 and ROE < 5: print("고평가 혹은 성장 둔화 기업") else: print("중립적 상태") 

이건 투자라는 이름의 거대한 함수 속에서 기업 데이터를 입력받아 상태를 분류하는 조건문이다.

처음엔 이 조건을 눈으로, 그 다음엔 엑셀로, 나중엔 Python 코드로 분석하게 된다. 그게 바로 “데이터 기반 투자 사고”의 시작이다.

🧭 초보가 주의해야 할 세 가지 함정

  1. 숫자만 보고 판단하기 PER, PBR, ROE는 상황에 따라 달라진다. 맥락 없이 숫자만 보면 착시가 생긴다.
  2. 단기 지표에 과몰입하기 일시적인 실적이나 이벤트에 휘둘리지 말자. 최소 3~5년 데이터를 본다.
  3. ‘싼 게 좋은 것’ 착각 싼 주식보다 ‘살 이유가 명확한 주식’을 고르는 게 중요하다.
좋은 기업은 항상 싸지 않다. 싸다고 다 좋은 기업도 아니다. 데이터는 감정이 아니라 맥락으로 읽어야 한다.

🧠 정리 — 데이터를 읽는 습관이 투자의 첫걸음

프로그래머가 로그를 통해 시스템의 상태를 진단하듯, 투자자는 지표를 통해 기업의 체질을 분석한다. 숫자는 단지 데이터일 뿐, 진짜 의미는 그 데이터를 어떻게 해석하느냐에 달려 있다.

이제 우리는 단순히 “이 회사 좋다”가 아니라 “이 회사는 PER이 낮고, PBR이 적당하며, ROE가 높다”는 구체적인 언어로 시장을 해석할 수 있다. 그게 바로 초보에서 투자자로 성장하는 문법이다.


📍다음 편 예고:
이제 변수를 알았으니, 이를 조건문으로 엮어보자. 감정 대신 코드로 매매를 판단하는 법 — “if RSI < 30 then Buy”를 배워보자.

💡 요약 포인트 PER은 ‘가격의 논리성’, PBR은 ‘안정성’, ROE는 ‘효율성’이다. 세 지표를 함께 보면 기업의 체질이 보인다. 숫자는 감정보다 맥락으로 읽어야 한다. 투자도 결국 데이터 해석 능력이다.

728x90