Pythonで株のキャッシュフローを8つのパターンに分類しよう!

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

株式投資において、キャッシュフローの分析は企業の財務健全性や成長可能性を評価するうえで欠かせないポイントです。キャッシュフローの分析は難しそうに思えるかもしれませんが、Pythonを使えば効率的にデータを整理し、視覚的に理解できるようになります。

この記事では、企業のキャッシュフローの8つのパターンの特徴とPythonを使って効率的に分析する方法を解説します。

キャッシュフローとは

キャッシュフローとは、一定期間における現金や現金同等物の流れを指します。つまり、企業が実際に受け取ったり支払ったりする現金の動きを表しています。

キャッシュフローは企業の実際の資金繰りを示すため、経営の健全性を判断する重要な指標となります。利益が出ていても、現金の流れが悪ければ企業は倒産する可能性があります。

投資家にとっては、キャッシュフローは企業の将来性や投資価値を判断する上で欠かせない情報です。

企業のキャッシュフローは、主に以下の3つに分類されます。

  1. 営業活動によるキャッシュフロー(CFO)
    • 本業の営業活動で生み出されたキャッシュ。プラスであれば利益をしっかりと生み出している状態です。
  2. 投資活動によるキャッシュフロー(CFI)
    • 設備投資や事業拡大のための支出や、資産売却で得たキャッシュの流れを示します。
  3. 財務活動によるキャッシュフロー(CFF)
    • 借入金や株式発行で調達した資金、あるいは配当金や返済で出ていった資金を指します。

これらのキャッシュフローの組み合わせによって、企業の資金使途や財務方針を8つのパターンに分類できます。

キャッシュフローの8つのパターン

キャッシュフロー計算書の3つの区分(営業活動、投資活動、財務活動)のプラスとマイナスの組み合わせによって、企業の経営状況を8つのパターンに分類できます。

パターン営業CF投資CF財務CF
健全型
改善型
積極型
安定型
救済型
リストラ型
勝負型
大幅見直し型

健全型

本業がうまくいっており、投資を行いつつ、借入金の返済もできている理想的な状態です。

改善型

本業ではあまりキャッシュを稼げていないので、資産売却で得た資金を借入金等の返済に回している可能性があります。不採算事業からの撤退や財務健全化を図っている企業だと見ることができます。

積極型

本業が好調で、借入金などを活用して積極的に投資を行っている状態です。成長のために資金を惜しまない企業と判断されることがあります。

安定型

本業で十分な利益を上げ、資産売却も行い、資金調達も実施している状態です。将来の大型投資に向けて資金を蓄えている企業に見られます。

救済型

本業の赤字を資産売却や借入金で賄っている状態です。銀行の融資姿勢次第では資金繰りに窮する可能性があるため、要注意です。

リストラ型

本業が赤字で、資産売却によって借入金を返済している状態です。この状態が続くと金融機関からの融資が止まる可能性があるため、早急な本業の回復が必要です。

勝負型

本業が赤字であるにもかかわらず、借入金によって設備投資を行っている状態です。事業再建中の企業に多く見られます。

大幅見直し型

本業が赤字にも関わらず、設備投資を行い借入金返済も行っているため、多額のキャッシュが流出している状態です。過去の実績はあるが現在は低迷している企業に多いです。

Pythonを使ったキャッシュフロー分析

次に、Pythonを使って実際にキャッシュフローを取得し、分類するコードを解説します。

必要なライブラリのインストール

pipでyfinanceをインストールします。

Bash
pip install yfinance

yfinanceの詳しい使い方については、下記の記事で解説しているので参考にしてみてください。

【Python】yfinanceの使い方を徹底解説!日本株や米国株の株価データや財務情報、為替データを取得する方法

キャッシュフローを分析するコード

以下は、Pythonを使ってキャッシュフローを8つのパターンに分類するサンプルコードです。

例として、トヨタ自動車のキャッシュフローを分析します。

