Skip to content

Latest commit

 

History

History
291 lines (224 loc) · 10.8 KB

File metadata and controls

291 lines (224 loc) · 10.8 KB

FinGPT: Corporate FX Exposure Management Use Cases

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.


Who This Is For

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

The Core Problem: FX Clutter Cost

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.


The Two-Layer Engine

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.

Layer 1 — Multi-Entity FX Exposure Consolidator

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.

Layer 2 — FX Exposure Intelligence Layer

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)

Tech Stack

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

Reforge Value Matrix

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.


Use Case 1: Netting + Hedging Recommendation (Core Flow)

Prompt A — Multi-source File Extraction

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:

Prompt B — Netting Schedule Generation

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:

Prompt C — FX Exposure Intelligence (Post-Netting)

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:

Use Case 2: Dealer Demo Mode (Gradio UI)

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.

Gradio App Structure

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 deploy

The dealer sends the CFO a link. No installation. No platform adoption required.


Use Case 3: Accounting Software Plugin (Embedded Pattern)

For payments company PMs who want to embed this inside their clients' existing tools rather than as a standalone app.

Xero / QuickBooks / NetSuite / Sage

# 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)

Excel Add-in

  • 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

What to Build Next (Contribution Opportunities)

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

References