현금흐름표의 재무 비율

Python으로 재무제표 분석하기

Rohan Chatterjee

Risk Modeler

JSON 데이터 읽기

  • 실무 데이터는 항상 스프레드시트로 오지 않습니다.
  • 종종 JSON(JavaScript Object Notation) 형식으로 옵니다.
  • 회사는 재무제표 정보를 JSON으로 제공할 수 있습니다.
  • pandasJSON 파일을 Python에 읽을 수 있습니다.
cash_flow = pd.read_json("cash_flow_statement.json")
print(cash_flow.head())

이 이미지는 로드한 현금흐름표 데이터의 상위 5개 행을 보여줍니다.

Python으로 재무제표 분석하기

현금흐름 대 순이익 비율

  • 영업활동 현금흐름이 순이익에서 차지하는 비중

  • 영업활동은 기업의 핵심 활동입니다

  • 값이 높을수록 핵심 영업에서 현금 창출 비중이 큽니다

공식:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Net income}}$$

Python으로 재무제표 분석하기

영업현금흐름 비율

  • 영업활동 현금흐름이 유동부채에서 차지하는 비중
  • 핵심 영업에서 생성한 현금으로 단기부채를 몇 번 상환할 수 있는지 측정
  • 1 초과면 단기부채를 충당하기에 충분한 현금을 창출함을 의미

공식:

$$\dfrac{\text{Cash flow from operating activities}}{\text{Current liabilities}}$$

Python으로 재무제표 분석하기

결측값 임putation

  • 실무 데이터에는 결측값이 흔합니다.
  • 비율의 분자는 있고 분모가 없거나, 반대일 수 있습니다.
  • 해결: 다른 회사의 데이터로 결측을 임퓨트합니다.
Python으로 재무제표 분석하기

결측값 임putation

  • 표시된 dataset DataFrame에서 "Total Current Liabilities"의 일부 항목이 NaN으로 누락되었습니다.

이 이미지는 현금흐름표 상단 행을 보여주며, total liabilities 열의 일부 항목에 결측값이 있음을 나타냅니다.

  • 동일 회사의 비결측값을 사용해 해당 회사의 유동부채를 대체(임퓨트)할 수 있습니다.
Python으로 재무제표 분석하기

결측값 임putation

  • 각 회사의 비결측값 평균으로 결측을 채웁니다:
imputation = dataset.groupby("company")["Total Current Liabilities"].transform("mean")

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"].fillna(imputation)
  • 임퓨트 후 dataset 예시:

이 이미지는 현금흐름표 상단 행을 보여주며, total liabilities 열의 일부 결측값과 이를 채운 imputed total current liabilities 열이 표시됩니다.

  • 보수적으로는 분위수를 사용할 수 있습니다.
Python으로 재무제표 분석하기

분위수로 결측값 임putation

  • 결측을 비결측값 중 70퍼센타일의 더 불리한 값으로 채우면 더 보수적입니다.

  • 의사결정에 쓸 비율은 보수적 임퓨트로 계산하는 편이 신중합니다.

  • company 기준 70퍼센타일로 임퓨트:
imputation = dataset.groupby("company")["Total Current Liabilities"]\
    .transform(lambda x: np.nanquantile(x, 0.7))

dataset["Imputed Total Current Liabilities"] = dataset["Total Current Liabilities"]\
    .fillna(imputation)
Python으로 재무제표 분석하기

연습해 봅시다!

Python으로 재무제표 분석하기

Preparing Video For Download...