Zero-dependency. Extreme speed. Built for concurrent financial simulations.
Comprehensive actuarial toolkit with performance-first architecture
28M+ rows/sec CSV parsing with parallel chunked streaming. Pre-computed discount tables for O(1) lookups.
Go Standard Library only. No supply-chain risk, no dependency hell, minimal attack surface.
Nominal ↔ effective rates, force of interest, v-star discount factor, Macaulay/modified duration, convexity.
CSV-loaded mortality tables with qx/px calculations, curtate life expectancy, and radix-based lx computations.
Whole life, term, deferred annuities (immediate & due). Net single premiums for whole life, term, and endowment.
Net premium, gross premium, prospective, and retrospective reserve calculations with expense modeling.
Geometric Brownian motion interest rate paths with Box-Muller transform. Deterministic seeding for auditability.
Value at Risk (VaR), Conditional Tail Expectation (CTE/Expected Shortfall), and comprehensive risk reports.
Zero-allocation CSV parsing with parallel processing. Streaming JSON output without buffering all records.
Benchmarked on 10M row CSV (~288MB), 8-core Intel, Windows 11
| Metric | v-star (Go) | Polars 1.39 |
|---|---|---|
| Duration | 347ms | 535ms |
| Throughput | 28.8M rows/sec | 18.7M rows/sec |
| Peak RSS | 349 MB | ~500 MB |
| After Processing | 0.2 MB (GC'd) | ~426 MB |
v-star is ~1.5× faster with ~30% less memory. Both produce identical PV results.
Where v-star is headed
Version history and changelog
Up and running in under a minute
go get github.com/lubasinkal/v-star
go build ./cmd/v-star
./v-star -i 0.05 -j 0.02
converter := rates.NewRateConverter(0.05)
pv := converter.PresentValue(100000, 20)
// pv = 37688.95
opts := reader.CSVOptions{Header: true}
totalPV, count := reader.StreamCSVWithPV(
"policies.csv", opts, converter.PresentValue
)
Explore the full documentation, examples, and API reference on GitHub.