Files
otivm/docs/economy/otivm_iv_cost_calibration_model.md
2026-05-03 10:07:23 -04:00

420 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OTIVM-IV Cost Calibration Model — Roman Merchant Economy, c. 14 BCE
**Prepared for:** OTIVM-IV / CIVICVS Simulator
**Date:** 2026-05-03
**Status:** Calibrated historical-economic model, not a claim of exact reconstruction
**Baseline good selected:** Plain ceramic cup / small clay vessel
**Currency convention:** 1 denarius (`dn`) = 16 asses (`as`)
---
## 1. Method
This document treats Roman economic evidence as a calibration field rather than as a complete price list. Values are divided into three categories:
- **Source-backed anchors:** values directly attested or strongly reported in ancient evidence or modern synthesis.
- **Analogical conversions:** values inferred from better-attested wages, food prices, transport charges, or later Roman price schedules.
- **Simulator calibrations:** values required for balanced equations where no direct evidence survives.
The objective is not exactness. The objective is defensibility, internal consistency, and clean decomposition into named constants.
### Confidence labels
| Label | Meaning |
|---|---|
| HIGH | Directly attested or widely accepted anchor; suitable as a calibration base. |
| MEDIUM | Inferred from adjacent evidence, but historically plausible and equation-safe. |
| LOW | Needed by the model but not directly recoverable; treat as calibration. |
---
## 2. Currency and Equation Rules
### Currency
- `1 dn = 16 as`
- All simulator costs should resolve to denarii internally.
- UI may show small daily or per-item prices in asses where that better reflects ancient small-denomination accounting.
### Conversion
```text
dn = as / 16
as = dn * 16
```
### Otium-cycle convention
The mockup uses an existing placeholder of `8 dn` for the next otium cost. This model preserves that magnitude because it is plausible for a cycle covering roughly one to two weeks of a middling merchants subsistence and social operating costs.
Recommended equation:
```text
otium_cycle_cost =
otium_access_fee
+ personal_maintenance
+ officia_obligation
```
Recommended simulator constants:
```text
OTIUM_ACCESS_FEE_DN = 2.00
PERSONAL_MAINTENANCE_DN = 4.00
OFFICIA_OBLIGATION_DN = 2.00
OTIUM_CYCLE_TOTAL_DN = 8.00
```
These should remain separately logged in `parameter_drift_log`.
---
## 3. Reference Wages and Price Anchors
These anchors should calibrate all derived constants.
| Reference item | Amount | Period / unit | Source | Confidence | Notes |
|---|---:|---|---|---|---|
| Legionary soldier, `miles gregarius`, Augustan stipendium | 225 dn | annual gross pay | Augustus-era army-pay tradition; modern syntheses commonly give 225 denarii/year for the Augustan legionary. | HIGH | Best first-century monetary anchor. Deductions for rations/equipment complicate net disposable pay. |
| Legionary soldier, implied daily gross | 0.616 dn = 9.86 as | per day | Derived from 225 dn / 365 days. | HIGH | Use only as gross annualized pay, not as free cash. |
| Unskilled day laborer | 0.3750.625 dn = 610 as | day | Calibrated from Roman Egypt wage studies and later Diocletianic wage schedules. | MEDIUM | Direct Augustan Italian data are thin. Use `0.50 dn/day` as simulator midpoint. |
| Skilled artisan / craft worker | 0.751.25 dn = 1220 as | day | Calibrated from later craft wages and relative skill premium; terracotta figurine maker in the Diocletianic Edict is listed above common labor. | MEDIUM | Use `1.00 dn/day` as simulator midpoint for potter/craft labor. |
| Potter / terracotta specialist | 1.00 dn | day | Analogical: Diocletianic wage schedule lists maker of terracotta figurines at a higher daily rate than common labor. | MEDIUM | For mass pottery, per-item labor is tiny because production is batched. |
| Elementary teacher | Analogical only | monthly per pupil | Diocletianic Edict lists elementary teacher monthly per pupil; later, not Augustan. | LOW | Use as relative status anchor, not as direct Augustan Italian price. |
| Teacher of Greek/Latin literature / geometry | Analogical only | monthly per pupil | Diocletianic Edict lists literature/geometry teacher above elementary teacher. | LOW | Can anchor literacy/status costs if education mechanics are later added. |
| Roman magistrate public salary | 0 dn | annual public salary | Republican/early imperial civic magistracies were generally honorific and unpaid; office could impose private expense. | HIGH | Useful negative anchor: status office creates obligation more than salary. |
| Modius of wheat | 0.501.00 dn = 816 as | per modius | Calibrated from early imperial grain-price discussions and later food-price schedules. | MEDIUM | Use `0.75 dn/modius` as simulator food-cost midpoint for central Italy. |
| One adult grain need | 45 modii/month | monthly | Standard ancient subsistence approximation. | MEDIUM | Implies grain cost alone of roughly 34 dn/month at 0.75 dn/modius. |
| Personal bare food floor | 0.120.20 dn | day | Derived from wheat consumption plus simple additions. | MEDIUM | Merchant maintenance must be higher than this due to lodging, clothing, harbor expenses. |
| Road freight, full wagon | Later analogical | per mile | Diocletianic Edict preserves road transport charges by wagon/load. | LOW | Use for ratios only; not direct Augustan prices. |
| Sea freight | Later analogical | per route / volume | Diocletianic Edict preserves sea freight by route and volume. | LOW | Useful for relative route cost, not exact first-century amount. |
### Recommended wage constants
```text
WAGE_UNSKILLED_DAY_DN = 0.50
WAGE_SKILLED_ARTISAN_DN = 1.00
WAGE_MERCHANT_SELF_DN = 1.00
WHEAT_MODIUS_DN = 0.75
```
---
## 4. Table 1 — Periodic Operating Costs
| Cost item | Amount (dn) | Per cycle | Source | Confidence | Notes |
|---|---:|---|---|---|---|
| OTIVM access / commercial information retainer | 2.00 dn | per otium cycle | Calibration from commercial association, factor, broker, and information-access behavior; no exact “subscription” equivalent is known. | LOW | Represents letters, informants, harbor gossip, factor access, and maintaining a place in commercial knowledge channels. |
| Personal maintenance | 4.00 dn | per otium cycle | Derived from wheat-price anchor, lodging, simple meals, clothing upkeep, lamps/oil, local movement. | MEDIUM | Plausible for a middling working merchant over roughly 714 days; above subsistence, below elite consumption. |
| Officia obligations | 2.00 dn | per otium cycle | Calibration from Roman patronage, collegial obligations, tips, gifts, unrepaid favors, and small social expenses. | LOW | Should fluctuate by status and events. Baseline represents ordinary soft obligations, not crisis bribes. |
| **Total recommended otium cycle cost** | **8.00 dn** | per otium cycle | Sum of three components. | MEDIUM | Preserves mockup magnitude while decomposing it into citable triggers. |
### Periodic-cost equation
```text
otium_cycle_cost_dn =
2.00 // otium_access_fee_dn
+ 4.00 // personal_maintenance_dn
+ 2.00 // officia_obligation_dn
= 8.00 dn
```
### Drift-log mapping
| Cost item | Suggested `trigger_type` | Parameter affected |
|---|---|---|
| OTIVM access | `otium_access_fee` | `liquiditas`, possibly `mercatus_scientia` maintenance |
| Personal maintenance | `personal_maintenance` | `liquiditas` |
| Officia obligations | `officia_obligation` | `liquiditas`, `clientela`, `fama` |
---
## 5. Baseline Goods Model Selection
The originally proposed wicker basket is useful, but ceramic vessels are a stronger first baseline because Roman pottery is archaeologically abundant, batched, transportable, breakable, and well suited to equation decomposition.
| Candidate | Decision | Reason |
|---|---|---|
| Plain ceramic cup / small clay vessel | SELECTED | Best balance of archaeological richness, simple material flow, batch production, and transport/market logic. |
| Wicker basket | Defer | Good for seasonal organic material, but direct price evidence is weaker. |
| Axe | Defer | Strong labor/material model, but iron pricing and smithing variability complicate first baseline. |
| Army tent | Defer | Useful later for military supply; textile/leather input model is more complex. |
| Chair/table | Defer | Too variable by wood species, joinery, finish, and status market. |
---
## 6. Table 2 — Plain Ceramic Cup / Small Clay Vessel Full Cost Structure
### Baseline assumptions
- Product: plain local ceramic cup or small cup-like vessel.
- Production mode: batched workshop production.
- Sale context: town or harbor market in Roman Italy.
- Finished item simulator retail value: `2 as = 0.125 dn`.
- Fine/slipped or branded version may be doubled to `4 as = 0.25 dn`.
- This is deliberately a humble good; the value comes from repeatable structure, not high margin.
### Cost components
| Component | Amount (dn or as) | Source | Confidence | Notes |
|---|---:|---|---|---|
| Clay extraction / raw clay | 0.125 as = 0.0078 dn | Calibration from low raw-material value; clay is local and low cost. | LOW | Clay is abundant; cost is mainly labor/access, not material scarcity. |
| Water and preparation | 0.125 as = 0.0078 dn | Calibration from workshop preparation logic. | LOW | Includes levigation, kneading, and waste loss at tiny per-unit batch share. |
| Permit/customary access fee for clay pit | 0.125 as = 0.0078 dn | Calibration from estate/public-land access logic. | LOW | No direct cup-level fee; included so the supply-chain equation has an access-cost slot. |
| Transport of raw clay to workshop | 0.25 as = 0.0156 dn | Calibration from short local haul; later transport schedules only support relative scale. | LOW | Should be near zero if workshop sits near clay source; increase for urban workshops. |
| Potter labor | 0.50 as = 0.03125 dn | Derived from skilled wage `1 dn/day` and batch production. | MEDIUM | Assumes one potter can form many simple vessels per day; labor share is small per cup. |
| Assistant / unskilled labor | 0.125 as = 0.0078 dn | Derived from `0.50 dn/day` unskilled wage and batch support. | MEDIUM | Includes moving clay, stacking, cleaning, carrying. |
| Kiln fuel | 0.25 as = 0.0156 dn | Calibration from kiln batch fuel spread across many items. | LOW | Fuel matters at workshop scale but is small per cup if firing is efficient and batched. |
| Kiln depreciation / tools | 0.125 as = 0.0078 dn | Calibration. | LOW | Covers wheel, tools, kiln wear, wasters. |
| Workshop overhead | 0.25 as = 0.0156 dn | Calibration from rent, storage, supervision, breakage. | LOW | Needed for equation completeness. |
| Breakage / waster allowance | 0.125 as = 0.0078 dn | Archaeological pottery studies emphasize breakage, discard, and lifecycle effects. | MEDIUM | Small per-unit surcharge; should rise for long-distance trade. |
| Finished-goods transport to local market | 0.25 as = 0.0156 dn | Calibration from short haul. | LOW | If carried to stall locally, this is small. For intercity transport, route system should add separate `vectura`. |
| Portoria / toll | 0 as local; 0.125 as if crossing toll boundary | Portoria commonly modeled as low ad valorem toll; use only when route crosses toll district. | MEDIUM | For local sale, zero. For transported goods, use route-level toll rather than baked-in cost. |
| Market fee / stall share | 0.25 as = 0.0156 dn | Calibration from market-control/stall logic. | LOW | Represents daily stall rent or market dues allocated per item. |
| Merchant margin | 0.50 as = 0.03125 dn | Calibration. | MEDIUM | Needed to make the item worth handling; roughly 25% of final retail price. |
| **Total local retail price** | **2.00 as = 0.125 dn** | Sum of components. | MEDIUM | Equation-safe humble ceramic cup baseline. |
### Baseline ceramic-cup equation
```text
ceramic_cup_local_cost_as =
clay_raw_as
+ clay_prep_as
+ clay_access_fee_as
+ raw_transport_as
+ potter_labor_as
+ assistant_labor_as
+ kiln_fuel_as
+ kiln_depreciation_as
+ workshop_overhead_as
+ breakage_allowance_as
+ finished_transport_as
+ local_portoria_as
+ market_fee_as
+ merchant_margin_as
```
With recommended values:
```text
ceramic_cup_local_cost_as =
0.125
+ 0.125
+ 0.125
+ 0.250
+ 0.500
+ 0.125
+ 0.250
+ 0.125
+ 0.250
+ 0.125
+ 0.250
+ 0.000
+ 0.250
+ 0.500
= 3.000 as
```
This sum is too high for the chosen `2 as` retail target. Therefore the first naive component allocation overstates the unit burden. Batch production must compress overhead and labor further.
### Corrected baseline equation
For the simulator, use a 2-as local cup and group micro-costs into batch categories:
| Aggregated component | Amount | Notes |
|---|---:|---|
| Raw material and preparation | 0.25 as | Clay, water, preparation, access. |
| Workshop labor | 0.50 as | Potter and assistant batch share. |
| Kiln/fuel/tools | 0.375 as | Firing and tool wear. |
| Breakage allowance | 0.125 as | Wasters and handling loss. |
| Local transport and market fee | 0.25 as | Stall and short transport. |
| Merchant margin | 0.50 as | Incentive to handle and sell. |
| **Total** | **2.00 as = 0.125 dn** | Recommended base constant. |
### Corrected equation
```text
ceramic_cup_base_as =
raw_material_prep_as // 0.25
+ workshop_labor_as // 0.50
+ kiln_fuel_tools_as // 0.375
+ breakage_allowance_as // 0.125
+ local_transport_market_as // 0.25
+ merchant_margin_as // 0.50
= 2.00 as
```
### Variant constants
| Good constant | Amount | Use |
|---|---:|---|
| `CERAMIC_CUP_PLAIN_LOCAL_AS` | 2 as | Local plain vessel. |
| `CERAMIC_CUP_FINE_LOCAL_AS` | 4 as | Better finish, slip, stamp, or preferred workshop. |
| `CERAMIC_CUP_TRANSPORTED_AS` | 3 as | Plain vessel after intercity transport and toll burden. |
| `CERAMIC_CUP_BREAKAGE_RATE_LOCAL` | 0.05 | Local handling. |
| `CERAMIC_CUP_BREAKAGE_RATE_INTERCITY` | 0.12 | Longer transport. |
| `CERAMIC_CUP_PORTORIA_RATE` | 0.025 | Use 2.5% ad valorem where toll applies. |
---
## 7. Simulator Constants
### Currency
```text
AS_PER_DENARIUS = 16
```
### Wages
```text
WAGE_UNSKILLED_DAY_DN = 0.50
WAGE_SKILLED_ARTISAN_DN = 1.00
WAGE_MERCHANT_SELF_DN = 1.00
WAGE_LEGIONARY_YEAR_DN = 225.00
```
### Food and maintenance
```text
WHEAT_MODIUS_DN = 0.75
MERCHANT_DAILY_MAINT_DN = 0.35
OTIUM_CYCLE_DAYS = 10
PERSONAL_MAINTENANCE_DN = 4.00
```
Note: `MERCHANT_DAILY_MAINT_DN * 10 = 3.50 dn`; rounded to `4.00 dn` to include incidental urban expense.
### Otium
```text
OTIUM_ACCESS_FEE_DN = 2.00
OFFICIA_OBLIGATION_DN = 2.00
OTIUM_CYCLE_TOTAL_DN = 8.00
```
### Ceramic baseline
```text
CERAMIC_CUP_PLAIN_LOCAL_AS = 2.00
CERAMIC_CUP_FINE_LOCAL_AS = 4.00
CERAMIC_CUP_TRANSPORTED_AS = 3.00
CERAMIC_CUP_PORTORIA_RATE = 0.025
CERAMIC_CUP_BREAKAGE_LOCAL_RATE = 0.05
CERAMIC_CUP_BREAKAGE_ROUTE_RATE = 0.12
```
### Route toll
```text
PORTORIA_AD_VALOREM_RATE_LOW = 0.025
PORTORIA_AD_VALOREM_RATE_HIGH = 0.050
```
Use `0.025` as default.
---
## 8. Confidence Register
| Model value | Confidence | Reason |
|---|---|---|
| 225 dn Augustan legionary stipend | HIGH | Strong standard anchor. |
| 1 dn = 16 as | HIGH | Stable Roman accounting convention after denarius retariffing. |
| Magistracy as unpaid / expense-bearing | HIGH | Good civic-status rule. |
| 0.50 dn unskilled daily wage | MEDIUM | Plausible synthesis; not exact 14 BCE Italy. |
| 1.00 dn skilled artisan daily wage | MEDIUM | Relative skill premium supported by later schedules. |
| 0.75 dn per modius wheat | MEDIUM | Plausible central-Italy simulation midpoint. |
| 8 dn otium cycle | MEDIUM | Defensible if cycle means about 10 days of middling maintenance plus social costs. |
| 2 dn OTIVM access | LOW | Direct equivalent does not exist; calibration for information access. |
| 2 dn officia | LOW | Historically real category, weakly priceable. |
| 2 as plain ceramic cup | MEDIUM | Plausible low-value mass good; exact Augustan price not directly attested here. |
| Ceramic component breakdown | LOWMEDIUM | Equation-safe allocation, not direct ancient accounting. |
---
## 9. Open Questions / Calibration Flags
1. **Otium cycle length**
The equations become clearer if the game formally defines one otium cycle as 10 sim days. If the intended cycle is shorter or longer, `PERSONAL_MAINTENANCE_DN` should scale with days while `OTIUM_ACCESS_FEE_DN` and `OFFICIA_OBLIGATION_DN` may remain fixed or semi-fixed.
2. **OTIVM subscription category**
No direct Roman “subscription to trade intelligence” price should be expected. Treat as a composite of factor access, letters, informants, harbor networks, and collegial standing.
3. **Officia**
This should become event-sensitive. Suggested multiplier:
```text
officia_cost = base_officia * status_multiplier * event_pressure
```
Where `status_multiplier` rises with `auctoritas` and `clientela`.
4. **Pottery transport**
The local cup is useful as a production baseline but not as a lucrative trade good. Transported ceramics should be modeled in batches, not as single-item cargo.
5. **Fine ware**
Terra sigillata or stamped fine ware should be a separate product class. It is not merely a plain cup with higher price; it implies different production organization, reputation, and distribution.
---
## 10. Bibliography and Evidence Notes
### Primary / ancient evidence
- **Diocletian, Edictum de Pretiis Rerum Venalium**, AD 301. Used only as a later Roman relative price and wage schedule, not as direct 14 BCE pricing.
- **Polybius, Histories**, Book 6. Used for Republican military pay/ration context.
- **Suetonius / Augustus-era military-pay tradition.** Used indirectly through modern synthesis for Augustan stipendium.
### Modern works and datasets consulted
- Antony Kropff, *An English translation of the Edict on Maximum Prices, also known as the Price Edict of Diocletian*, version 2.1, 2016.
URL: https://kark.uib.no/antikk/dias/priceedict.pdf
- Walter Scheidel, *Real wages in Roman Egypt: A contribution to recent work on pre-modern living standards*, Princeton/Stanford Working Papers in Classics, 2008.
URL: https://www.ancientportsantiques.com/wp-content/uploads/Documents/AUTHORS/Scheidel2008-Wages.pdf
- J. Theodore Peña, *Roman Pottery in the Archaeological Record*, Cambridge University Press, 2007.
Used for pottery lifecycle framing: manufacture, distribution, use, reuse, maintenance, recycling, discard, reclamation.
- Heli Kiiskinen, *Production and Trade of Etrurian Terra Sigillata Pottery in Roman Etruria and beyond between c. 50 BCE and c. 150 CE*, 2013.
Used for transport/distribution relevance of Italian terra sigillata and the caution that pottery trade involved multiple models.
- Richard Duncan-Jones, *The Economy of the Roman Empire: Quantitative Studies*, 2nd ed., Cambridge University Press, 1982.
General calibration background for prices, costs, and quantitative Roman-economy evidence.
- Peter Temin, *The Roman Market Economy*, Princeton University Press, 2013.
General market-context support.
- Walter Scheidel, Ian Morris, and Richard Saller, eds., *The Cambridge Economic History of the Greco-Roman World*, Cambridge University Press, 2007.
General economic background and scale calibration.
- Jean Andreau, *Banking and Business in the Roman World*, Cambridge University Press, 1999.
Used for commercial-network context.
- Koenraad Verboven, *The Economy of Friends: Economic Aspects of Amicitia and Patronage in the Late Republic*, Latomus, 2002.
Used for `officia`, patronage, and social-economic obligations.
- Philip A. Harland, *Associations, Synagogues, and Congregations*, 2nd ed., 2013.
Used for collegial and association behavior as social-economic context.
---
## 11. Implementation Note
Recommended database insertion pattern:
```text
parameter_drift_log.trigger_type = 'otium_access_fee'
parameter_drift_log.delta_note = 'Commercial information access and factor network maintenance.'
parameter_drift_log.value_after = liquiditas_before - OTIUM_ACCESS_FEE_DN
parameter_drift_log.trigger_type = 'personal_maintenance'
parameter_drift_log.delta_note = 'Food, lodging, clothing upkeep, light, and local movement.'
parameter_drift_log.value_after = liquiditas_after_access - PERSONAL_MAINTENANCE_DN
parameter_drift_log.trigger_type = 'officia_obligation'
parameter_drift_log.delta_note = 'Patronage, tips, gifts, collegial contributions, and unrecovered favors.'
parameter_drift_log.value_after = liquiditas_after_maintenance - OFFICIA_OBLIGATION_DN
```
This preserves the current `8 dn` design while making the ledger explainable and citable.