Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions economics/ai_central_bank_enhanced.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

def stabilize_ippr(current_ippr: float, supply: int, target: int = 314_000_000) -> float:
error = (target - supply) / target
updated = current_ippr * (1 + 0.05 * error)
return max(0.0, updated)


def run_policy_path(start_ippr=0.02, start_supply=300_000_000, years=10):
ippr = start_ippr
supply = start_supply
history = []

for year in range(1, years + 1):
ippr = stabilize_ippr(ippr, supply)
supply = int(supply * (1 + ippr * 0.2))
history.append({"year": year, "ippr": round(ippr, 6), "supply": supply})

return history


if __name__ == "__main__":
print(run_policy_path())
40 changes: 40 additions & 0 deletions economics/ai_economic_stabilizer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import numpy as np

class EconomicStabilizer:

def __init__(self):
self.target_liquidity = 50
self.reward_multiplier = 1.0

def update(self, liquidity, transaction_volume):

if liquidity < self.target_liquidity:
self.reward_multiplier *= 1.05

elif liquidity > self.target_liquidity * 1.5:
self.reward_multiplier *= 0.95

if transaction_volume > 1000:
self.reward_multiplier *= 0.98

return self.reward_multiplier


def simulate():

stabilizer = EconomicStabilizer()

liquidity_levels = np.random.normal(50, 10, 100)
volumes = np.random.normal(800, 200, 100)

multipliers = []

for l, v in zip(liquidity_levels, volumes):
multipliers.append(stabilizer.update(l, v))

return multipliers


if __name__ == "__main__":
results = simulate()
print("Simulation multipliers:", results[:10])
113 changes: 113 additions & 0 deletions economics/ai_human_economy_simulator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
"""
AI + Human Economy Simulator
Models future Pi ecosystem workforce economy
"""

import random
import statistics
from dataclasses import dataclass, field
from typing import List


@dataclass
class Task:
difficulty: float
ai_accuracy: float
reward: float


@dataclass
class HumanWorker:
skill: float
tasks_completed: int = 0
earnings: float = 0.0


@dataclass
class AISystem:
accuracy: float


@dataclass
class EconomyState:
humans: List[HumanWorker]
ai: AISystem
tasks: List[Task]
reward_pool: float = 0


class HumanAIEconomySimulator:

def __init__(self, human_count=1000):
humans = [
HumanWorker(skill=random.uniform(0.4, 1.0))
for _ in range(human_count)
]

self.state = EconomyState(
humans=humans,
ai=AISystem(accuracy=0.75),
tasks=[]
)

def generate_tasks(self, n=500):
tasks = []
for _ in range(n):
difficulty = random.uniform(0.2, 1.0)
reward = difficulty * random.uniform(0.5, 2.0)

tasks.append(Task(
difficulty=difficulty,
ai_accuracy=self.state.ai.accuracy,
reward=reward
))

self.state.tasks = tasks

def ai_attempt(self, task):
success = random.random() < (self.state.ai.accuracy - task.difficulty * 0.3)
return success

def human_attempt(self, worker, task):
probability = worker.skill - task.difficulty * 0.4
success = random.random() < probability

if success:
worker.tasks_completed += 1
worker.earnings += task.reward
self.state.reward_pool += task.reward

return success

def run_round(self):

for task in self.state.tasks:

if self.ai_attempt(task):
continue

worker = random.choice(self.state.humans)
self.human_attempt(worker, task)

def summary(self):

earnings = [h.earnings for h in self.state.humans]

return {
"total_rewards": sum(earnings),
"avg_worker_income": statistics.mean(earnings),
"median_worker_income": statistics.median(earnings),
"top_worker": max(earnings),
"tasks_completed": sum(h.tasks_completed for h in self.state.humans)
}


if __name__ == "__main__":

sim = HumanAIEconomySimulator()

for _ in range(30):
sim.generate_tasks(500)
sim.run_round()

print(sim.summary())
28 changes: 28 additions & 0 deletions economics/autonomous_pi_economy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import random

years = 10

supply = 1000000000
liquidity = 50000000
activity = 100000

for year in range(1, years+1):

