Purpose
Consolidate raw bank balances across multiple entities, accounts, and currencies into one daily position view — converted to a single reporting currency — and automatically flag low balances and unexpected day-over-day movements so the treasury team knows exactly which accounts need action before the funding cutoff.
When to Use
Invoke this skill when the user asks to:
- Build a daily cash position report from bank balance data
- Consolidate balances across multiple entities, banks, or accounts
- Convert foreign-currency balances into a single base/reporting currency
- Flag accounts that dropped below their minimum operating balance
- Identify unexpected or large day-over-day balance movements
- Produce a morning cash summary for a funding or sweep decision
Inputs Required
Before starting, collect:
- Balance data: Per-account balances — account name/number, entity, bank, currency, opening balance (or prior-day closing), and current/closing balance
- Base currency: The single reporting currency to consolidate into (e.g., USD, EUR, GBP)
- FX rates: Current spot rate per non-base currency to base; if omitted, note that rates must be supplied and flag any unconverted amounts
- Minimum balance thresholds: Per-account or per-entity floor balances that trigger a low-balance flag
- Movement threshold: The day-over-day change (absolute amount and/or %) that qualifies as "unexpected" — default: ±20% or ±$100K base equivalent, whichever is smaller
- As-of date: The position date the report represents
- Expected flows (optional): Known receipts/disbursements that explain large movements so they aren't falsely flagged
If minimum thresholds or a movement threshold are not provided, apply the defaults above and state the assumption in the report header.
Instructions
Step 1: Normalize and Validate the Balance Data
- Standardize every account row: entity, bank, account, currency, prior-day closing, current balance, day-over-day change.
- Flag data integrity issues before consolidating: missing currency, missing prior-day balance (movement can't be computed), duplicate account entries, or a balance with no matching FX rate.
- List any excluded or incomplete rows explicitly — never silently drop an account from the position.
Step 2: Convert to Base Currency
- Apply the supplied spot rate to each non-base-currency balance:
base_amount = native_amount × rate_to_base. - Show both native and base amounts for every account so the source figure is auditable.
- If a rate is missing for any currency, leave that balance unconverted, mark it clearly, and exclude it from base-currency totals with a note.
Step 3: Aggregate the Position
Build the consolidated view at three levels:
- Total: Total cash position in base currency across all entities.
- By entity: Base-currency subtotal per legal entity.
- By currency: Native totals per currency plus base equivalents (surfaces FX concentration).
- Compute total day-over-day movement in base currency and the net change by entity.
Step 4: Apply Low-Balance Flags
- Compare each account's current balance to its minimum threshold in the account's native currency.
- Mark each flagged account with severity:
- Breach: Balance below the minimum threshold.
- Watch: Balance within 10% of the minimum but not yet breached.
- For each breach, compute the shortfall amount (threshold − current balance) so the funding requirement is explicit.
Step 5: Apply Movement Flags
- For every account with a prior-day balance, compute day-over-day change in native currency (absolute and %).
- Flag any movement exceeding the movement threshold as Unexpected Movement, unless a supplied expected flow explains it — in which case tag it Explained and note the source.
- Distinguish inflows from outflows; a large unexplained outflow ranks higher than a large inflow.
Step 6: Build the Prioritized Action List
Rank required actions in order of urgency:
- Low-balance breaches with a funding shortfall (largest shortfall first)
- Large unexplained outflows (potential error, fraud, or unrecorded transfer)
- Watch-level accounts approaching their floor
- Data issues blocking a complete position (missing rates, missing prior-day balances) Each action states the account, the issue, the amount involved, and the recommended next step (e.g., fund, sweep, investigate, obtain rate).
Output Format
- Structure: Header (as-of date, base currency, assumptions) → Consolidated summary → By-entity table → By-currency table → Flags section (low-balance and movement) → Prioritized action list
- Length: 500–900 words plus tables, scaling with account count
- Format: Structured document with tables for account-level and aggregate figures; flags and actions as labeled lists
- Sections: Position Header → Total & Summary → By Entity → By Currency → Low-Balance Flags → Movement Flags → Prioritized Actions
- Tone: Treasury operations — precise, figure-first, no narrative padding; every number traceable to a source balance
Quality Checklist
Before delivering output, verify:
- [ ] Every account in the input appears in the position or is explicitly listed as excluded with a reason
- [ ] Base-currency total equals the sum of all converted account balances (numbers reconcile)
- [ ] Each account shows both native and base-currency amounts
- [ ] Every low-balance flag includes a computed shortfall amount
- [ ] Every movement flag states absolute and % change and whether it's explained
- [ ] Action list is ranked by urgency with a specific recommended step per item
- [ ] Any missing FX rate or prior-day balance is flagged, not silently ignored
Notes
- Large unexplained outflows deserve investigation before funding decisions — a movement flag can be the first sign of an error, duplicate payment, or unrecorded transfer.
- FX concentration in the by-currency view matters for hedging: a position that looks healthy in base currency may carry outsized exposure in one volatile currency.
- If the same data is run daily, prior-day closing should tie to the previous report's closing — a mismatch signals a missed or backdated transaction.
- When expected flows are supplied, use them to suppress false alarms, but never suppress a low-balance breach — a breach is actionable regardless of cause.
How to use this skill
This file is a Claude Code skill in Anthropic's standard format — markdown with YAML frontmatter at the top.
Installing in Claude Code:
~/.claude/skills/<folder-name>/SKILL.md— auto-loads in every session anywhere on your machine (recommended for skills you'll use across multiple projects)<your-project>/.claude/skills/<folder-name>/SKILL.md— auto-loads only when working in that project (recommended for project-specific skills)
Restart Claude Code or open a new session to register.
Using in Claude.ai, ChatGPT, Gemini, or other AI tools:
- Drag this file into a new chat, or copy and paste its contents
- Send your task or request as your next message — the AI will apply the skill where it fits
For Claude Code skill details: https://docs.anthropic.com/en/docs/claude-code/skills