ファイナンシャルプランナーって信用できないじゃないですか。信用できるかどうか判断するためには相手と同等以上の金融知識が必要になる。人間には利害関係があり、不動産屋と金融屋は特に倫理観がないので、利害関係がない分、たとえハルシネーションがあったとしてもLLMのほうがマシだと考える。
ということでMoneyForward ME の家計簿データをLLMに診断してもらうということを考える。
MoneyForward ME の家計簿データを一括でダウンロードするブックマークレット
https://gist.github.com/cho45/e0ed3e408f87ab9a5c29e2d612db82ab
過去1年分の取引履歴CSVデータを結合したものと、資産推移を以下のような形式で一括でダウンロードする。transactions 以下は構造化されていないCSVがそのまま入っている。
これ自体も Claude Code に指示しつつ書いたのでほぼ手は入れてない。
### JSON構造
```json
{
"exportDate": "2024-08-29",
"period": {
"from": "2023-09",
"to": "2024-08"
},
"monthlyAssets": [...],
"transactions": {...}
}
```
### フィールド詳細
#### `exportDate`
- データを取得した日付(YYYY-MM-DD形式)
#### `period`
- `from`: 取得期間の開始月(YYYY-MM形式)
- `to`: 取得期間の終了月(YYYY-MM形式)
#### `monthlyAssets`
月末時点の資産データの配列。各要素の構造:
```json
{
"date": "2024-08-31",
"assets": {
"現金・預金": 1000000,
"投資信託": 500000,
"株式": 300000,
"その他": 50000
}
}
```
#### `transactions`
取引履歴データ:
```json
{
"format": "csv",
"encoding": "utf-8",
"successCount": 12,
"failedMonths": [],
"rowCount": 365,
"data": "\"計算対象\",\"日付\",\"内容\",\"金額(円)\",\"保有金融機関\",\"大項目\",\"中項目\",\"メモ\",\"振替\",\"ID\"\n\"1\",\"2024/08/25\",\"給与 ABC株式会社\",\"300000\",\"△△銀行\",\"収入\",\"給与\",\"\",\"0\",\"abc123def456ghi789\"\n..."
}
```
- `successCount`: 正常に取得できた月数
- `failedMonths`: 取得に失敗した月のリスト
- `rowCount`: 取引データの行数(ヘッダー除く)
- `data`: 実際のCSVデータ(Shift-JISからUTF-8に変換済み、ダブルクォート付き)
### CSVデータフォーマット詳細
`transactions.data` に含まれるCSVは以下の構造です:
#### ヘッダー行
```
"計算対象","日付","内容","金額(円)","保有金融機関","大項目","中項目","メモ","振替","ID"
```
#### データ行の例
```
"1","2024/08/29","コンビニA店","-500","△△銀行","食費","食料品","","0","abc123def456"
"1","2024/08/28","給与 ABC株式会社","250000","△△銀行","収入","給与","","0","def456ghi789"
"1","2024/08/27","電力会社","-8500","○○カード","水道・光熱費","電気代","","0","ghi789jkl012"
"0","2024/08/26","証券会社 積立","30000","△△銀行","未分類","未分類","","1","jkl012mno345"
```
#### 各列の詳細
1. **計算対象**: 家計簿の計算に含めるかの判定(1=計算対象、0=計算対象外)
2. **日付**: YYYY/MM/DD形式の取引日
3. **内容**: 取引の説明文(店舗名、サービス名など)
4. **金額(円)**: 取引金額(収入は正数、支出は負数)
5. **保有金融機関**: 連携している金融機関名
6. **大項目**: MoneyForwardの大分類カテゴリ
- 例:収入、食費、住宅、水道・光熱費、通信費、交通費、税・社会保障、日用品、健康・医療、教養・教育、趣味・娯楽、衣服・美容、その他、未分類
7. **中項目**: 大項目の下位分類
- 例:給与、食料品、家賃・地代、電気代、ガス・灯油代、インターネット、電車、所得税・住民税など
8. **メモ**: ユーザーが手動で入力したメモ(空白の場合が多い)
9. **振替**: 振替取引の場合は1、通常取引は0
10. **ID**: MoneyForward内部のユニークな取引ID LLMへ指示をするプロンプト
家庭状況によって必要な診断が異なるので、ここに関しては↑のフォーマット情報を利用してプロンプトを生成するコードをLLMに書かせるのがよいと思う。
例えば最終的なプロンプトが以下のようになるようなコード自体をLLMに書かせる。
あなたは家計の浪費防止に特化したファイナンシャルアドバイザーです。以下のデータを基に「無駄な支出の特定」と「浪費防止策」を重点的に分析してください。 【家庭状況】 - 世帯主: 38歳 - 家族構成: 配偶者(38歳)・子供1人 (11歳) - 住居: 首都圏、賃貸マンション(家賃月xx万円) - 投資方針: 積極的 - 交通: 電車中心 妻と自分とで完全に財布が別で、厳密ではないが支出種別ごとに支払い者が違います。 食費や服飾費が妻、それ以外は自分という分類です。 <以下フォーマットされた分析データ> 【資産推移分析】 ... 【月別収支推移】 ... 【カテゴリ別年間支出】 ... 【異常値・変動分析】 ... **統計的外れ値(大口支出上位10件)** ... **カテゴリ別支出分布統計** ... 【浪費防止分析を実施してください】 1. **異常値に基づく浪費特定**: 統計的外れ値や前月比異常値から無駄な大口支出を特定。重複パターンから習慣的な無駄を抽出 2. **変動性からのリスク分析**: 月別変動係数の高いカテゴリから予算コントロールが困難な項目を特定し、安定化策を提案 ...
これを ChatGPT なり Gemini なり Claude にコピペする。データからわからない前提はしっかり書いておかないと適切にならない。