activity_growth = random.uniform(0.05,0.20)
liquidity_growth = random.uniform(0.03,0.15)

activity *= (1 + activity_growth)
liquidity *= (1 + liquidity_growth)

fees = activity * 0.01
rewards = fees * 1.2

supply += rewards

print("Year:",year)
print("Supply:",int(supply))
print("Liquidity:",int(liquidity))
print("Activity:",int(activity))
print("Fees:",int(fees))
print("Rewards:",int(rewards))
print("--------------------")
60 changes: 60 additions & 0 deletions economics/economic_model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# PiRC Economic Model

## Overview

The PiRC economic model defines the relationship between token supply,
liquidity growth, economic activity, and reward distribution.

The objective is to create a sustainable economic loop within the Pi ecosystem.

Core variables:

S = token supply
L = liquidity
A = economic activity
F = protocol fees
R = rewards distributed

The PiRC loop can be expressed as:

S → L → A → F → R → S

This reflexive loop ensures that reward issuance is linked to real economic activity.

---

## Economic Flow

1 Pioneer Supply increases available tokens.

2 Liquidity providers deposit tokens into liquidity pools.

3 Economic activity generates transaction fees.

4 Fees are partially routed to the treasury.

5 Rewards are distributed to participants.

---

## Economic Stability

To prevent inflation, the protocol introduces several constraints:

reward_emission ≤ fee_generation × emission_multiplier

Where:

emission_multiplier ∈ [0.5 , 2.0]

These bounds ensure that reward emissions remain tied to real activity.

---

## Long-Term Objective

The model attempts to stabilize the ecosystem by aligning:

• token incentives
• liquidity incentives
• user participation
68 changes: 68 additions & 0 deletions economics/global_pi_economy_simulator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import random
from dataclasses import dataclass

@dataclass
class EconomyState:

pioneers: int
apps: int
transactions: int
circulating_pi: float
price: float


class GlobalPiEconomySimulator:

def __init__(self):

self.state = EconomyState(
pioneers=17000000,
apps=200,
transactions=1000000,
circulating_pi=2000000000,
price=0.5
)

def simulate_growth(self):

new_users = int(self.state.pioneers * random.uniform(0.01, 0.05))
new_apps = int(self.state.apps * random.uniform(0.02, 0.1))

self.state.pioneers += new_users
self.state.apps += new_apps

def simulate_activity(self):

self.state.transactions = int(
self.state.pioneers *
random.uniform(0.05, 0.3)
)

def price_model(self):

demand = self.state.transactions * 0.00001
supply = self.state.circulating_pi

self.state.price = demand / supply * 100000

def run_year(self):

self.simulate_growth()
self.simulate_activity()
self.price_model()

def summary(self):

return vars(self.state)


if __name__ == "__main__":

sim = GlobalPiEconomySimulator()

for year in range(10):

sim.run_year()

print("YEAR", year)
print(sim.summary())
26 changes: 26 additions & 0 deletions economics/liquidity_model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Liquidity Model

## Liquidity Objective

Liquidity stabilizes token markets and supports trading activity.

Liquidity growth function:

Lt+1 = Lt + αD − βW

Where:

D = deposits
W = withdrawals
α = liquidity growth factor
β = liquidity decay factor

---

## Liquidity Incentives

Liquidity providers receive rewards proportional to:

• deposited capital
• duration of liquidity provision
• trading volume supported
20 changes: 20 additions & 0 deletions economics/merchant_pricing_sim.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import statistics


def stable_price(kraken, kucoin, binance, phi=0.05):
median_price = statistics.median([kraken, kucoin, binance])
return round(median_price * (1 + phi), 6)


def simulate_quotes(quotes):
computed = [stable_price(k, ku, b) for k, ku, b in quotes]
return {
"samples": len(computed),
"avg_stable_price": round(sum(computed) / len(computed), 6) if computed else 0,
"latest_stable_price": computed[-1] if computed else 0,
}


if __name__ == "__main__":
sample_quotes = [(0.81, 0.79, 0.83), (0.84, 0.82, 0.85), (0.88, 0.87, 0.89)]
print(simulate_quotes(sample_quotes))
Loading