# DTN VDES Business Simulator

> **Store-Carry-Forward satellite network business modelling for maritime VDES/AIS services**

---

## Table of Contents

1. [Overview](#overview)
2. [Architecture](#architecture)
3. [DTN Contact Plan Model](#dtn-contact-plan-model)
4. [Business Model (ARPU)](#business-model-arpu)
5. [Cost Structure](#cost-structure)
6. [Financial Projections](#financial-projections)
7. [KPIs & Outputs](#kpis--outputs)
8. [Parameter Reference](#parameter-reference)
9. [Default Scenario](#default-scenario)
10. [Key Formulas](#key-formulas)
11. [QoS Enforcement Logic](#qos-enforcement-logic)
12. [Infrastructure Scaling Modes](#infrastructure-scaling-modes)
13. [Known Limitations](#known-limitations)
14. [Glossary](#glossary)

---

## Overview

The **DTN VDES Business Simulator** is a single-page interactive tool (`index.html`) that combines:

- A **DTN (Delay-Tolerant Networking) contact-plan capacity model** for a LEO satellite constellation serving maritime vessels via VHF/VDES
- A **freemium ARPU (Average Revenue Per Unit) stack** based on IMO e-Navigation services
- A **10-year cashflow, P&L, and ROI projection** with infrastructure scaling modes

It is designed for telecom engineers and business analysts evaluating the commercial viability of **satellite VDES operators** — specifically nanosat/smallsat constellations targeting the maritime industry.

---

## Architecture

```
┌──────────────────────────────────────────────────────────────────────────┐
│                        DTN VDES Business Simulator                       │
│                                                                          │
│  ┌─────────────────┐   ┌────────────────┐   ┌──────────────────────┐   │
│  │  DTN Contact    │   │  Business Model│   │  CAPEX / OPEX        │   │
│  │  Plan Engine    │ → │  (ARPU tiers)  │ → │  Cost Structure      │   │
│  │  (Capacity)     │   │                │   │                      │   │
│  └─────────────────┘   └────────────────┘   └──────────────────────┘   │
│           │                     │                       │               │
│           └─────────────────────┴───────────────────────┘               │
│                                 │                                        │
│                    ┌────────────▼───────────┐                           │
│                    │  Financial Projections │                           │
│                    │  Cashflow / P&L / ROI  │                           │
│                    └────────────────────────┘                           │
│                                 │                                        │
│         ┌───────────────────────┼───────────────────────┐              │
│         ▼                       ▼                         ▼             │
│  [Cashflow chart]       [Revenue vs OPEX]        [DTN load chart]      │
│  [Engineering log]      [KPI badges]             [QoS status badge]    │
└──────────────────────────────────────────────────────────────────────────┘
```

**Technology stack:** HTML5, Tailwind CSS (CDN), Chart.js, vanilla JavaScript — no build step required.

---

## DTN Contact Plan Model

### Network Topology

```
Ships (VHF/VDES uplink)  →  LEO Satellite  →  Ground Station  →  NOC/Cloud
       K ships/pass            N_sats              N_gs
       λ msgs/s/ship           h_orbit             downlink rate
```

The satellite acts as a **store-and-forward relay**: messages are buffered onboard during the uplink contact window, then dumped to ground stations during the downlink window.

### Contact Windows

| Link | Parameter | Default |
|------|-----------|---------|
| Uplink (ship → sat) | Rate `C_up` | 50 kbps |
| Uplink contact duration | `Δ_up` | 300 s |
| Downlink (sat → GS) | Rate `C_down` | 100 kbps |
| Downlink contact duration | `Δ_down` | 420 s |
| Orbit revisit (sat → GS) | `T_rev` | 90 min |

### Duty Cycles

$$\delta_{up} = \frac{\Delta_{up}}{T_{rev,up}}, \qquad \delta_{down} = \frac{\Delta_{down}}{T_{rev,down}}$$

### End-to-End Capacity

$$M_{up} = \frac{N_{sats} \cdot K \cdot C_{up} \cdot \delta_{up}}{m_{bits}/1000} \quad \text{[msgs/s]}$$

$$M_{down} = \frac{N_{sats} \cdot N_{gs} \cdot C_{down} \cdot \delta_{down}}{m_{bits}/1000} \quad \text{[msgs/s]}$$

$$M_{e2e} = \min(M_{up},\ M_{down})$$

The bottleneck is explicitly identified (`Gargalo: UP` or `Gargalo: DOWN`) in the Engineering Log.

### End-to-End Latency (no queue)

$$D_{avg} = \underbrace{\frac{T_{rev,up}}{2}}_{\text{wait for sat}} + T_{tx,up} + \underbrace{\frac{T_{rev,down}}{2}}_{\text{wait for GS}} + T_{tx,down} \quad \text{[min]}$$

---

## Business Model (ARPU)

### Default Service Stack

The ARPU is computed as a **penetration-weighted sum** of monthly per-ship service prices:

$$\text{ARPU}_{blended} = \sum_{i} \text{price}_i \times \frac{\text{pen}_i}{100}$$

| # | Service | Price ($/mo) | Penetration | Contribution |
|---|---------|-------------|-------------|-------------|
| 1 | AIS Tracking (base) | $15 | 100% | $15.00 |
| 2 | S-124 MSI — Safety | $50 | 85% | $42.50 |
| 3 | S-104 Weather / VTS | $120 | 60% | $72.00 |
| 4 | S-421 Route Plan | $80 | 50% | $40.00 |
| 5 | Fleet Analytics | $150 | 40% | $60.00 |
| 6 | Compliance / e-Nav | $60 | 70% | $42.00 |
| | **ARPU blended** | | | **~$271.50/mo** |

> **Design pattern:** AIS Tracking at $15 (100%) is the acquisition anchor — it replicates the free-to-vessel AIS value proposition while providing a billing relationship. S-421 Route Planning and Fleet Analytics are the high-value upsell tier.

### Service tiers map to IMO e-Navigation S-mode standards

- **S-124** — Navigational warnings (MSI)
- **S-104** — Water level information (includes metocean/VTS gate passes)
- **S-421** — Route plan exchange (vessel-to-vessel and vessel-to-VTS)

---

## Cost Structure

### CAPEX

| Item | Formula | Default |
|------|---------|---------|
| Satellite unit cost | `cost_sat × N_sats` | $800k/sat |
| Ground station unit cost | `cost_gs × N_gs` | $500k/GS |
| Fixed initial CAPEX | Platform, licenses, integration | $1M |
| **Total CAPEX₀** | `N_sats×cost_sat + N_gs×cost_gs + fixed` | **~$11.6M** (12 sats, 4 GS) |

### OPEX (annual)

| Item | Formula | Default |
|------|---------|---------|
| Satellite O&M | `opex_sat × N_sats/year` | $200k/sat/yr |
| Ground station O&M | `opex_gs × N_gs/year` | $50k/GS/yr |
| NOC + Staff (fixed) | annual overhead | $700k/yr |
| Variable OPEX | `% × revenue` (billing, S&M, support) | 10% of revenue |

---

## Financial Projections

### Customer Growth Model

$$\text{Ships}_{year} = \text{Ships}_{year-1} \times (1 + g - c)$$

where `g` = annual growth rate and `c` = annual churn rate.

If **QoS enforcement** is active, the billed ship count is capped to `QoS ships max`:

$$\text{Ships}_{billed} = \min(\text{Ships}_{year},\ N_{ships}^{max})$$

### Annual Revenue

$$\text{Rev}_{year} = \text{Ships}_{billed} \times \text{ARPU}_{blended} \times 12$$

### Annual P&L

$$\text{OPEX}_{year} = N_{sats} \times \text{opex\\_sat} + N_{gs} \times \text{opex\\_gs} + \text{opex\\_fixed} + \text{opex\\_rev\\_pct} \times \text{Rev}_{year}$$

$$\text{NetCF}_{year} = \text{Rev}_{year} - \text{OPEX}_{year}$$

$$\text{CumulativeCF}_{year} = -\text{CAPEX}_0 + \sum_{t=1}^{year} \text{NetCF}_t$$

**Payback year** = first year where cumulative cashflow ≥ 0.

**Horizon ROI:**
$$\text{ROI} = \frac{\text{CumulativeCF}_{horizon}}{\text{CAPEX}_0} \times 100\%$$

### Discounting and WACC

To account for the time value of money the simulator supports discounting of future cashflows using a Weighted Average Cost of Capital (WACC). Use the WACC slider in the UI to set the discount rate.

Per-year discounted cashflow (DCF):
$$\text{DCF}_t = \frac{\text{NetCF}_t}{(1 + \text{WACC})^{t}}$$

Net Present Value (NPV):
$$\text{NPV} = -\text{CAPEX}_0 + \sum_{t=1}^{T} \text{DCF}_t$$

Discounted payback year is the first year where the cumulative discounted cashflow (starting from -CAPEX₀) becomes ≥ 0:
$$\text{CumDCF}_t = -\text{CAPEX}_0 + \sum_{i=1}^{t} \text{DCF}_i \quad \text{(find first $t$ with }\text{CumDCF}_t \ge 0\text{)}$$

Discounted ROI (WACC adjusted):
$$\text{ROI}_{disc} = \frac{\text{NPV}}{\text{CAPEX}_0} \times 100\%$$

If WACC = 0% the discounted metrics equal the nominal (undiscounted) metrics.

### WACC — short numeric example (illustrative)

The following small example shows how discounting shifts NPV and payback even when the nominal (undiscounted) cashflows look close to breakeven.

- Assumptions (illustrative): initial CAPEX₀ = $11.6M; yearly net cashflows (NetCF) over 10 years: [-2.7, -1.8, -0.5, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5] (M$)
- Cumulative nominal net over 10 years = +$9.0M → Nominal CumulativeCF₁₀ = -$11.6M + $9.0M = -$2.6M (still negative)

Scenario A — WACC = 0% (no discounting):

- NPV = -$2.6M (same as nominal cumulative)
- Discounted payback: not reached in 10 years (NPV negative)

Scenario B — WACC = 10% (discounting future cashflows):

- Later positive cashflows are worth less in present value. The sum of discounted NetCFs will be smaller than $9.0M, so NPV is more negative (for these numbers, NPV << -$2.6M).
- Discounted payback is therefore later than nominal — often by several years — and may not be reached within the projection horizon.

Key takeaway: even modest WACC values (8–12%) materially reduce the present value of late-stage positive cashflows. For infrastructure-heavy businesses (satellites + ground stations), this often means the difference between a superficially positive nominal ROI and a negative, discounted NPV. Use the WACC slider to test sensitivity and show how accelerated revenue or lower CAPEX shifts the discounted breakeven earlier.

---

## KPIs & Outputs

| KPI | Location | Description |
|-----|----------|-------------|
| `Capacidade E2E` | Top KPI bar | `M_e2e` in msgs/s |
| `QoS ships max` | Top KPI bar | Max ships at `ρ_max` utilization |
| `Receita anual (Y1)` | Top KPI bar | Year 1 gross revenue |
| `Payback / ROI` | Top KPI bar | Payback year + horizon ROI |
| `ARPU blended` | Services section | Weighted monthly ARPU |
| `QoS Badge` | Header | `QoS OK` (green) / `QoS RISCO` (red) |
| Engineering log | Log panel | Full parameter dump + diagnostics |

### Charts

| Chart | Type | Content |
|-------|------|---------|
| Cashflow anual & acumulado | Bar + Line | Annual net cashflow (bars) + cumulative (line) |
| Receita vs OPEX | Stacked bar | Revenue vs total annual OPEX per year |
| DTN: carga vs capacidade | Line | Offered load vs `M_e2e` per year |

---

## Parameter Reference

### DTN / Contact Plan

| Input ID | Parameter | Range | Default |
|----------|-----------|-------|---------|
| `inp_nsats` | Number of satellites | 1–48 | 12 |
| `inp_ngs` | Number of ground stations | 1–24 | 4 |
| `inp_alt` | Orbital altitude (km) | 400–1200 | 600 |
| `inp_revisit` | Sat→GS revisit period (min) | 10–180 | 90 |
| `inp_k` | Ships per satellite pass | 10–800 | 150 |
| `inp_msg` | Message size (bytes) | 256–16384 | 2048 |
| `inp_lambda` | Message rate (msgs/s/ship) | 0.001–0.2 | 0.010 |
| `inp_qosutil` | QoS utilization cap (%) | 50–95 | 85 |
| `inp_cup` | Uplink rate (kbps) | ≥1 | 50 |
| `inp_dup` | Uplink contact duration (s) | ≥1 | 300 |
| `inp_cdown` | Downlink rate (kbps) | ≥1 | 100 |
| `inp_ddown` | Downlink contact duration (s) | ≥1 | 420 |
| `inp_enforce_qos` | Enforce QoS cap on billed ships | checkbox | ✓ checked |

### Commercial Projection

| Input ID | Parameter | Range | Default |
|----------|-----------|-------|---------|
| `inp_baseShips` | Ships in Year 1 | 100–20000 | 1750 |
| `inp_growth` | Annual growth rate (%) | −20–80 | 20 |
| `inp_years` | Projection horizon (years) | 3–20 | 10 |
| `inp_churn` | Annual churn rate (%) | 0–40 | 5 |
| `inp_scale` | Infrastructure scaling mode | see below | OFF |

### CAPEX / OPEX

| Input ID | Parameter | Default |
|----------|-----------|---------|
| `inp_cost_sat` | Cost per satellite ($) | 800,000 |
| `inp_cost_gs` | Cost per ground station ($) | 500,000 |
| `inp_cost_fixed` | Fixed initial CAPEX ($) | 1,000,000 |
| `inp_opex_sat_y` | OPEX per satellite per year ($) | 200,000 |
| `inp_opex_gs_y` | OPEX per GS per year ($) | 50,000 |
| `inp_opex_fixed_y` | Fixed annual OPEX — NOC/Staff ($) | 700,000 |
| `inp_opex_rev_pct` | Variable OPEX (% of revenue) | 10% |

---

## Default Scenario

With all parameters at default values:

```
Constellation:    12 satellites, 4 ground stations, h=600km
Contact plan:     C_up=50kbps/300s, C_down=100kbps/420s, T_rev=90min
Message profile:  K=150 ships/pass, λ=0.010 msg/s/ship, m=2048 bytes

M_e2e ≈ 2.5 msgs/s   (bottleneck: uplink)
QoS ships max ≈ 212 ships at ρ=85%

Year 1 fleet: 1750 ships → CAPPED to 212 ships (QoS RISCO)
Year 1 Revenue: 212 × $271.50 × 12 ≈ $690k
Year 1 OPEX:   12×$200k + 4×$50k + $700k + 10%×$690k ≈ $3.4M
Year 1 Net CF: ≈ −$2.7M

CAPEX₀ = 12×$800k + 4×$500k + $1M = $11.6M
Payback: not reached in 10-year horizon at 12 sats
```

> **Key insight:** At 12 satellites, the QoS cap fundamentally limits revenue to ~212 ships. The constellation must scale to 36–48 satellites to address 600–850 ships and approach breakeven by Year 7–8.

---

## Key Formulas

### QoS Ships Maximum

$$N_{ships}^{max} = \frac{\rho_{max} \times M_{e2e}}{\lambda}$$

### Offered Load

$$\rho_{offered} = \frac{N_{ships} \times \lambda}{M_{e2e}}$$

### Billed Ships (with QoS enforcement)

$$N_{billed} = \begin{cases} N_{ships} & \text{if } \rho_{offered} \leq \rho_{max} \\ N_{ships}^{max} & \text{otherwise} \end{cases}$$

### Blended ARPU

$$\text{ARPU} = \sum_{i=1}^{n} p_i \times \frac{\text{pen}_i}{100} \quad \text{[\$/month/ship]}$$

---

## QoS Enforcement Logic

The `inp_enforce_qos` checkbox controls whether the **billed fleet is capped** to `QoS ships max`:

- **Enabled (default):** Ships beyond capacity are not billed — models the realistic scenario where the operator cannot sign up more customers than the network can serve. Revenue is conservative and accurate.
- **Disabled:** All contracted ships are billed regardless of network saturation — models an optimistic/oversubscription scenario. The Engineering Log will still report `QoS RISCO`.

The header `QoS badge` reflects current status:

| Badge | Condition |
|-------|-----------|
| 🟢 `QoS OK` | Year 1 offered load ≤ `ρ_max` |
| 🔴 `QoS RISCO` | Year 1 offered load > `ρ_max` |

---

## Infrastructure Scaling Modes

The `inp_scale` dropdown controls automatic infrastructure growth when demand exceeds capacity:

| Mode | Behaviour |
|------|-----------|
| `OFF` (default) | Fixed constellation — CAPEX computed once at Year 0 |
| `Auto-add GS` | Ground stations are added as needed; satellites fixed |
| `Auto-add satélites` | Satellites are added as needed; GS fixed |
| `Auto-add satélites e GS` | Both GS and satellites added proportionally |

> In scaling modes, new infrastructure CAPEX is added to the year in which it is deployed and reflected in the cumulative cashflow.

---

## Known Limitations

| # | Limitation | Impact |
|---|-----------|--------|
| 1 | No VDES session overhead (handshake + ARQ) modelled | Capacity is **optimistic** by ~15–30% |
| 2 | No satellite replacement/EOL cost (typical: 5-year nanosat lifetime) | CAPEX underestimated for 10-year horizon |
| 3 | Launch cost not included in CAPEX₀ | Missing ~$1–1.5M for rideshare (SpaceX Transporter) |
| 4 | No queuing delay model (M/D/1 or DTN bundle queue) | Latency estimates are lower bounds |
| 5 | No frequency management / AIS channel contention | VHF Ch87/88 collision not modelled |
| 6 | No NPV / discounted cashflow | ROI is undiscounted; add WACC ~8–12% for corrected IRR |
| 7 | Single ARPU for all ships | No geographic segmentation (SOLAS vs non-SOLAS) |

---

## Glossary

| Term | Definition |
|------|-----------|
| **AIS** | Automatic Identification System — IMO-mandated maritime transponder system (VHF Ch161.975/162.025 MHz) |
| **VDES** | VHF Data Exchange System — ITU-R M.2092 next-generation AIS successor with bidirectional data channels |
| **WACC** | Weighted Average Cost of Capital — the discount rate used to compute present value of future cashflows; expressed as a percent. Typical telecom/space WACC: 8–15%. |
| **DCF** | Discounted Cash Flow — a single year's net cashflow discounted by (1+WACC)^t to reflect present value. |
| **NPV** | Net Present Value — sum of discounted cashflows minus initial CAPEX; positive NPV means value creation at the chosen WACC. |
| **Discounted Payback** | The first year where cumulative discounted cashflows (including -CAPEX at t=0) become non-negative. |
| **DTN** | Delay-Tolerant Networking — RFC 4838 architecture for intermittently connected networks; satellite LEO is a canonical DTN use case |
| **Store-Carry-Forward** | DTN routing paradigm: node stores bundle, carries it in orbit, forwards at next contact opportunity |
| **Contact Plan** | Scheduled set of communication opportunities between DTN nodes (ships ↔ sats ↔ GS) |
| **ARPU** | Average Revenue Per User (here: per vessel per month) |
| **CAPEX** | Capital Expenditure — one-time infrastructure investment |
| **OPEX** | Operational Expenditure — recurring annual costs |
| **NOC** | Network Operations Centre |
| **S-124/S-104/S-421** | IHO/IMO S-mode data standards for MSI, water level information, and route plan exchange respectively |
| **MSI** | Maritime Safety Information — navigational warnings and meteorological alerts |
| **QoS** | Quality of Service — here expressed as maximum channel utilisation before congestion degrades delivery |
| **λ (lambda)** | Message arrival rate per ship (msgs/s) |
| **ρ (rho)** | Channel utilisation ratio (offered load / capacity) |
| **M_e2e** | End-to-end DTN capacity in messages per second |
| **ROI** | Return on Investment = (Cumulative Net CF at horizon) / CAPEX₀ |
| **Payback** | First year where Cumulative Cashflow ≥ 0 |
| **Churn** | Annual percentage of customers leaving the service |
| **LEO** | Low Earth Orbit — typically 400–1200 km altitude |

---

*DTN VDES Business Simulator — v1.0 | February 2026*
