
Shikamaru: Day-Count and Accrued Interest Engine
@JayOfemi
About Shikamaru: Day-Count and Accrued Interest Engine
Provably correct day-count and accrued-interest calculations. A small, dependency-light TypeScript library and an MCP server, so an AI agent can get the exact number instead of guessing.
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"shikamaru": {
"command": "npx",
"args": [
"-y",
"--package=@jayofemi/shikamaru",
"shikamaru-mcp"
]
}
}
}Tools
8Exact day-count fraction between two dates under a market convention. Dates are ISO YYYY-MM-DD. For ACT/ACT ICMA also pass frequency (coupons per year) and, for stub periods, the reference period boundaries. Deterministic; do not estimate this with a model.
Exact simple accrued interest (notional * rate * day-count fraction) between two dates. Dates are ISO YYYY-MM-DD; rate is the annual rate as a decimal (0.05 = 5%). Deterministic.
List the supported day-count conventions.
Whether a date is a business day under a holiday calendar, with the reason when it is not (weekend or holiday). Calendars are rules in code (no stale data feed). Deterministic; do not let a model guess market holidays.
Adjust a date to a business day under an ISDA convention and holiday calendar. Business days pass through unchanged. modified-following falls back to preceding rather than leave the month (the bond-market default). Deterministic.
Move a signed number of business days under a holiday calendar (settlement math: T+2 is count 2). Zero returns the date unchanged. Deterministic.
Generate coupon/payment accrual periods between an effective and a termination date: monthly to annual frequency, backward or forward roll, short or long stub, optional end-of-month rule, business-day adjustment per calendar. Returns each period's unadjusted and adjusted start and end. This is where hand-rolled date code goes wrong; do not approximate it.
List the supported holiday calendars with a one-line description of each.
Overview
What is Shikamaru: Day-Count and Accrued Interest Engine?
Shikamaru is a small, dependency-light TypeScript library and MCP server that provides provably correct day-count, holiday-calendar, business-day, and payment-schedule calculations. It is designed for AI agents that need exact dates or numbers instead of guessing.
How to use Shikamaru: Day-Count and Accrued Interest Engine?
Install the npm package (npm install @jayofemi/shikamaru), then build and run the MCP server from source (npm run build && node dist/server.js) or launch it directly via npx @jayofemi/shikamaru. Any MCP client (Claude Desktop, IDE, etc.) can connect over stdio.
Key features of Shikamaru: Day-Count and Accrued Interest Engine
- Day-count fraction under seven market conventions (30/360, ACT/360, etc.)
- Simple accrued interest: notional × rate × day-count fraction
- Holiday calendars: us-federal, nyse, sifma-us, target, uk
- Business-day math: is-business-day, next/previous, ISDA adjustments, T+N settlement
- Payment schedules: monthly to annual, backward or forward roll, short/long stubs
- Continuous correctness verification against QuantLib via CI
Use cases of Shikamaru: Day-Count and Accrued Interest Engine
- Get exact day-count fractions for bond or swap pricing
- Compute accrued interest for a given notional, rate, and date range
- Determine settlement dates (e.g., T+2) respecting market holidays
- Generate periodic payment schedules with proper business-day adjustments
FAQ from Shikamaru: Day-Count and Accrued Interest Engine
What day-count conventions does it support?
It supports seven conventions: 30/360, 30E/360, 30E/360 ISDA, ACT/360, ACT/365F, ACT/ACT ISDA, and ACT/ACT ICMA (with reference periods and stub decomposition).
How are holiday calendars maintained?
Calendars are implemented as rules in code plus a pinned table of historical one-off closures. A scheduled CI run checks every calendar against the latest QuantLib weekly to detect drift.
What are the runtime requirements?
The server requires Node.js and npm. It is a dependency-light TypeScript package with no external data feeds.
How is correctness verified?
The library tests against published reference vectors (ISDA worked examples, official holiday lists) and differential batteries against QuantLib. CI regenerates these batteries from the latest QuantLib on every push and weekly.
How can I test the MCP server?
Use the official MCP Inspector: after building, run npx @modelcontextprotocol/inspector node dist/server.js. It opens a local UI that lists tools and allows calling them, e.g., day_count_fraction with start 2003-11-01, end 2004-05-01, convention ACT/ACT ISDA returns about 0.4977.
Frequently asked questions
What day-count conventions does it support?
It supports seven conventions: 30/360, 30E/360, 30E/360 ISDA, ACT/360, ACT/365F, ACT/ACT ISDA, and ACT/ACT ICMA (with reference periods and stub decomposition).
How are holiday calendars maintained?
Calendars are implemented as rules in code plus a pinned table of historical one-off closures. A scheduled CI run checks every calendar against the latest QuantLib weekly to detect drift.
What are the runtime requirements?
The server requires Node.js and npm. It is a dependency-light TypeScript package with no external data feeds.
How is correctness verified?
The library tests against published reference vectors (ISDA worked examples, official holiday lists) and differential batteries against QuantLib. CI regenerates these batteries from the latest QuantLib on every push and weekly.
How can I test the MCP server?
Use the official MCP Inspector: after building, run `npx @modelcontextprotocol/inspector node dist/server.js`. It opens a local UI that lists tools and allows calling them, e.g., `day_count_fraction` with start `2003-11-01`, end `2004-05-01`, convention `ACT/ACT ISDA` returns about 0.4977.
Basic information
More Other MCP servers
MaxKB
1Panel-dev🔥 MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。
Maestro
mobile-dev-incPainless E2E Automation for Mobile and Web
Nginx UI
0xJackyYet another WebUI for Nginx
AutoBrowser MCP
autobrowser-aiBrowser MCP is a Model Context Provider (MCP) server that allows AI applications to control your browser
XcodeBuildMCP
cameroncookeA Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
Comments