Skip to main content

Securities lending playbook

Securities lending — the practice of lending securities to short sellers or other market participants in exchange for collateral — generates a continuous stream of transactions, collateral movements, and recall events that must be reconciled accurately. Falcon Veritas Intelligence (FVI) provides a securities lending playbook that handles the full lifecycle of loan initiation, mark-to-market, collateral substitution, and recall.

Why securities lending is complex​

Securities lending involves multiple counterparties and continuous reconciliation:

  1. Loan initiation — lender and borrower agree on loan terms (security, quantity, fee rate, term).
  2. Cash or non-cash collateral — borrower posts collateral (typically 102-105% of loan value for cash, 105-110% for non-cash).
  3. Mark-to-market — daily revaluation of loan and collateral.
  4. Collateral substitution — borrower can substitute collateral with lender's consent.
  5. Recall — lender can recall the loaned security, typically with T+1 or T+2 notice.
  6. Buy-in — if borrower fails to return recalled security, lender can buy in the open market.

FVI's securities lending playbook addresses each of these with purpose-built workflows.

FVI's securities lending architecture​

Step-by-step: enabling securities lending reconciliation​

  1. Connect lending agents. Wire your lending agent(s) (BNY, State Street, Northern Trust, eSec Lending, etc.) to FVI's ingestion pipeline. FVI normalizes lending agent files into the canonical loan record.

  2. Configure collateral templates. Set up collateral templates for each borrower, including eligible collateral types, haircuts, and substitution rules. FVI applies the templates to every collateral movement.

  3. Enable daily mark-to-market. FVI's daily cron job pulls market prices from your pricing service, revalues each loan and its collateral, and flags any collateral adequacy breaches.

  4. Configure recall workflows. Set up recall notice templates with the lender's standard recall period (T+1, T+2, or T+3). FVI's recall module tracks the recall notice, the borrower's response, and the buy-in trigger if the recall is not returned on time.

  5. Enable counterparty exposure reporting. FVI aggregates loans by borrower, calculates exposure (loan value × haircut), and produces the daily counterparty exposure report.

  6. Configure regulatory reporting. Enable the regulatory reporting module for the relevant jurisdictions (SEC 17a-3/4, FINRA, MAS, FCA, ESMA SFTR).

Mark-to-market​

FVI's daily mark-to-market runs at 6pm ET (post-market close):

  1. Pull loan ledger — retrieve all open loans and their current state.
  2. Pull market prices — retrieve closing prices for all loaned securities from your pricing service.
  3. Revalue loans — apply current prices to loan positions to compute current loan value.
  4. Revalue collateral — apply current prices to collateral positions to compute current collateral value.
  5. Check adequacy — compare collateral value to required collateral (loan value × required margin).
  6. Trigger margin calls — if collateral falls below the maintenance margin, trigger a margin call to the borrower.

Recall workflow​

Use cases​

  • Agent lenders — reconcile loans across multiple beneficial owners.
  • Principal lenders — reconcile proprietary lending books.
  • Borrowers — track loan obligations and collateral obligations.
  • Custodians — reconcile securities lending activity for safekeeping clients.
  • Hedge funds — track short positions and borrow costs.

Code samples​

TypeScript​

import { FVI } from '@falconveritas/sdk';

const fvi = new FVI({
baseUrl: 'https://api.falconveritas.com',
bearer: process.env.FVI_JWT!,
tenantId: process.env.FVI_TENANT_ID!,
});

// Get counterparty exposure
const exposure = await fvi.industries.securitiesLending.exposure({
asOf: '2026-08-22',
});

for (const cp of exposure.top_counterparties) {
console.log(`${cp.borrower}: $${cp.exposure.toLocaleString()} (${cp.loan_count} loans)`);
}

Python​

from falconveritas import FVI

client = FVI(
bearer=os.environ["FVI_JWT"],
tenant_id=os.environ["FVI_TENANT_ID"],
)

exposure = client.industries.securities_lending.exposure(as_of="2026-08-22")
for cp in exposure.top_counterparties:
print(f"{cp.borrower}: ${cp.exposure:,.0f} ({cp.loan_count} loans)")

Last updated: 2026-08-22 · Page owner: Documentation · Source: src/lib/industries/securities-lending/.