はじめに
収益物件の簡易試算をするとき、こんな手作業が毎回発生していませんか?
- レントロール(賃料一覧)をPDFからExcelに転記する
- GPI(潜在総収入)→ EGI → NOI の計算式を毎回手組みする
revenue-kun(収益還元クン) はこの転記・計算式組みを自動化するOSSです。
レントロール(CSV または text-based PDF)を入力すると、直接還元法の収益試算Excelワークブックを出力します。
⚠ 出力値は「収益試算値」であり、鑑定評価による「収益価格」ではありません。
正式な価格判断・投資判断には不動産鑑定士等の専門家にご確認ください。
- GitHub: https://github.com/signal-yield/revenue-kun
- LP: https://signal-yield.github.io/revenue-kun/
- ライセンス: Apache 2.0
何を出力するか
--excel-output を指定すると3シート構成の .xlsx を生成します。
シート① 直接還元法_OER
| 行 | 項目 | 値 |
|---|---|---|
| E5〜E9 | 各収入(賃料・共益費・水道光熱費・駐車場・その他)年額 | ← レントロールシートの年計を自動参照 |
| E10 | GPI(潜在総収入) | =SUM(E5:E9) 自動 |
| E13〜E17 | 空室損失率・貸倒損失率・経費率・資本的支出・還元利回り | ユーザーが手入力 |
| E20〜E24 | EGI・運営費用・NOI・収益試算値 | 自動計算 |
収益試算値のセルは =IFERROR(E23/E17,"") — 還元利回りが未入力のうちは空白のまま、手入力後に自動表示されます。
シート② 直接還元法‗費用詳細版
管理費・修繕費・損害保険料・固定資産税等を年額で入力する補助シート。経費率の妥当性確認用で、OERシートのNOIには直接連動しません。
シート③ 読み取りレントロール
PDFから抽出した区画データ・月計・年計。空室区画には「ユーザーが賃料等を入力可能」と表示され、入力すると年計・OERシートの収入セルに反映されます。
技術構成
revenue-kun/
├── src/
│ ├── main.py # CLIエントリポイント
│ └── revenue_kun/
│ ├── extractor.py # pdfplumber でレントロール抽出
│ ├── calculator.py # GPI / EGI / NOI 計算
│ └── excel_writer.py # openpyxl で3シート生成
├── skill/ # claude.ai / Cowork 向けPackage Skill
│ ├── SKILL.md # Skillエントリポイント
│ └── scripts/ # build_skill.py でsrc/から同期
└── data/
├── sample_rentroll_simple.pdf # 合成サンプル(5区画・全入居)
└── sample_rentroll_missing_values.pdf # 合成サンプル(5区画・1空室)
主要ライブラリ:
- pdfplumber — text-based PDFからテーブルを抽出
- openpyxl — Excelワークブック生成・数式埋め込み
- PyYAML — 前提条件ファイル(assumptions.yaml)の読み込み
OER自動計算モデルの設計ポイント
E20:E24 の計算チェーンは N() 関数で空白をゼロとして扱うことで、一部の入力が未完了でも中間値まで自動表示されます。
E20 (EGI) = E10 * (1 - N(E13)) * (1 - N(E14))
E21 (運営費用) = E10 * N(E15)
E22 (NOI前) = E20 - E21
E23 (NOI) = E22 - N(E16)
E24 (収益試算値) = IFERROR(E23 / E17, "")
還元利回り(E17)だけは IFERROR で空白ガード — ゼロ除算を防ぎつつ、入力後すぐに収益試算値が表示されます。
claude.ai / Cowork Skill としての実装
ローカルCLIに加え、skill/ ディレクトリに Package Skill を実装しています。claude.ai / Cowork に導入すると、clone もターミナルも不要でレントロールPDFをアップロードするだけで動作します。
ワークフローは以下の通りです:
- Skill をリポジトリから導入(claude.ai / Cowork)
- レントロールPDFをアップロード
-
--dry-runで抽出内容(区画数・月計・欠損)を確認(Checkpoint A) - 問題なければ収益試算Excelを生成・ダウンロード(Checkpoint B でセル入力箇所を確認)
Claudeは空室損失率・経費率・還元利回り等の数値を提案しません。 これらはユーザーが専門家の助言や公的統計をもとに手入力します。
制限事項
| 制限 | 内容 |
|---|---|
| OCR・スキャンPDF | 対象外。text-based PDFのみ(pdfplumber) |
| qualifying real-world PDF評価 | 未完了(Issue #21 open)。実務検証済みとは表記しません |
| 欠損の自動補完 | 実施しません。欠損は missing_info.md に明記 |
| 鑑定評価・投資助言・税務助言 | 提供しません |
| Claude Skillマーケットプレイス公開 | 未定 |
テスト
python -m pytest tests/ # 200件
ユニットテスト(抽出・計算・Excel生成・Skill同期・免責文言)200件がパスしていることを継続的に確認しています。
今後の予定
- Issue #21: qualifying real-world text-based PDFでの評価(実物件PDF調達中)
- Issue #19: 評価後の追加改善
- Claude Skillマーケットプレイスへの公開(#21完了後に検討)
まとめ
revenue-kun は「転記と計算式組みの自動化」にフォーカスしたOSSです。判断(空室率・利回り・費用)はユーザーが行い、Claudeはその補助に徹します。
qualifying real-world PDF評価(Issue #21)が完了したタイミングで Gate 2(PR TIMES等)の情報発信を予定しています。それまでは合成サンプルでの動作確認版として公開します。
フィードバック・Pull Request歓迎です。