Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Vector Money Simulation

Should money have more than one dimension?

Every ecological fact the economy must act on — a shrinking carbon budget, a depleted aquifer — gets compressed into a single scalar (a price) before anyone's budget constraint feels it. Vector money is the proposal that money should carry ecological information natively: a wallet holds cash plus non-fungible token components tied one-to-one to biophysical stocks (carbon, water, biomass, minerals), issued each period at the estimated sustainable yield of each stock.

This repository does not advocate vector money. It tests it: open agent-based simulations and controlled experiments where the same economy is played by rule-based agents, reinforcement learners, LLM agents (Claude), and human participants — in worlds that hold still and worlds with a shifting climate.

📖 Read the full thesis · 🌐 Project site · 🧪 Human experiment · 💰 Funding strategy & proposals

First results

12 seeds × 200 periods, rule-based agents (python -m experiments.run_matrix):

ConditionWelfareCumulative overshootSatisfaction Gini
Scalar × static0.840.00.10
Scalar × shifting climate0.6260.00.05
Vector × static0.520.00.01
Vector × shifting climate0.4629.80.01
  • In a stable world, scalar money wins — roughly 60 % more welfare (0.84 ± 0.03 vs 0.52 ± 0.10) at zero overshoot for both regimes.
  • Under a shifting climate, vector money's cumulative overshoot is roughly half scalar's (29.8 ± 9.6 vs 60.0 ± 18.1) and its stocks recover above the ecological boundary while scalar money's are drained and stay drained. (n = 12 seeds; a directional finding, not a precisely quantified one.)
  • Cash-convertibility protection collapses somewhere between 0 % and 25 % (our sweep's grid is too coarse to pin the threshold down further) — Friedman's black-market critique, quantified — while in stable worlds partial convertibility beats both pure systems on welfare.

Every claim above is one command away from being checked. Details, caveats and the four critiques we invite (Hayek, Friedman, complexity backfire, mental accounting) are in docs/thesis.md.

Quick start

python -m venv .venv &&source .venv/bin/activate
pip install -e .&& pip install pytest matplotlib
pytest # 61 tests, ~2 s# reproduce the headline 2×2 matrix
python -m experiments.run_matrix --config experiments/configs/matrix.yaml --output experiments/results
# the scalar↔vector convertibility sweep
python -m experiments.run_matrix --config experiments/configs/convertibility_sweep.yaml --output experiments/results_convertibility
# regenerate all figures
python -m experiments.plot_results --results experiments/results --sweep experiments/results_convertibility --output figures

To run LLM agents (Claude) instead of the offline mock, set ANTHROPIC_API_KEY and use experiments/configs/substrates.yaml; without credentials the harness falls back to a deterministic mock so tests and CI never need the network. To try the human experiment, open experiments/human/web/index.html?money=vector&env=shifting in a browser.

What's in the box

PathWhat it is
src/money.pyThe scalar ↔ vector money continuum (convertibility λ, carryover, per-capita issuance)
src/climate.pyStatic and shifting (climate-change) environments: logistic stocks, drift, shocks
src/economy.pyThe experiment economy: households, lagged institutions, hard budget constraints
src/policies.pyFour decision substrates: rules, Q-learning, Claude LLM agents, humans
experiments/Matrix runner, configs, figures, and the human-experiment package (protocol, instructions, browser game)
docs/thesis.mdThe research thesis: lineage, formal definition, hypotheses H1–H5, honest critiques
proposals/Grant proposals and funding strategy (Cooperative AI Foundation, Anthropic, Foresight, Hewlett, Laudes, DEAL/P4NE)
site/The project website (static, GitHub-Pages-ready)
figures/Publication figures, regenerable from scratch

The original Mesa scaffold (DoughnutABM, baseline world model, market module) is retained and tested; the experiment layer above is purpose-built for the scalar-vs-vector comparison.

Get involved

The fastest way to improve this work is to try to break it. We are looking for adversarial replications, a university partner for the powered human study (and eligibility-gated grants), economists who think the critiques win, and funders who think the hypotheses are worth answering.

Contact: jean@hylaean.com · License: GPLv3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages