Applying FinGPT to the real cost problem in corporate treasury: subsidiaries hedging gross FX exposure when they should be netting first — and the AI-powered plugin pattern that fixes it.
Contributed by Moiz Mujtaba — Director of Product Management, cross-border payments and FX risk platforms across 17 global markets.
Primary Persona: FX Dealer / Relationship Manager at a payments company (Airwallex, Ebury, Wise, Wealthsimple, Corpay, Western Union Business Solutions, or similar)
| Dimension | Detail |
|---|---|
| Job-to-be-done | Grow revenue per client by deepening FX product utilisation |
| Measured on | Spread captured per client, client retention, wallet share |
| Peak pain moment | Month-end: corporate client calls asking why FX costs spiked again |
| Root cause they rarely surface | Client subsidiaries are hedging gross exposure — they never netted first |
| Primary value delivered | Business value: directly reduces client's FX translation losses — a measurable, reportable number the CFO cares about |
| Secondary value | Emotional: the dealer looks like a strategic advisor, not just a rate quoter |
Corporate subsidiaries in 3+ countries each manage their own payables and receivables independently. Without visibility across entities, each subsidiary hedges its own gross exposure. The result:
Without netting:
Subsidiary A hedges: USD 500,000 long GBP
Subsidiary B hedges: USD 480,000 short GBP
Net company exposure: USD 20,000
Actual hedging cost paid: on USD 980,000 ← this is FX clutter cost
With netting first:
Net exposure: USD 20,000
Hedging cost paid: on USD 20,000 ← 98% reduction
This is not a trading problem. It is a visibility and consolidation problem — and it is where AI creates immediate, measurable business value.
This document describes a two-layer AI engine built on FinGPT that solves this problem as an embeddable plugin for accounting software and treasury tools.
Reads multi-source treasury data (Excel, CSV, Xero, QuickBooks, NetSuite, Sage), identifies offsetting intercompany positions across subsidiaries and currencies, calculates net exposure, and produces a netting schedule with projected cost savings.
Takes post-netting residual exposure as input, layers in live FX rates and real-time market sentiment, and generates plain-English hedging recommendations the dealer can present directly to the CFO.
[Data Sources]
Excel / CSV / Xero / QuickBooks / NetSuite / Sage
│
▼
[Layer 1: Multi-Entity FX Exposure Consolidator]
FinGPT-RAG reads files → extracts payables & receivables by entity/currency
Netting engine → identifies offsets → calculates net exposure
│
▼
[Layer 2: FX Exposure Intelligence Layer]
OANDA API → live rates for residual exposure valuation
Serper AI → real-time FX news retrieval
FinGPT-Sentiment → sentiment scoring per currency pair
FinGPT-RAG → generates plain-English hedging recommendation
│
▼
[Output — rendered in Gradio UI or embedded in accounting software]
• Netting schedule with savings estimate
• Residual exposure by currency pair
• Hedging recommendation: instrument, ratio, plain-English rationale
• FX cost reduction vs. gross hedging baseline (the number the CFO reports)
| Component | Role |
|---|---|
| FinGPT-RAG | File parsing, netting logic, recommendation generation |
| FinGPT-Sentiment | Currency pair sentiment scoring from live news |
| Hugging Face Hub | Model hosting — FinGPT/fingpt-sentiment_llama2-13b_lora |
| Gradio | Demo UI — dealer uploads file, sees output in browser, no setup required |
| Serper AI | Real-time FX news retrieval (Google News via API) for sentiment context |
| OANDA API | Live mid-market FX rates for exposure valuation and netting calculations |
| Alpha Vantage | Historical FX rate data for hedge ratio backtesting |
| ECB SDMX API | EUR reference rates (free, no key required) |
| pandas + openpyxl | Excel/CSV parsing before RAG ingestion |
| Plaid / TrueLayer | Optional: direct bank feed ingestion instead of manual upload |
| Value Type | What It Looks Like Here |
|---|---|
| Functional | Dealer uploads one file instead of manually consolidating 6 subsidiary spreadsheets |
| Emotional | Dealer walks into the CFO meeting with a cost reduction number, not just a rate sheet |
| Business | CFO sees FX translation losses reduced by 40–70% — reportable to board, auditable |
| Social | Dealer is now a strategic treasury advisor, not a commodity FX provider — harder to replace |
The moment that matters: Month-end. The CFO has just seen the FX line on the P&L. The dealer who arrives with a netting analysis and a forward recommendation before the CFO asks why costs are high — that dealer keeps the relationship. That dealer grows wallet share.
Instruction: You are a corporate treasury analyst. Extract all multi-currency
intercompany payables and receivables from the data below.
Return a structured table with columns:
| Subsidiary | Counterparty Subsidiary | Currency | Amount | Direction | Due Date |
Input: [PASTE CONTENT FROM EXCEL / XERO / QUICKBOOKS / NETSUUITE / SAGE EXPORT]
Output:
Instruction: You are a corporate treasury analyst. Given the following intercompany
payment schedule, identify all netting opportunities across subsidiaries.
For each netting pair output:
1. Gross settlement amounts (both directions)
2. Net settlement amount and direction
3. Estimated FX conversion cost saving (use provided mid-market rates)
4. Recommended settlement date
Use OANDA mid-market rates: [RATES FROM API CALL]
Input: [STRUCTURED TABLE FROM PROMPT A]
Output:
Instruction: You are an FX risk advisor presenting to a CFO with no derivatives
background. Based on the residual post-netting exposure below and current market
conditions, generate a hedging recommendation.
Your output must include:
1. Hedge or not (yes / monitor / no action)
2. Recommended instrument (Forward / Vanilla Option / Natural Hedge)
3. Suggested hedge ratio with plain-English rationale
4. One-paragraph CFO summary — no jargon
Residual exposure: [FROM NETTING OUTPUT]
Current market context (from Serper AI news retrieval):
[TOP 3 RELEVANT FX NEWS HEADLINES WITH DATES]
Current sentiment score (from FinGPT-Sentiment):
[SENTIMENT SCORE AND CONFIDENCE PER CURRENCY PAIR]
Output:
The fastest way for a payments company PM to demo this to a CFO client: a Gradio app the dealer opens on a laptop, uploads the client's treasury export, and shows real output within 60 seconds.
import gradio as gr
from fingpt_rag import extract_positions, generate_netting_schedule
from fingpt_sentiment import score_currency_sentiment
from oanda_api import get_live_rates
from serper_api import get_fx_news
def run_fx_analysis(file, currency_pairs):
# Step 1: Extract positions from uploaded file
positions = extract_positions(file)
# Step 2: Get live rates from OANDA
rates = get_live_rates(currency_pairs)
# Step 3: Generate netting schedule
netting = generate_netting_schedule(positions, rates)
# Step 4: Get market context
news = get_fx_news(currency_pairs)
sentiment = score_currency_sentiment(news)
# Step 5: Generate hedging recommendation
recommendation = generate_recommendation(netting.residual, rates, sentiment)
return netting.summary, recommendation
gr.Interface(
fn=run_fx_analysis,
inputs=[
gr.File(label="Upload treasury file (Excel, CSV, Xero, QuickBooks, Sage)"),
gr.CheckboxGroup(["EUR/USD", "GBP/USD", "USD/CAD", "USD/JPY"], label="Currency pairs")
],
outputs=[
gr.Dataframe(label="Netting Schedule + Savings"),
gr.Textbox(label="Hedging Recommendation (CFO-ready)")
],
title="Corporate FX Exposure Consolidator",
description="Upload your multi-entity treasury file. Get a netting schedule and hedging recommendation in 60 seconds."
).launch()Deploy to Hugging Face Spaces (free, shareable link):
huggingface-cli login
gradio deployThe dealer sends the CFO a link. No installation. No platform adoption required.
For payments company PMs who want to embed this inside their clients' existing tools rather than as a standalone app.
# Pull live payables/receivables directly — no manual upload
from xero_python import AccountingApi
from fingpt_rag import extract_positions_from_structured_data
# 1. Connect to accounting API
positions = AccountingApi.get_invoices(
statuses=["AUTHORISED"],
date_from="2026-02-01"
)
# 2. Run netting + FX analysis (same pipeline as Use Case 1)
analysis = run_fx_analysis(positions)
# 3. Push recommendation back into accounting software as a memo
AccountingApi.create_account_note(analysis.cfo_summary)- Expose the same pipeline as an Excel add-in via Office.js
- Dealer installs once; CFO runs the analysis from the ribbon
- Output lands in a new worksheet tab: netting schedule + recommendation side by side
| Feature | Complexity | Impact |
|---|---|---|
| MT940 bank statement parser (for European corporates) | Medium | High |
| Multi-period netting (weekly/monthly cycle optimisation) | High | High |
| Hedge ratio backtester using Alpha Vantage historical data | Medium | Medium |
| AML flag integration — surface sanctioned counterparty exposure | High | High |
| SAP / Oracle ERP connector | High | High |
- FinGPT-RAG — Retrieval Augmented Generation pipeline
- FinGPT-Sentiment — Financial sentiment analysis
- Hugging Face Spaces — Free Gradio app hosting
- OANDA API — Live and historical FX rates
- Serper AI — Real-time news retrieval API
- Alpha Vantage — Historical FX data
- ECB SDMX API — EUR reference rates (free)
- ISO 20022 — Global payment messaging standard
- AI4Finance Foundation