Primitives.org.ai

Financials

Calculate financial metrics

Financials

The financials() function calculates comprehensive financial metrics from your business data.

Basic Usage

import { financials } from 'business-as-code'

const metrics = financials({
  revenue: 1000000,
  cogs: 300000,
  operatingExpenses: 500000,
  currency: 'USD',
  period: 'monthly',
})

// Automatically calculates:
console.log(metrics.grossProfit)     // 700000
console.log(metrics.grossMargin)     // 70
console.log(metrics.operatingIncome) // 200000
console.log(metrics.operatingMargin) // 20
console.log(metrics.netIncome)       // 200000
console.log(metrics.netMargin)       // 20

Calculated Metrics

The financials() function automatically calculates:

MetricFormula
Gross ProfitRevenue - COGS
Gross Margin(Gross Profit / Revenue) × 100
Operating IncomeGross Profit - Operating Expenses
Operating Margin(Operating Income / Revenue) × 100
Net IncomeOperating Income (simplified)
Net Margin(Net Income / Revenue) × 100

Margin Calculations

import {
  calculateGrossMargin,
  calculateOperatingMargin,
  calculateNetMargin,
  calculateEBITDAMargin,
} from 'business-as-code'

// Gross margin
const grossMargin = calculateGrossMargin(1000000, 300000)
// 70%

// Operating margin
const opMargin = calculateOperatingMargin(1000000, 200000)
// 20%

// Net margin
const netMargin = calculateNetMargin(1000000, 150000)
// 15%

// EBITDA margin
const ebitdaMargin = calculateEBITDAMargin(1000000, 250000)
// 25%

SaaS Metrics

import { calculateMRR, calculateARR, calculateLTV, calculateCAC, calculateLTVtoCAC } from 'business-as-code'

// Monthly Recurring Revenue
const mrr = calculateMRR(subscriptions)
// Sum of all subscription amounts

// Annual Recurring Revenue
const arr = calculateARR(mrr)
// MRR × 12

// Customer Lifetime Value
const ltv = calculateLTV(avgRevenue, churnRate)
// Average revenue / churn rate

// Customer Acquisition Cost
const cac = calculateCAC(marketingSpend, newCustomers)
// Marketing spend / new customers

// LTV to CAC ratio
const ratio = calculateLTVtoCAC(ltv, cac)
// LTV / CAC (target: > 3)

Startup Metrics

import { calculateBurnRate, calculateRunway, calculatePaybackPeriod } from 'business-as-code'

// Monthly burn rate
const burnRate = calculateBurnRate(100000, 70000, 3)
// (100000 - 70000) / 3 = 10000 per month

// Runway in months
const runway = calculateRunway(100000, 10000)
// 100000 / 10000 = 10 months

// CAC payback period
const payback = calculatePaybackPeriod(cac, avgMonthlyRevenue, grossMargin)
// Months to recover CAC

Growth Metrics

import { calculateGrowthRate, calculateCAGR } from 'business-as-code'

// Period-over-period growth
const growth = calculateGrowthRate(120, 100)
// 20%

// Compound Annual Growth Rate
const cagr = calculateCAGR(1000000, 100000, 5)
// ~58% (growth over 5 years)

Return Metrics

import { calculateROI, calculateROE, calculateROA } from 'business-as-code'

// Return on Investment
const roi = calculateROI(150000, 100000)
// 50%

// Return on Equity
const roe = calculateROE(200000, 1000000)
// 20%

// Return on Assets
const roa = calculateROA(200000, 2000000)
// 10%

Liquidity Ratios

import { calculateQuickRatio, calculateCurrentRatio, calculateDebtToEquity } from 'business-as-code'

// Quick ratio (acid test)
const quickRatio = calculateQuickRatio(500000, 200000)
// 2.5

// Current ratio
const currentRatio = calculateCurrentRatio(600000, 200000)
// 3.0

// Debt to equity
const debtToEquity = calculateDebtToEquity(500000, 1000000)
// 0.5

Financial Statements

Create and query financial statements:

import { createStatement, getLineItem } from 'business-as-code'

// Create income statement
const incomeStatement = createStatement({
  type: 'income',
  period: 'Q1 2024',
  lineItems: {
    revenue: 1000000,
    cogs: 300000,
    grossProfit: 700000,
    operatingExpenses: 500000,
    operatingIncome: 200000,
  },
  currency: 'USD',
})

// Get specific line item
const revenue = getLineItem(incomeStatement, 'revenue')
// 1000000

Comparison

import { compareMetrics } from 'business-as-code'

const comparison = compareMetrics(currentMetrics, previousMetrics)
// {
//   revenueGrowth: 20,
//   marginChange: 5,
//   improved: ['revenue', 'grossMargin'],
//   declined: ['operatingExpenses'],
// }

Currency Formatting

import { formatCurrency } from 'business-as-code'

const formatted = formatCurrency(1234567.89, 'USD')
// "$1,234,567.89"

const euros = formatCurrency(1234567.89, 'EUR')
// "€1,234,567.89"

Validation

import { validateFinancials } from 'business-as-code'

const errors = validateFinancials(metrics)
if (errors.length > 0) {
  console.error('Invalid financials:', errors)
}

Type Definition

interface FinancialMetrics {
  revenue?: number
  cogs?: number
  grossProfit?: number
  grossMargin?: number
  operatingExpenses?: number
  operatingIncome?: number
  operatingMargin?: number
  netIncome?: number
  netMargin?: number
  ebitda?: number
  ebitdaMargin?: number
  operatingCashFlow?: number
  freeCashFlow?: number
  currency?: Currency
  period?: TimePeriod
}

interface FinancialStatement {
  type: 'income' | 'balance-sheet' | 'cash-flow'
  period: string
  lineItems: Record<string, number>
  currency: Currency
  metadata?: Record<string, unknown>
}
Was this page helpful?

On this page