Python
import pandas as pd
import yfinance as yf

# 企業の証券コードを設定(末尾に.Tを付ける)
ticker = '7203.T'

# 財務データを取得
ticker_info = yf.Ticker(ticker)
cash_flow = ticker_info.cash_flow

# 各データを抽出
cfo = cash_flow.loc['Operating Cash Flow'].fillna(0)
cfi = cash_flow.loc['Investing Cash Flow'].fillna(0)
cff = cash_flow.loc['Financing Cash Flow'].fillna(0)

# データフレームにまとめる
df = pd.DataFrame({
    '営業CF': cfo,
    '投資CF': cfi,
    '財務CF': cff
}).T

df.columns = [col.year for col in df.columns]


# キャッシュフローの分類
def classify_cashflow(cfo, cfi, cff):

    if cfo > 0 and cfi < 0 and cff < 0:
        return "健全型"

    elif cfo > 0 and cfi > 0 and cff < 0:
        return "改善型"

    elif cfo > 0 and cfi < 0 and cff > 0:
        return "積極型"

    elif cfo > 0 and cfi > 0 and cff > 0:
        return "安定型"

    elif cfo < 0 and cfi > 0 and cff > 0:
        return "救済型"

    elif cfo < 0 and cfi > 0 and cff < 0:
        return "リストラ型"

    elif cfo < 0 and cfi < 0 and cff > 0:
        return "勝負型"

    elif cfo < 0 and cfi < 0 and cff < 0:
        return "大幅見直し型"

    else:
        return "未分類"


# 各年の分類結果
for year in df.columns:

    cfo, cfi, cff = df[year]
    category = classify_cashflow(cfo, cfi, cff)
    print(f"{year}年: {category}")

コードを実行すると、以下のような結果が出力されます。

2020年はデータが無かったので未分類となっています。それ以外は、積極型と健全型という結果になりました。

ポイントの解説

財務データを取得

Python
# 財務データを取得
ticker_info = yf.Ticker(ticker)
cash_flow = ticker_info.cash_flow

# 各データを抽出
cfo = cash_flow.loc['Operating Cash Flow'].fillna(0)
cfi = cash_flow.loc['Investing Cash Flow'].fillna(0)
cff = cash_flow.loc['Financing Cash Flow'].fillna(0)

ticker_info = yf.Ticker(ticker)で指定した証券コードの財務データを取得します。ticker_infoの中には様々なデータが含まれているので、cash_flow = ticker_info.cash_flowでキャッシュフローのデータのみを抽出するしています。更に、営業キャッシュフローなどのデータを振り分けています。

キャッシュフローの分類

Python
# キャッシュフローの分類
def classify_cashflow(cfo, cfi, cff):

    if cfo > 0 and cfi < 0 and cff < 0:
        return "健全型"

    elif cfo > 0 and cfi > 0 and cff < 0:
        return "改善型"

    elif cfo > 0 and cfi < 0 and cff > 0:
        return "積極型"

    elif cfo > 0 and cfi > 0 and cff > 0:
        return "安定型"

    elif cfo < 0 and cfi > 0 and cff > 0:
        return "救済型"

    elif cfo < 0 and cfi > 0 and cff < 0:
        return "リストラ型"

    elif cfo < 0 and cfi < 0 and cff > 0:
        return "勝負型"

    elif cfo < 0 and cfi < 0 and cff < 0:
        return "大幅見直し型"

    else:
        return "未分類"

上記の表の条件に合うようにキャッシュフローの分類を行います。キャッシュフローのデータがない場合は、未分類となるようにしています。

おわりに

今回は、株のキャッシュフローの分析方法について解説しました。

キャッシュフローを8つのパターンに分けることで、企業の成長性や財務状況を把握することができます。特に、健全型や安定型が投資対象として良いとされています。

Pythonでキャッシュフローの分析をして、投資判断の参考にしてみてください。