法人取引先の預金残高と入出金の推移から運転資金が足りなくなりそうな時期を見込み、融資を提案しに回る順番と話す材料を営業担当に出す
法人の取引先の預金残高と入出金の明細から、毎月の入金と出金を見込み、残高が必要な水準を割りそうな時期を出します。その確率と理由の数字を付けて、融資の提案に回る順番を担当者の一覧に載せます。
- 連携・自動化
- Python
- 対象業界
- 金融
- 対象部門
- 営業
- 対象業務
- 比較検討/集計・分析
- 主な課題
- データ分析に時間がかかる/営業フォローが追いつかない/属人化している
- AIで行う処理
- 予測
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★★★★
- 実装レベル
- 本格構成
- 費用感
- 個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が、月の初めに今月見直す30社を担当先の一覧から選ぶ
- 1社ずつ、端末で直近3か月の入出金の明細と月末残高を照会する
- 前年の同じ月の残高と、決算期・賞与の月を思い出しながら比べる
- 残高が減っている、大きな支払いがある、入金がずれている、と気づいた点をメモする
- メモをもとに、今月訪問する先と、そこで聞くことを決める
- 訪問の予定を営業支援システムに入れる
- 訪問し、資金の見通しを聞いて、記録を書く
- 自動毎週月曜の早朝、情報系のデータベースから前週までの日次残高と入出金の明細を取り出す
- 自動明細を「売上などの入金」「仕入などの出金」「給与・税・社会保険料・返済」「自社の口座間の移動」に分ける
- 自動取引先ごとに、月ごとの入金と出金を先6か月分見込み、残高の動きを数多く試算する
- 自動各月の残高が「必要な水準」を割る確率と、割る場合の不足額の目安を出す
- 自動残高が薄くなる理由を「伸びによるもの」「細りによるもの」「一時的な支払いの集中」に分ける
- 自動確率・不足額・時期の近さから順位を付け、理由の数字と聞くことの例を添えて、担当者ごとの一覧を営業支援システムに載せる
- 人担当者が一覧の上位を見て、今月訪問する先と聞くことを決める
- 人「細りによるもの」とされた先は、担当者が上席と融資の担当に回す
- 人訪問して資金の見通しを聞き、結果(需要あり/なし/他行で決定済み/業況の確認が要る)を記録する
各工程の詳しい説明を読む
- 担当者が、月の初めに今月見直す30社を担当先の一覧から選ぶ
- 1社ずつ、端末で直近3か月の入出金の明細と月末残高を照会する
- 前年の同じ月の残高と、決算期・賞与の月を思い出しながら比べる
- 残高が減っている、大きな支払いがある、入金がずれている、と気づいた点をメモする
- メモをもとに、今月訪問する先と、そこで聞くことを決める
- 訪問の予定を営業支援システムに入れる
- 訪問し、資金の見通しを聞いて、記録を書く
(a)明細を見る時間がない。 2番目は1社あたり数分から十分以上かかります。入出金が多い先ほど明細が長く、見るのに時間がかかります。 月末は事務が重なり、30社を見終わらないまま月が変わることがあります。
(b)見方が担当者ごとに違う。 ある担当者は月末残高だけを見て、別の担当者は給与振込の額の変化から人の増減を読みます。ベテランは、賞与の月の前に残高が細る先を覚えていますが、異動してきた担当者にはその記憶がありません。 何を見たかが記録に残らないので、引き継ぎでも伝わりません。
(c)気づくのが遅い。 3番目で比べるのは前年と直近です。「来月以降どうなりそうか」までは、頭のなかでしか見通せません。 結果として、残高がすでに下がってから気づき、そこから訪問の予定を入れる流れになります。
(d)選ばれない先がある。 1番目で選ぶ30社は、担当者が気になっている先に偏ります。預金と振込だけの先は、融資の取引がない分だけ後回しになり、2か月に一度の見直しから漏れがちです。 資金需要の芽が見えやすいのは、むしろこうした先です。
- 【自動】 毎週月曜の早朝、情報系のデータベースから前週までの日次残高と入出金の明細を取り出す
- 【自動】 明細を「売上などの入金」「仕入などの出金」「給与・税・社会保険料・返済」「自社の口座間の移動」に分ける
- 【自動】 取引先ごとに、月ごとの入金と出金を先6か月分見込み、残高の動きを数多く試算する
- 【自動】 各月の残高が「必要な水準」を割る確率と、割る場合の不足額の目安を出す
- 【自動】 残高が薄くなる理由を「伸びによるもの」「細りによるもの」「一時的な支払いの集中」に分ける
- 【自動】 確率・不足額・時期の近さから順位を付け、理由の数字と聞くことの例を添えて、担当者ごとの一覧を営業支援システムに載せる
- 【人】 担当者が一覧の上位を見て、今月訪問する先と聞くことを決める
- 【人】 「細りによるもの」とされた先は、担当者が上席と融資の担当に回す
- 【人】 訪問して資金の見通しを聞き、結果(需要あり/なし/他行で決定済み/業況の確認が要る)を記録する
3番目と5番目が、この設計の分かれ目です。 見込みを出すだけなら、残高の推移をなぞる線を引けば済みます。理由を分けないと、売上が落ちている先にまで「融資の提案に行きましょう」と出てしまいます。 それは取引先にとっても銀行にとっても良くない訪問です。
9番目の結果を必ず記録させるのは、予測の当たり外れを測るためです。 一覧の上位の先に行って、本当に資金需要があったのかが分からなければ、この構成が担当者の時間を正しい先に向けているかを確かめられません。
02今回想定するシステム構成
勘定系システム │ 夜間に日次の写しを作る ▼ 情報系のデータベース(日次残高・入出金の明細・融資の約定返済の予定・取引先の属性) │ ▼【トリガー】毎週月曜 5:00(行内のジョブ管理から起動) Python(行内のサーバー) ├─ pandas … 明細の区分け、月ごとの集計、自社の口座間の移動の除外 ├─ statsmodels(ETSModel)… 月ごとの入金と出金の見込み、残高の試算 ├─ 必要な水準の判定 … 割る確率、不足額の目安、時期 ├─ 理由の分け方 … 伸び/細り/一時的な集中 └─ scikit-learn(TimeSeriesSplit)… 過去の期間での当たり外れの検証 ▼ 営業支援システム ── 担当者ごとの一覧(順位・時期・確率・理由の数字・聞くことの例) ▼ 【人】担当者が訪問先を決め、聞き取りの結果を記録 └─ 細りによるもの → 上席・融資の担当へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Python(pandas、statsmodels、scikit-learn) | R、SAS |
| 連携 | 情報系のデータベース(勘定系の日次の写し) | 勘定系からの日次の CSV の書き出し |
| 出力先 | 営業支援システム(担当者ごとの一覧の取り込み) | 支店の共有フォルダの一覧表 |
| 定時実行 | 行内のジョブ管理 | OS のタスクスケジューラ |
新しく足すのは、行内のサーバーで動く Python の処理だけです。 勘定系にも融資のシステムにも書き込みません。読むのは情報系のデータベースの写しで、書くのは営業支援システムへ取り込む一覧だけです。
生成AIは使いません。 一覧に載せる「聞くことの例」は、理由の区分と数字から決まった文に当てはめて作ります。預金の明細は銀行の持つ情報のなかでも特に重いもので、行外のサービスに出す理由がこの構成にはありません。 文の言い回しを整えたくなったら、行内で閉じた環境があるかを先に確かめます。
見込みの中心は、statsmodels の ETSModel です。 公式のドキュメントでは、ETS のモデルは単純な指数平滑を、トレンドと季節性を含む時系列に広げたものとされ、背後に状態空間のモデルを持つと書かれています。誤差・トレンド・季節性のそれぞれを加法か乗法か、トレンドを減衰させるかを選べ、季節性を入れるときは1周期の長さ(seasonal_periods)の指定が要ります。 月ごとの入金と出金なら、1周期を12か月にします。
この構成で ETSModel を選ぶ理由は、結果の側にあります。 推定した結果(ETSResults)には、平均の予測と予測区間を計算する get_prediction と、状態空間の形で乱数の試算を行う simulate があります。「割るかどうか」ではなく「どのくらいの確率で割るか」を出すには、試算の道筋を数多く引ける simulate が要ります。 線を1本引くだけの手法では、確率が出ません。
03どうやって実装するのか
処理の起点を決める
毎週月曜の早朝に、行内のジョブ管理から起動します。 勘定系の日次の写しが情報系のデータベースにそろうのは前日の夜で、月曜の朝には前週の金曜までの明細が入っています。担当者が出社して最初に見る一覧が、前週までの動きを反映していることが大事です。
月に一度ではなく、毎週動かします。 見込みの単位は月ですが、月の途中で大きな入金が遅れたり、予定にない支払いが出たりすると、その月の残高の見通しが変わります。週ごとに見直すと、月末を待たずに順位が入れ替わります。 担当者は一覧の「先週から順位が上がった先」の印を見て、急ぐ先に気づけます。
決算期の前後と賞与の月の前は、とくに見直しの意味が大きくなります。 納税と賞与の支払いは、年に決まった月に大きな出金を作ります。その1〜2か月前に一覧の上に上がってくることが、この構成が働いている印です。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 日次残高 | 当座・普通預金の口座ごとの毎日の終わりの残高、直近36か月分 | 情報系のデータベース |
| 入出金の明細 | 日付、金額、入出金の別、取引の種類(振込・口座振替・総合振込・手形・現金など)、相手の名義、摘要 | 情報系のデータベース |
| 融資の約定返済の予定 | 自行の融資の、先6か月の返済日と返済額 | 融資のシステム(情報系の写し) |
| 取引先の属性 | 業種、決算期、口座を持つ名義の一覧(同じ会社の複数口座)、債務者区分、稟議中の案件の有無 | 情報系のデータベース |
| 必要な水準の設定 | 取引先ごとに「これを割ったら薄い」とみなす残高の水準 | 本部の法人営業部が決めた計算式 |
| 過去の訪問の結果 | 訪問日と、資金需要の有無の記録 | 営業支援システム |
質を決めるのは、いちばん上の2つと、口座の名義の一覧です。 同じ会社が自行に3つの口座を持ち、そのあいだで資金を動かしていると、口座ごとに見れば入金と出金が増えて見えます。名義の一覧で同じ会社の口座を1つにまとめ、口座間の移動を消してから見込みます。
必要な水準は、本部が式で決めます。 担当者ごとに決めると、(b)の見方の違いがそのまま残ります。たとえば「直近12か月の、月の出金(自社の口座間の移動を除く)の平均の半分」のように、取引先の規模に比例する式にします。これを割る見込みが出た先を、薄いとみなします。
債務者区分と稟議中の案件の有無は、順位を付けるためではなく、一覧から外すために使います。 区分が要注意先以下の先、すでに融資の稟議が動いている先は、営業の提案先の一覧には載せず、別の扱いにします(後述)。
データの取得方法を決める
情報系のデータベースから、SQL で必要な列だけを取り出します。 勘定系に直接つなぐことはしません。取り出しは Python から行い、結果は行内のサーバーの作業領域にだけ置きます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 口座ごとの日次残高 | 残高の写しの表 | 月の最低残高と月末残高 |
| 入出金の明細 | 取引の写しの表 | 区分けと月ごとの集計 |
| 約定返済の予定 | 融資の写しの表 | 先の月の決まった出金 |
| 名義の一覧 | 取引先の属性の表 | 口座のまとめ、口座間の移動の判定 |
| 区分と稟議の有無 | 取引先の属性の表 | 一覧から外す先の判定 |
取り出すのは、前週の金曜までの確定した日の分だけです。 当日分を混ぜると、締めの前の明細が入り、残高が日によって揺れます。取り出した日と、どの日までの明細かを、実行の記録に残します。
月ごとの最低残高も、日次の残高から作ります。 月末残高だけを見ると、月の半ばに給与と仕入の支払いが重なって底をつき、月末の入金で戻る先が見えません。資金が足りなくなるのは月末ではなく、月の途中の底です。 月の最低残高と月末残高の差を、過去の月から取引先ごとに覚えておきます。
AIへ渡す前に整形する
- 口座をまとめる … 名義の一覧で同じ会社の当座・普通預金を1つにまとめる
- 口座間の移動を消す … まとめた口座どうしの振替、他行の同じ名義の口座との振込を「自社の口座間の移動」として集計から外す
- 明細を区分ける … 取引の種類と摘要の決まった語で、次の4つに分ける
- 経常の入金(売上の回収など。振込入金、手形の取立入金) - 経常の出金(仕入・経費の支払い。振込出金、口座振替のうち税・社会保険料・返済以外) - 決まった出金(総合振込による給与、税と社会保険料の口座振替、自行の融資の約定返済) - 融資の実行と、それに準じる一時的な入金(集計から外し、記録だけ残す)
- 月ごとに集計する … 区分ごとの月の合計、月の最低残高、月末残高
- データの長さを確かめる … 36か月に満たない先は、季節の型を推定しない簡易な見込みに切り替える。24か月に満たない先は見込みを出さず「判定不能」とする
- 自行を通る流れの厚さを確かめる … 経常の入金の月平均が、決算書の月商のおおよその目安に比べて著しく小さい先は「自行を通る流れが薄い」と印を付ける
2番目を軽く見ないでください。 他行の自社口座へ資金を移す動きは、自行の口座だけ見ると「大きな出金」です。これを残すと、資金を他行に寄せた月ごとに「残高が足りなくなる」と出て、一覧の上位が口座間の移動で埋まります。 相手の名義が自社と同じものは、金額にかかわらず外します。
3番目で給与と税を分けておくのは、出金の性質が違うからです。 給与と社会保険料は毎月ほぼ同じ額が出て、賞与の月に跳ね上がります。税は決算期から決まった月に大きく出ます。仕入の支払いのように売上につれて動く出金とは、見込みの立て方を変えます。
6番目の印は、一覧の読み方を変えるためのものです。 自行を通る流れが薄い先は、口座の残高が薄くても、ほかの銀行に十分な資金を持っているかもしれません。順位は付けますが、理由の欄に「自行を通る流れが薄い」と必ず書きます。
AIに処理させる
この構成で「AI」にあたるのは、ETSModel による見込みと、その試算から確率を出す部分です。 文章を作る生成AIは使いません。させることを、次の表に分けます。
| させること | 中身 |
|---|---|
| 経常の入金の見込み | 月ごとの合計を、トレンド(減衰あり)と12か月の季節性を持つ ETSModel で先6か月見込む |
| 経常の出金の見込み | 同じ形の ETSModel を入金とは別に当てる |
| 決まった出金の置き方 | 給与と社会保険料は直近の月の額、賞与は過去の同じ月の額、税は決算期から決まる月の過去の額、返済は約定の予定をそのまま置く |
| 残高の試算 | 入金と出金の simulate を1,000本ずつ引き、決まった出金を足し引きして月末残高を積み上げる |
| 月の底の推定 | 月末残高から、取引先ごとの「月の最低残高と月末残高の差」の過去の分布を引いて底を推定する |
| 確率と不足額 | 各月の底が必要な水準を割る本数の割合と、割る場合の不足額の中央値 |
| 理由の区分 | 入金の見込みの伸び・横ばい・減り、出金の伸び、決まった出金の集中から、伸び/細り/一時的な集中に分ける |
理由の区分は、規則で決めます。 たとえば、入金の先6か月の見込みが前年の同じ期間より5%以上多く、出金がそれ以上に多いなら「伸び」。入金の見込みが前年より10%以上少ないなら「細り」。入金と出金に大きな変化がなく、賞与・納税・返済が同じ月に重なるだけなら「一時的な集中」。境目の数字は本部が決め、変えたら版を上げます。
| させないこと | 理由 |
|---|---|
| 融資の可否や金額の判断 | 預金の動きだけでは返済の力は分からない。審査は別の手続きで行う |
| 業況の良し悪しの評価 | 「細り」は聞き取りの手がかりで、業況を決めつけるものではない |
| 他行の口座の残高の推測 | 見えないものを推測で埋めない |
| 必要な水準の自動の調整 | 水準は本部が決める。予測に合わせて動かさない |
| 一覧から外した先の順位づけ | 要注意先以下・稟議中の先は別の扱い。営業の一覧に混ぜない |
2行目がいちばん大事です。 「細り」と出た先を、担当者が「業況が悪い先」と受け取ると、聞き取りの前に構えてしまいます。入金が減る理由には、大口の取引先が支払いを他行の口座に変えただけ、ということもあります。 一覧には理由の数字だけを出し、評価の言葉は使いません。
指示内容を固定する
生成AIへのプロンプトはありません。 代わりに、見込みと判定の設定を1つの設定ファイルにまとめ、本部が管理します。担当者が触るものではありませんが、何を見て、どう判定しているかを、本部の誰でも読める形にしておくのが目的です。
# 資金需要の見込み 設定(版:2026-10 第3版)
【対象】
- 当座・普通預金を持つ法人の取引先。個人事業主は別の設定で扱う
- 除外:債務者区分が要注意先以下/融資の稟議中/口座開設から24か月未満
【見込み】
- 単位:月 期間:先6か月 学習:直近36か月
- 経常の入金・経常の出金:ETSModel(error="add", trend="add",
damped_trend=True, seasonal="add", seasonal_periods=12)
- 36か月未満24か月以上:seasonal=None に切り替え、理由の欄に「季節の型なし」
- 試算の本数:1,000本(simulate)。乱数の種は実行日から決める
【必要な水準】
- 直近12か月の月の出金(口座間の移動を除く)の平均 × 0.5
- 月の底 = 月末残高の試算 - 過去の「月末と月の最低の差」から無作為に1つ
【判定】
- 割る確率 = 底が水準を割る本数 ÷ 1,000
- 一覧に載せる:先3か月のどこかで割る確率が30%以上
- 不足額の目安:割る本数の不足額の中央値(10万円単位に丸める)
【理由の区分(前年同期との比較)】
- 伸び:入金の見込み +5%以上 かつ 出金の伸びが入金の伸びを上回る
- 細り:入金の見込み −10%以下
- 一時的な集中:上記以外で、賞与・納税・返済が同じ月に重なる
- いずれにも当たらない:「区分なし」として数字だけ出す
【聞くことの例(区分ごとの決まった文)】
- 伸び:「売上の入金が前年より{入金の伸び}%増える見込みに対し、
支払いの伸びが{出金の伸び}%です。仕入や外注の支払いの時期をお聞きする」
- 一時的な集中:「{月}に{賞与・納税・返済}が重なり、例年この月の底が
{前年の底}でした。資金の手当ての予定をお聞きする」
- 細り:一覧には載せず、上席と融資の担当への連絡票にする
「細り」の文を作らないのは、意図してのことです。 決まった文で「入金が減っています」と書くと、担当者がそのまま取引先に伝えかねません。細りの先は営業の一覧から外し、上席が中身を見てから、誰がどう聞くかを決めます。
聞くことの例を「お聞きする」で終えているのも、同じ理由です。 一覧の文は担当者への手がかりで、取引先に読み上げる台本ではありません。「融資をご提案する」と書かないことで、提案ありきの訪問にしないことを、文の形で示します。
出力形式を固定する
営業支援システムに取り込む一覧は、取引先ごとに1行の表です。 あわせて、本部が検証に使うために、同じ内容を JSON でも残します。
{
"run_id": "2026-10-05T05:00",
"data_until": "2026-10-02",
"config_version": "2026-10 第3版",
"customer_id": "",
"officer_id": "",
"status": "listed | not_listed | excluded | insufficient_data",
"exclusion_reason": "",
"months": [
{ "month": "2026-11", "prob_below": 0.0, "shortfall_median": 0,
"trough_p50": 0, "required_level": 0 }
],
"first_month_over_30pct": "",
"reason_class": "growth | decline | concentration | none",
"reason_figures": {
"inflow_yoy_pct": 0.0, "outflow_yoy_pct": 0.0,
"fixed_outflows": [ { "month": "", "type": "bonus | tax | repayment", "amount": 0 } ]
},
"flags": ["thin_flow", "no_seasonality"],
"rank": 0,
"rank_change": 0,
"talk_hint": ""
}
1つ目の理由は、status で「載せない理由」を残せることです。 一覧に載らなかった先が、確率が低かったからなのか(not_listed)、外したからなのか(excluded)、データが足りなかったからなのか(insufficient_data)を分けます。担当者に「なぜこの先が出ないのか」と聞かれたときに、答えられます。
2つ目は、months で月ごとの確率を並べることです。 一覧の画面に出すのは最初に30%を超える月と、その月の確率と不足額の目安だけです。
| 順位 | 取引先 | 最初に薄くなる月 | 確率 | 不足額の目安 | 理由 | 印 |
|---|---|---|---|---|---|---|
| 1 | A社 | 2026年12月 | 72% | 1,800万円 | 一時的な集中(賞与・返済) | ↑3 |
| 2 | B社 | 2027年1月 | 55% | 3,200万円 | 伸び(入金+12%、出金+18%) | 新 |
| 3 | C社 | 2026年12月 | 41% | 600万円 | 伸び(入金+6%、出金+9%) | 自行を通る流れが薄い |
3つ目は、reason_figures で理由を数字のまま残すことです。 「伸び」とだけ書くと、担当者は何を聞けばよいか分かりません。入金と出金がそれぞれ前年より何%動く見込みか、どの月に何の決まった出金があるかを並べれば、聞くことが具体的になります。
4つ目は、config_version と data_until で、どの設定とどの日までのデータで出した一覧かを追えることです。 後から当たり外れを検証するときに、設定を変える前と後を分けられます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 情報系のデータベース | SQL の読み取り | 日次残高、明細、約定返済の予定、取引先の属性 |
| 行内のジョブ管理 | 定時の起動 | 毎週月曜 5:00 に Python の処理を起動する |
| 営業支援システム | 一覧のファイルの取り込み | 担当者ごとの一覧を「資金需要の見込み」の画面に載せる |
| 上席・融資の担当 | 連絡票(営業支援システムの通知) | 細りの先と、外した先のうち確率の高い先 |
| 検証用の保管場所 | JSON の保存 | 実行ごとの結果、設定の版、データの期間 |
勘定系と融資のシステムには、何も書き込みません。 この構成が出すのは訪問の順番の材料までです。融資の申込や稟議は、これまでどおりの手続きで始まります。
営業支援システムの訪問の記録に、結果の欄を1つ足します。 「資金需要あり(自行で検討)」「資金需要あり(他行で決定済み)」「資金需要なし」「業況の確認が要る」の4つから選ぶ欄です。これが当たり外れの答えになります。 欄が空のままだと、予測の良し悪しを測る方法がありません。
人が確認する
一覧の上から順に訪問先を決めるのは、担当者です。 一覧の順位は、そのまま訪問の予定にはしません。
- 担当者が上位10社を見る … 理由の数字と印を読み、すでに事情を知っている先は記録に一言を足す
- 担当者が訪問する先と聞くことを決める … 聞くことの例をそのまま使わず、取引先の事情に合わせて直す
- 細りの先は上席が見る … 連絡票を読み、担当者が業況を聞くか、融資の担当が同行するかを決める
- 聞き取りで資金需要を確かめる … 需要の有無、時期、金額、ほかの銀行への相談の有無を聞く
- 結果を4つから選んで記録する … 選んだ理由を一言添える
4番目の聞き取りが、この構成の要です。 一覧の数字は、自行の口座を通る流れから見た仮説です。取引先が「その月は大口の入金があるから大丈夫」と言えば、それが答えです。 その場合は「資金需要なし」と記録し、無理に話を進めません。
金融庁の監督指針は、銀行に対し、顧客の実際の資金需要に基づかない決算期を跨いだ短期間の与信取引の依頼などの、正常な取引慣行に反する不適切な取引の発生をどう防いでいるかを問うています。 過度な協力預金や歩積両建預金の受け入れなど、独占禁止法上問題となる優越的な地位の濫用も、同じ項目に並んでいます。一覧の上位に載ったことを理由に、需要を確かめないまま借り入れを勧めることは、この構成の使い方として認めません。
目標は、360社をならして1社5分です。 上位の10社前後は数分ずつかけ、残りは順位と理由だけを流し見ます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 口座開設から24か月に満たない | insufficient_data。一覧に載せず、担当者の見直しの対象に残す |
| 24か月以上36か月未満 | 季節の型を入れない見込みに切り替え、印「季節の型なし」を付ける |
| 自社の口座間の移動を見落とす | 担当者が「口座間の移動」と記録すると、名義の一覧に足す候補として本部に回る |
| 大口の一時的な入金(資産の売却など) | 経常の入金から外す語に摘要を足す。見込みが跳ねた先は、本部が週に1回まとめて見る |
| 決算期・賞与の月が変わった | 取引先の属性を直す。直すまでは、決まった出金の月がずれた一覧になる |
| 自行を通る流れが薄い | 順位は付けるが、印を必ず出す。担当者は他行の口座の状況を聞く |
| 情報系のデータベースの更新が遅れた | 実行を止め、前週の一覧を残す。データの期間が前週のままであることを画面に出す |
| 見込みの計算が収束しない先 | その先だけ前年同月の実績を置く簡易な見込みに切り替え、印を付ける |
| 要注意先以下・稟議中の先 | excluded。確率が高ければ融資の担当への連絡票にだけ載せる |
上の3行が、運用の始めに多く出ます。 どれも予測の問題ではなく、明細の区分けと名義の一覧の問題です。 最初の数か月は、担当者の記録から区分けの語と名義を足す作業が中心になります。
「見込みが跳ねた先」を本部が見るのは、一覧の信頼を守るためです。 土地の売却代金が入った月を経常の入金に数えると、翌年の同じ月の入金が大きく見込まれ、その分だけ出金が多く見えて確率が下がります。一度でも明らかにおかしい順位を見せると、担当者は一覧を見なくなります。
記録を残す
- 実行ごとの記録:実行日時、データの期間、設定の版、対象の社数、
statusごとの件数 - 取引先ごとの結果の JSON(月ごとの確率、不足額の目安、理由の数字、順位)
- 担当者が記録した訪問の結果と、結果を選んだ理由の一言
- 設定を変えた日と、変えた内容、変えた人
- 担当者が「口座間の移動」「一時的な入金」と指摘した明細と、区分けの語を足した記録
3つ目と1つ目を突き合わせるのが、検証の材料です。 一覧の上位30%の先のうち、訪問して「資金需要あり」だった割合を、月ごとに数えます。この割合が、担当者が自分で選んでいたころの割合を上回っていなければ、この構成の意味はありません。
検証には、scikit-learn の TimeSeriesSplit の考え方を使います。 公式のドキュメントでは、時系列のデータでほかの交差検証の方法を使うと、未来のデータで学習して過去で評価することになるため不適切とされ、分割のたびに学習の範囲が前の範囲を含んで広がっていくと説明されています。学習の範囲の終わりと評価の範囲のあいだに間を置く gap の指定もあります。本部は、過去36か月を順に区切り、「その時点までのデータで出した一覧」の上位に、その後の数か月で実際に借り入れや当座貸越の利用が増えた先がどれだけ入っていたかを測ります。 未来の明細を混ぜて測ると、当たっているように見えるだけです。
04実装レベルの3段階
最小構成は、確かめるための段階です。 担当者の手間は減りません。一覧が当たるかどうかを、過去のデータで見るだけです。 半自動化で、担当者は明細を開かなくなります。 月に1回の一覧を見て、訪問先を決めるだけになります。本格構成で毎週になり、この段階が本記事の想定です。 差が大きいのは、理由の区分と外す先の判定が入ることで、担当者が一覧を読み直す時間が減るからです。 段階を飛ばさないでください。 半自動化の一覧を2〜3か月使うと、口座間の移動の見落としと、区分けの語の足りなさが担当者の記録から集まります。そこを直してから毎週の実行に進むほうが、一覧の信頼が早く育ちます。
05工数削減シミュレーション
導入後 360件 × 5分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 法人の取引先が数百社以上あり、そのうち多くの先で給与振込や売上の入金口座として使われている地方銀行・信用金庫・信用組合。担当者が月末に入出金の明細を1社ずつ照会して資金需要を探しているが、見る先と見方が担当者ごとに違う場合。勘定系の日次の写しを情報系のデータベースに持っていて、行内のサーバーで Python を動かせる場合。予測の結果を訪問の順番づけに使い、融資の判断には使わないと決められる場合。
- 取引先の多くが他行をメインにしていて、自行の口座には入出金がほとんど流れていない場合。口座の開設から2年に満たない先が大半の場合。予測の結果で融資の可否や金利を決めたい場合(この構成は訪問の順番と話す材料までを扱います)。預金のデータを行外のサービスに出さなければ計算できない環境の場合。
07最小構成で試す方法
- 本部が、エリアの担当先から100社を選ぶ(過去1年に運転資金の借り入れがあった先を30社ほど含める)
- 情報系のデータベースから、その100社の過去36か月の月ごとの入金・出金・月末残高・月の最低残高を取り出す
- 1年前の時点までのデータで、Python の ETSModel を当て、その後6か月の確率を出す
- 確率の高い順に並べ、実際にその6か月のうちに借り入れの相談や当座貸越の増加があった先と突き合わせる
- 上位20社に入った先と、入らなかった先の、相談があった割合を比べる
過去で試すのは、答えがすでに分かっているからです。 1年前の時点で一覧を作っていたら、どの先に早く行けたかがその場で分かります。
| 出てきた内容 | 判断 |
|---|---|
| 上位20社に、相談があった先が多く入った | 週ごとの実行と営業支援システムへの取り込みに進む |
| 上位が口座間の移動の多い先で埋まった | 名義の一覧と区分けの語が先。予測の問題ではない |
| 細りの先が上位に多く入った | 理由の区分の規則を先に作る。営業の一覧から外す仕組みが要る |
| 相談があった先がほとんど上位に入らない | 自行を通る流れが薄い先が多い可能性。対象を給与振込の取引がある先に絞って試し直す |
2行目が出ることは珍しくありません。 失敗ではなく、口座のまとめ方を直す必要があることが分かったということです。名義の一覧を直してから、同じ100社で試し直します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 一覧の上位が口座間の移動の多い先で埋まる | 名義の一覧で口座をまとめ、同じ名義の振込を外す |
| 売上が落ちている先に提案の一覧が出る | 理由を伸び・細り・集中に分け、細りは営業の一覧から外す |
| 月末残高だけで見て、月の途中の底が見えない | 日次の残高から月の最低残高を作り、底で判定する |
| 一時的な大口の入金で翌年の見込みが歪む | 摘要で経常の入金から外し、跳ねた先を本部が見る |
| 未来のデータを混ぜて検証し、当たって見える | 時点を区切って、その時点までのデータだけで出した一覧で測る |
| 必要な水準を担当者ごとに決めてしまう | 本部が式で決め、版を管理する |
| 結果の記録が空のまま | 訪問の記録に結果の欄を必須で置く |
| 一覧の順位を融資の判断に使い始める | 訪問の順番の材料に限ると最初に決め、審査の資料に入れない |
| 需要を確かめずに借り入れを勧める | 聞き取りで需要を確かめることを手順に入れ、記録の選択肢を分ける |
| 自行を通る流れが薄い先を、残高が薄い先と読む | 印を出し、他行の口座の状況を聞く |
| 決算期や賞与の月が古いまま | 取引先の属性を年に1回、決算書を受け取ったときに直す |
上の2行が、この構成の失敗のほとんどです。 どちらも「残高が下がる」という同じ見た目から出発しています。口座の動きの意味を分けずに順位を付けると、担当者は一覧の上から順に、行くべきでない先に行くことになります。
下のほうの3行は、使い方の失敗です。 一覧がよく当たるようになるほど、融資の判断にも使いたくなります。預金の動きは、返済の力を測る材料ではありません。 審査は審査の手続きで行い、この一覧は「話を聞きに行く先」を選ぶことにとどめてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 法人の取引先の口座ごとの日次残高、入出金の明細(相手の名義・金額・摘要)、融資の約定返済の予定、債務者区分です。取引先の取引先の名前まで含む、銀行の持つ情報のなかでも特に重いデータです。
- 行外に出さない … 処理は行内のサーバーで行い、生成AIを含む行外のサービスに明細を渡しません。一覧に載せるのも、相手の名義ではなく、区分ごとの集計の数字だけにします
- 使う範囲を行内で決める … 預金の明細を営業の訪問の順番づけに使う範囲を、コンプライアンスの部署と取り決めます。個人事業主の口座は個人の情報を含むため、別の設定と別の取り決めで扱います
- 需要を確かめないまま勧めない … 金融庁の監督指針は、顧客の実際の資金需要に基づかない短期間の与信取引の依頼や、優越的な地位の濫用にあたる取引を、正常な取引慣行に反する不適切な取引として、その発生をどう防いでいるかを問うています。一覧は需要の仮説で、聞き取りで確かめるまでは提案の根拠になりません
- 一覧を審査に使わない … 一覧の確率や理由の区分を、融資の可否、金額、金利の判断の材料にしません。審査の担当者が一覧を見られない権限にしておくほうが確実です
- 「細り」の扱いを決めておく … 細りの先は営業の一覧から外し、上席が扱いを決めます。担当者が数字をそのまま取引先に伝えないよう、聞くことの例を作りません
- 設定と結果を残す … どの設定の版で、どの日までのデータで出した一覧かを残し、後から説明できるようにします
誤りが起きた場合のリスクは、資金需要のない先に借り入れを勧めることと、業況が変わっている先に提案の構えで行くことの2つです。 前者は聞き取りを省くと起き、後者は理由の区分を省くと起きます。どちらも、一覧を「答え」ではなく「仮説」として扱う手順で止めます。
10まず何から始めるか
1週目:名義の一覧と区分けの語を作る
エリアの担当先について、同じ会社の口座の一覧を作ります。あわせて、明細の取引の種類と摘要から、給与・税・社会保険料・返済・口座間の移動を見分ける語を書き出します。ベテランの担当者に、明細のどこを見て賞与や納税の月を見分けているかを聞くと、語が早く集まります。
2週目:過去の100社で試す
第8章のとおり、1年前の時点のデータで見込みを出し、その後の相談の有無と突き合わせます。上位に口座間の移動の多い先が入っていないかを最初に見ます。
3週目:使い方を取り決める
コンプライアンスの部署と融資の部署を交え、一覧を訪問の順番の材料に限ること、細りの先と外す先の扱い、需要の聞き取りの手順を決めます。決めた内容を、担当者に配る1枚の紙にまとめます。
4週目:月に1回の一覧を配る
半自動化の段階として、月に1回、エリアの全社の一覧を出して担当者に配ります。訪問の記録に、結果の4つの選択肢を足します。
2か月目: 担当者の記録から区分けの語と名義を足し、理由の区分の境目を見直します。3か月目以降: 毎週の自動実行と営業支援システムへの取り込みに進み、上位の先で「資金需要あり」だった割合を毎月数えます。その割合が担当者が自分で選んでいたころを上回り、担当者が明細を開かずに訪問先を決められるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| ETS のモデルが単純な指数平滑をトレンドと季節性を含む時系列に広げたもので、背後に状態空間のモデルを持つこと。誤差・トレンド・季節性を加法か乗法で選べ、トレンドの減衰を指定でき、季節性を入れるときは seasonal_periods の指定が要ること | statsmodels: ETSModel | 2026-10-09 |
| 推定した結果に、平均の予測と予測区間を計算する get_prediction、状態空間の形で乱数の試算を行う simulate、先の予測を出す forecast があること | statsmodels: ETSResults | 2026-10-09 |
| 時系列のデータでほかの交差検証の方法を使うと未来のデータで学習して過去で評価することになり不適切であること。分割のたびに学習の範囲が前の範囲を含んで広がること。学習の範囲と評価の範囲のあいだに間を置く gap の指定があること | scikit-learn: TimeSeriesSplit | 2026-10-09 |
| 過度な協力預金、過当な歩積両建預金等の受け入れ、関連会社等との取引の強要等、独占禁止法上問題となる優越的な地位の濫用や、顧客の実際の資金需要に基づかない決算期を跨った短期間の与信取引の依頼など、正常な取引慣行に反する不適切な取引の発生をどのように防止しているかが着眼点とされていること(Ⅱ-3-1-7-2、令和8年10月版) | 金融庁: 中小・地域金融機関向けの総合的な監督指針(PDF) | 2026-10-09 |
預金の明細を営業に使う範囲と、取引先への提案のしかたは、各金融機関のコンプライアンスの部署と決めてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1254)についてのご相談はこちらから。
