Metric Engine Documentationο
Metric Engine is a robust Python library designed for precision financial calculations with strong typing, policy-driven behavior, and bulletproof error handling.
Overviewο
Metric Engine provides a comprehensive foundation for building financial applications that require:
Type-safe financial calculations with units (Money, Ratios, Percentages)
Policy-driven formatting and rounding behavior
Null-safe operations that gracefully handle missing data
Extensible calculation registry for domain-specific financial models
Decimal precision throughout to avoid floating-point errors
Whether youβre building accounting software, financial analytics, or business intelligence tools, Metric Engine gives you the building blocks to handle money, percentages, and ratios with confidence.
Key Featuresο
- π·οΈ Strongly Typed Financial Values
Financial values carry their unit type (Money, Ratio, Percent) and policy information, preventing unit mismatches and ensuring consistent formatting.
- π Immutable & Safe
All operations return new instances. Division by zero and invalid operations return
Noneinstead of crashing, with policy controls for strict vs. lenient behavior.- π Decimal Precision
Built on Pythonβs
Decimaltype to eliminate floating-point precision issues that plague financial calculations.- π Complete Calculation Traceability
Automatic provenance tracking creates complete audit trails for every calculation. Generate human-readable explanations, export JSON graphs for compliance, and trace exactly how any value was derived.
- π§ Extensible Calculation Engine
Register custom calculations in organized collections. The dependency engine automatically resolves calculation graphs and handles circular dependencies.
- π Internationalization Ready
Optional Babel integration for currency and percentage formatting in multiple locales.
Quick Exampleο
from metricengine import FV
from metricengine.units import Money, Percent
from metricengine.provenance import explain, to_trace_json
# Type-safe financial calculations
revenue = FV(150000, Money)
tax_rate = FV(0.25, Percent) # 25%
# Safe arithmetic with automatic type handling
taxes = revenue * tax_rate # Returns FV[Money]
net_income = revenue - taxes # Returns FV[Money]
print(f"Revenue: {revenue}") # Revenue: $150,000.00
print(f"Net Income: {net_income}") # Net Income: $112,500.00
# π Automatic calculation traceability
print("\nHow was net income calculated?")
print(explain(net_income))
# Output:
# subtract(150000.00, 37500.00) = 112500.00
# ββ literal(150000.00)
# ββ multiply(150000.00, 0.25) = 37500.00
# ββ literal(150000.00)
# ββ literal(0.25)
# Export complete audit trail as JSON
audit_trail = to_trace_json(net_income)
print(f"Audit trail contains {len(audit_trail['nodes'])} calculation steps")
# Graceful handling of missing data
missing_data = None
safe_calc = revenue * missing_data # Returns FV.none(), doesn't crash
What Makes It Differentο
Unlike basic financial libraries, Metric Engine is designed for production financial software where correctness, safety, and maintainability are paramount:
No silent errors: Invalid operations return
Noneor raise clear exceptionsPolicy consistency: Rounding, formatting, and error handling follow configurable policies
Complete audit trails: Every calculation maintains tamper-evident provenance for debugging and compliance
Framework integration: Optional Django plugins and extensible architecture
Getting Started:
User Guide:
Tutorials:
How-To Guides:
- How to Create New Calculations
- Cross-Package Dependencies
- Custom Reducers
- Creating New Units
- Unit System Usage Guide
- Conversion Registration Patterns and Best Practices
- Custom Policies
- How to Internationalize Your Application
- How to Create Custom Renderers
- Handling Zero Denominators
- Testing Calculations
- Configuring Provenance Tracking
- Using Provenance Tracking
- Provenance Best Practices
API Reference:
Design Documentation:
Development: