Delegate independent tasks to specialized agents working concurrently with isolated context.
Epistemic Arbitrage
epistemic-arbitrage
Propagator-based parallel structure for exploiting knowledge differentials across domains using local scoped propagators and SplitMixTernary RNG.
SKILL.md
Full skill instructions
Epistemic Arbitrage: Propagator-Based Knowledge Synthesis
Epistemic arbitrage exploits knowledge differentials between domains. When concept A in domain X is well-understood, but its isomorphic counterpart A' in domain Y is mysterious, we can arbitrage by transferring understanding.
Core Architecture
Propagator Networks (Radul/Sussman)
A propagator network consists of:
┌─────────┐ ┌─────────────┐ ┌─────────┐
│ Cell A │────▶│ Propagator │────▶│ Cell B │
│ (known) │ │ (transfer) │ │(derived)│
└─────────┘ └─────────────┘ └─────────┘
- Cells: Containers for partial information
- Propagators: Functions that combine/transform information
- Merging: Monotonic accumulation (information only increases)
SplitMixTernary RNG
For parallel propagation with determinism:
class SplitMixTernary
GOLDEN = 0x9e3779b97f4a7c15 # Golden ratio constant
def initialize(seed)
@state = seed
end
def next_ternary
# Advance state (SplitMix64)
@state = (@state + GOLDEN) & 0xFFFFFFFFFFFFFFFF
z = @state
z = ((z ^ (z >> 30)) * 0xbf58476d1ce4e5b9) & 0xFFFFFFFFFFFFFFFF
z = ((z ^ (z >> 27)) * 0x94d049bb133111eb) & 0xFFFFFFFFFFFFFFFF
z = z ^ (z >> 31)
# Map to ternary: -1, 0, +1
(z % 3) - 1
end
def split(index)
# Create independent child stream
child_seed = @state ^ (index * GOLDEN)
SplitMixTernary.new(child_seed)
end
end
Arbitrage Patterns
Pattern 1: Domain Transfer
# Knowledge in domain A
cell_a = Cell.new(:music, :circle_of_fifths)
cell_a.add_info(:structure, :cyclic_group_12)
cell_a.add_info(:generator, :perfect_fifth)
# Unknown in domain B
cell_b = Cell.new(:number_theory, :modular_arithmetic)
# Propagator transfers structure
propagator = Propagator.new(:domain_transfer) do |source, target|
if source.has?(:structure)
target.merge(:structure, source.get(:structure))
target.merge(:insight, "Z/12Z isomorphic to circle of fifths")
end
end
propagator.connect(cell_a, cell_b)
propagator.fire!
Pattern 2: Dual Discovery
# Known: Fourier transform on functions
cell_time = Cell.new(:analysis, :time_domain)
cell_freq = Cell.new(:analysis, :frequency_domain)
# Propagator: Fourier duality
duality_propagator = Propagator.new(:fourier_duality) do |time, freq|
time.each_property do |prop, val|
dual_prop = fourier_dual(prop) # convolution ↔ multiplication, etc.
freq.merge(dual_prop, val)
end
end
Pattern 3: Triangle Arbitrage
When three domains have pairwise connections, exploit the triangle:
# Three domains with partial knowledge
cell_math = Cell.new(:mathematics, :group_theory)
cell_music = Cell.new(:music, :harmony)
cell_physics = Cell.new(:physics, :symmetry)
# Pairwise propagators
math_music = Propagator.new(:pitch_class_groups)
music_physics = Propagator.new(:overtone_series)
physics_math = Propagator.new(:lie_groups)
# Triangle inequality enables arbitrage:
# d(math, physics) ≤ d(math, music) + d(music, physics)
#
# If direct math→physics is hard, go via music!
Local Scoped Propagators
Scoping for Parallelism
Each propagator runs in a local scope with:
class ScopedPropagator
def initialize(name, rng_seed, &block)
@name = name
@rng = SplitMixTernary.new(rng_seed)
@block = block
@local_cells = {}
end
def fork(n)
# Create n parallel scopes with independent RNG streams
n.times.map do |i|
child_rng = @rng.split(i)
ScopedPropagator.new("#{@name}/#{i}", child_rng.state, &@block)
end
end
def run(inputs)
# Execute in isolated scope
@local_cells = inputs.dup
@block.call(self, @local_cells)
@local_cells
end
end
Parallel Arbitrage Network
# Master network
network = ArbitrageNetwork.new(seed: 1069)
# Add cells for each domain
network.add_cell(:category_theory, knowledge: 0.9)
network.add_cell(:music_theory, knowledge: 0.7)
network.add_cell(:physics, knowledge: 0.5)
network.add_cell(:philosophy, knowledge: 0.3)
# Add arbitrage propagators
network.add_propagator(:category_to_music, [:category_theory], [:music_theory])
network.add_propagator(:music_to_physics, [:music_theory], [:physics])
network.add_propagator(:physics_to_philosophy, [:physics], [:philosophy])
# Run in parallel (SPI-compliant)
results = network.run_parallel(n_workers: 4)
Integration with Music Topos
With World Broadcast
# Each mathematician is a knowledge source
broadcasters = WorldBroadcast::TripartiteSystem.new([:ramanujan, :grothendieck, :euler])
# Create cells from mathematician expertise
cells = broadcasters.agents.map do |agent|
Cell.new(agent.profile[:domain],
knowledge: agent.history.size,
operations: agent.profile[:operations])
end
# Arbitrage between mathematicians
network = ArbitrageNetwork.from_cells(cells)
network.add_all_pairwise_propagators
network.run!
With Synadia
# Publish arbitrage opportunities
network.on_arbitrage do |source, target, gain|
SynadiaBroadcast.publish("arbitrage.opportunity", {
from: source.domain,
to: target.domain,
knowledge_gain: gain
})
end
# Subscribe to external knowledge
SynadiaBroadcast.subscribe("knowledge.*") do |msg|
domain = msg.subject.split('.').last.to_sym
network.cells[domain].merge(:external, msg.data)
end
With Glass Bead Game
# Arbitrage opportunities become game moves
network.on_arbitrage do |source, target, gain|
if gain > threshold
move = GlassBeadGame::Connect.new(
from: Bead.new(source.domain, source.best_concept),
to: Bead.new(target.domain, target.mystery),
via: :epistemic_transfer,
value: gain
)
game.propose_move(move)
end
end
Guarantees
- SPI Compliance: Parallel execution ≡ sequential (bitwise identical)
- Determinism: Same seed → same arbitrage discoveries
- Monotonicity: Knowledge only increases (no forgetting)
- Locality: Propagators only access explicitly connected cells
- Triangle Inequality: d(A,C) ≤ d(A,B) + d(B,C) for all knowledge transfers
Commands
just arbitrage # Run arbitrage network
just arbitrage-domains a b # Arbitrage between specific domains
just propagator-network # Visualize propagator network
just knowledge-flow # Show knowledge flow diagram
More Other skills
brand-guidelines
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
internal-comms
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Fundamental design principles for writing maintainable, testable Python code.
responsive-design
Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.
Generate Playwright tests from scenarios using interactive browser exploration and validation.
Automated website exploration and test case generation using Playwright.
Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.
gdpr-data-handling
GDPR-compliant data handling with consent management, data subject rights, and privacy controls.
Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.
refactor-plan
Detailed multi-file refactor planning with safety checks and rollback guidance.
