📐 ROI Formulas

Every metric in GigAnalytics is computed from these formulas. All calculations are done client-side from your imported data — no estimation, no rounding before display.

Multi-stream comparison demo
True hourly rate per income stream — consulting $112/hr vs Upwork $60/hr vs digital products $70/hr

Animated demo — true hourly rate per stream after platform fees. Wider bar = higher ROI.

Core Revenue Metrics

Gross Revenue

gross_revenue = SUM(transaction.amount) WHERE amount > 0

Total of all positive payment amounts for the selected period. Refunds (negative amounts) are excluded here and counted separately.

Example: 3 payments of $500, $750, $200 → Gross = $1,450

Net Revenue

net_revenue = SUM(transaction.net_amount) = gross_revenue - total_fees - total_refunds

What you actually keep after platform fees and refunds. This is the primary revenue figure shown on your dashboard.

Example: Gross $1,450 − Stripe fees $42.05 − refund $200 = Net $1,207.95

Platform Fee Rate

fee_rate = (SUM(transaction.fee) / gross_revenue) × 100

Effective fee percentage charged by the platform (Stripe, PayPal, Upwork, etc.). Helps compare platforms on equal footing.

Example: $42.05 fees / $1,450 gross = 2.9% effective fee rate

True Hourly Rate

Billable Hours

billable_hours = SUM(time_entry.duration_minutes WHERE entry_type = 'billable') / 60

Total hours logged as billable for the period. Timer entries, manual entries, and calendar-inferred entries are all included.

Example: 480 minutes billable = 8.0 billable hours

True Hourly Rate

true_hourly_rate = net_revenue / billable_hours

The core metric of GigAnalytics. Unlike gross hourly rate, this accounts for platform fees and refunds. If billable_hours = 0, shown as "—" (not $0).

Example: $1,207.95 net / 8.0 hours = $151.00/hr true rate

Effective Hourly Rate (with acquisition costs)

effective_hourly_rate = (net_revenue - total_acquisition_costs) / billable_hours

Factors in money spent on ads, platform subscriptions, and other costs to acquire clients. Available when acquisition costs are logged.

Example: ($1,207.95 − $150 ads) / 8.0 hrs = $132.24/hr effective rate

Acquisition ROI

Acquisition ROI

acquisition_roi = ((net_revenue - acquisition_cost) / acquisition_cost) × 100

Return on money spent acquiring clients (ads, platform fees, referrals). A result of 100% means you earned double what you spent.

Example: ($1,207.95 − $150) / $150 = 705% ROI on ad spend

Cost per Dollar Earned

cost_per_dollar = acquisition_cost / net_revenue

How much you spend to earn $1. Lower is better. Useful for comparing acquisition channels.

Example: $150 / $1,207.95 = $0.12 per dollar earned

Income Heatmap

Revenue Per Hour (heatmap cell)

revenue_per_hour[day][hour] = SUM(transactions in cell) / COUNT(weeks in date range)

Each heatmap cell shows the average revenue earned during that day-of-week × hour-of-day combination. Transactions are binned by their timestamp's local hour.

Example: Tuesday 2–3 PM: $2,400 over 12 weeks = $200 avg revenue/Tuesday-2PM

Sweet Spot Threshold

is_sweet_spot = revenue_per_hour[cell] ≥ 90th percentile of all cells WITH sample_size ≥ 3

A cell is highlighted as a 'sweet spot' only when it has enough data (≥3 observations) and consistently outperforms 90% of other cells.

What-If / Target Income

Rate Required to Hit Target

required_rate = monthly_target / projected_billable_hours

Given your income target and your historical average billable hours per month, what hourly rate do you need to charge?

Example: $5,000 target / 35 projected hours = $142.86/hr required

Hours Required at Current Rate

required_hours = monthly_target / true_hourly_rate

At your current true hourly rate, how many billable hours do you need per month to hit your target?

Example: $5,000 target / $151.00/hr = 33.1 hours/month

Data Quality Flags