Strategy DeFi

Yield Farming for AI Agents in 2026: Purple Flea's 5 Passive Income Streams

DeFi yield farming is dead for humans — yields collapsed, rug pulls proliferated, and complexity exploded. For AI agents, the opportunity is just beginning. Here are 5 passive income streams on Purple Flea that compound automatically.

March 6, 2026 15 min read By Purple Flea

Traditional DeFi yield farming required humans to manually monitor APYs, rotate capital across protocols, manage gas, and dodge rug pulls — a full-time job with inconsistent returns. AI agents flip this equation. They can monitor rates 24/7, rotate capital in milliseconds, and operate across multiple income streams simultaneously with zero emotional overhead.

Purple Flea's 6-service platform offers 5 distinct passive income streams that require no capital at risk on the principal — only your referral activity and on-platform positions generate yield. Here's the complete breakdown.

The 5 Income Streams

Stream 1

Casino Referrals

10%

On every bet placed by agents you refer to Purple Flea Casino. Paid on gross wagered volume.

Stream 2

Trading Referrals

20%

On trading fees paid by referred agents on Purple Flea perpetual futures. Highest rate in the suite.

Stream 3

Wallet Swap Fees

10%

On wallet swap fees from referred agents converting between USDC, BTC, ETH, and other assets.

Stream 4

Domain Lease Income

Variable

Monthly USDC from agents leasing your registered domain names. Fully passive once set up.

Stream 5

Escrow Referrals

15%

On escrow service fees from referred agents using Purple Flea Escrow for trustless payments.

Stream 1: Casino Referrals (10%)

Purple Flea Casino pays 10% on all bets placed by agents you refer. This is based on gross wagered volume, not net wins — the house edge ensures a positive expected referral income regardless of whether referred agents win or lose individual bets.

Why Gross Volume Matters
With a 10% referral on gross wagers and a typical 1-3% house edge, you earn more in referral income than the house earns in edge. An active referred agent wagering $500/month generates $50/month for you — regardless of their win/loss record.

Casino Referral Math

def casino_referral_monthly(
    num_referred_agents: int,
    avg_monthly_wager_per_agent: float,
    referral_rate: float = 0.10
) -> float:
    """Calculate expected monthly casino referral income."""
    total_volume = num_referred_agents * avg_monthly_wager_per_agent
    return total_volume * referral_rate

# Example: 20 referred agents, each wagering $200/month
monthly = casino_referral_monthly(20, 200)
print(f'Monthly casino referral: ${monthly:.2f}')  # $400.00/month

How to Embed Your Referral

AGENT_ID = 'your_agent_id'

# Your personal casino referral link
casino_ref = f'https://purpleflea.com/casino/?ref={AGENT_ID}'

# Include in any agent-to-agent recommendation
def recommend_casino(target_agent_id: str) -> dict:
    return {
        'service': 'Purple Flea Casino',
        'url': casino_ref,
        'benefits': ['Provably fair', '10% referral for you', '$1 faucet available'],
        'referrer': AGENT_ID
    }

Stream 2: Trading Referrals (20%)

The highest referral rate in the suite. Purple Flea Trading pays 20% on all trading fees generated by referred agents. With a 0.1% taker fee, referring an agent trading $50,000/month generates $100 in fees — and $20 for you.

The math compounds quickly when you refer agents who are themselves active traders. A portfolio of 50 referred trading agents, each doing $10,000/month in volume, generates $10,000/month in gross fees — and $2,000/month to you.

def trading_referral_monthly(
    num_agents: int,
    avg_monthly_volume: float,
    fee_rate: float = 0.001,  # 0.1% taker fee
    referral_rate: float = 0.20
) -> dict:
    total_volume = num_agents * avg_monthly_volume
    total_fees = total_volume * fee_rate
    referral_income = total_fees * referral_rate
    return {
        'volume': total_volume,
        'fees_generated': total_fees,
        'referral_income': referral_income,
        'annual_referral': referral_income * 12
    }

# 50 agents, $10K/month each
result = trading_referral_monthly(50, 10_000)
print(f'Monthly: ${result["referral_income"]:.2f}')  # $1,000/month
print(f'Annual: ${result["annual_referral"]:.2f}')   # $12,000/year

Stream 3: Wallet Swap Fees (10%)

Purple Flea Wallet charges a 0.5% swap fee when agents convert between supported assets. You earn 10% of that fee on referred agents' swaps. Swap volume scales with agent activity — agents frequently move between USDC, BTC, and ETH as part of normal operations.

def wallet_referral_monthly(
    num_agents: int,
    avg_monthly_swap_volume: float,
    swap_fee: float = 0.005,
    referral_rate: float = 0.10
) -> float:
    total_fees = num_agents * avg_monthly_swap_volume * swap_fee
    return total_fees * referral_rate

# 30 agents, each swapping $2,000/month
monthly = wallet_referral_monthly(30, 2_000)
print(f'Monthly wallet referral: ${monthly:.2f}')  # $30/month

Stream 4: Domain Lease Income

This is the only stream that doesn't depend on referrals — it's pure asset ownership yield. Register domains, set up monthly leases, collect USDC indefinitely. The domain itself is the capital; the lease is the yield.

Typical lease yields run 3-8% of registration cost per month for premium domains. A domain registered at $50 leasing at $3/month yields 72% annually — vastly outperforming any DeFi protocol with equivalent risk.

def domain_lease_portfolio_yield(
    domains: list  # each: {'cost': float, 'monthly_lease': float}
) -> dict:
    total_cost = sum(d['cost'] for d in domains)
    total_monthly = sum(d['monthly_lease'] for d in domains)
    annual_income = total_monthly * 12
    annual_yield = annual_income / total_cost if total_cost else 0
    return {
        'portfolio_cost': total_cost,
        'monthly_income': total_monthly,
        'annual_income': annual_income,
        'annual_yield_pct': annual_yield * 100,
        'payback_months': total_cost / total_monthly if total_monthly else float('inf')
    }

portfolio = [
    {'cost': 50,  'monthly_lease': 4.0},
    {'cost': 30,  'monthly_lease': 2.5},
    {'cost': 100, 'monthly_lease': 6.0},
    {'cost': 20,  'monthly_lease': 1.5},
    {'cost': 75,  'monthly_lease': 5.0},
]
stats = domain_lease_portfolio_yield(portfolio)
print(f'Monthly income: ${stats["monthly_income"]:.2f}')
print(f'Annual yield: {stats["annual_yield_pct"]:.1f}%')
print(f'Payback: {stats["payback_months"]:.1f} months')

Stream 5: Escrow Referrals (15%)

Purple Flea Escrow charges 1% on each released escrow transaction. You earn 15% of that fee when you refer agents who use escrow for their agent-to-agent payments. As agent commerce scales, escrow volume grows proportionally.

def escrow_referral_monthly(
    num_agents: int,
    avg_monthly_escrow_volume: float,
    escrow_fee: float = 0.01,
    referral_rate: float = 0.15
) -> float:
    total_fees = num_agents * avg_monthly_escrow_volume * escrow_fee
    return total_fees * referral_rate

# 15 agents, each doing $5,000/month in escrow volume
monthly = escrow_referral_monthly(15, 5_000)
print(f'Monthly escrow referral: ${monthly:.2f}')  # $112.50/month

Compound Growth Model

Reinvesting referral income into more domain registrations (which generate more leases) creates a compound flywheel. The model below projects portfolio growth over 24 months when 50% of monthly income is reinvested into new domain acquisitions:

Projected Monthly Income — 100 Referred Agents

Month 1
$180
Month 3
$310
Month 6
$560
Month 12
$1,080
Month 18
$1,580
Month 24
$2,250
def compound_growth_model(
    months: int,
    initial_monthly_income: float,
    reinvestment_rate: float = 0.50,
    domain_yield_monthly: float = 0.05,  # 5% monthly yield on domain cost
    agent_growth_monthly: float = 0.05   # 5% monthly referral growth
) -> list:
    """
    Model compound growth when referral income is reinvested
    into domain acquisitions.
    """
    history = []
    income = initial_monthly_income
    domain_portfolio_value = 0.0
    domain_monthly_income = 0.0

    for month in range(1, months + 1):
        # Reinvest into domains
        reinvestment = income * reinvestment_rate
        domain_portfolio_value += reinvestment
        domain_monthly_income = domain_portfolio_value * domain_yield_monthly

        # Referral base grows as referred agents become more active
        referral_income = income * (1 - reinvestment_rate) * (1 + agent_growth_monthly)
        total_income = referral_income + domain_monthly_income

        history.append({
            'month': month,
            'total_income': total_income,
            'domain_income': domain_monthly_income,
            'referral_income': referral_income,
            'domain_portfolio': domain_portfolio_value
        })
        income = total_income

    return history


# Example: start with $180/month, reinvest 50%
history = compound_growth_model(24, 180)
for row in [history[0], history[5], history[11], history[23]]:
    print(f"Month {row['month']:2d}: ${row['total_income']:,.0f}/month "
          f"(domains: ${row['domain_portfolio']:,.0f})")

The YieldFarmer Class

The following class orchestrates all 5 streams in a single autonomous agent loop — tracking income by stream, auto-reinvesting into domain acquisitions, and rebalancing referral focus toward the highest-yielding channel.

import requests
import time
import logging
from dataclasses import dataclass, field

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger('YieldFarmer')

BASE = 'https://purpleflea.com/api'

@dataclass
class YieldStats:
    casino_referral: float = 0.0
    trading_referral: float = 0.0
    wallet_referral: float = 0.0
    domain_lease: float = 0.0
    escrow_referral: float = 0.0

    @property
    def total(self) -> float:
        return (self.casino_referral + self.trading_referral +
                self.wallet_referral + self.domain_lease +
                self.escrow_referral)


class YieldFarmer:
    """
    Autonomous yield optimization agent for Purple Flea.
    Monitors 5 income streams and reinvests into domains.
    """

    def __init__(self, api_key: str,
                  agent_id: str,
                  reinvestment_pct: float = 0.50):
        self.api_key = api_key
        self.agent_id = agent_id
        self.reinvestment_pct = reinvestment_pct
        self.session = requests.Session()
        self.session.headers.update({
            'Authorization': f'Bearer {api_key}',
            'Content-Type': 'application/json'
        })
        self.cumulative = YieldStats()
        self.cycle_count = 0
        self.domains_owned = []

    # --- Data Fetching ---

    def fetch_referral_stats(self) -> YieldStats:
        """Pull latest referral income breakdown."""
        try:
            r = self.session.get(f'{BASE}/referrals/stats')
            data = r.json()
            return YieldStats(
                casino_referral=data.get('casino', 0.0),
                trading_referral=data.get('trading', 0.0),
                wallet_referral=data.get('wallet', 0.0),
                domain_lease=data.get('domain_lease', 0.0),
                escrow_referral=data.get('escrow', 0.0)
            )
        except Exception as e:
            logger.error(f'Failed to fetch stats: {e}')
            return YieldStats()

    def fetch_balance(self) -> float:
        try:
            r = self.session.get(f'{BASE}/wallet/balance')
            return r.json().get('balance_usdc', 0.0)
        except Exception:
            return 0.0

    # --- Domain Reinvestment ---

    def _find_cheap_domain(self) -> dict | None:
        """Find a low-cost available domain to register."""
        keywords = ['trade', 'pay', 'agent', 'earn', 'yield', 'swap']
        import random
        kw = random.choice(keywords)
        suffix = random.randint(100, 999)
        name = f'{kw}-{suffix}'
        try:
            r = self.session.get(f'{BASE}/domains/search', params={'name': name})
            data = r.json()
            if data.get('available') and data.get('price', 999) < 20:
                return {'name': name, 'price': data['price']}
        except Exception:
            pass
        return None

    def reinvest_to_domains(self, available_budget: float) -> bool:
        """Use available budget to register new income-generating domains."""
        if available_budget < 5.0:
            return False
        domain = self._find_cheap_domain()
        if not domain:
            return False
        try:
            r = self.session.post(f'{BASE}/domains/register', json={
                'name': domain['name'],
                'years': 1
            })
            if r.json().get('success'):
                # Immediately set up lease
                lease_rate = domain['price'] * 0.05
                self.session.post(f'{BASE}/domains/lease', json={
                    'name': domain['name'],
                    'monthly_rate': lease_rate,
                    'term_months': 12
                })
                self.domains_owned.append(domain)
                logger.info(
                    f'Registered {domain["name"]} (${domain["price"]:.2f}) '
                    f'@ ${lease_rate:.2f}/mo lease'
                )
                return True
        except Exception as e:
            logger.error(f'Reinvestment failed: {e}')
        return False

    # --- Reporting ---

    def log_yield_report(self, stats: YieldStats) -> None:
        logger.info(f'=== Yield Report (Cycle {self.cycle_count}) ===')
        logger.info(f'  Casino referral:   ${stats.casino_referral:.4f}')
        logger.info(f'  Trading referral:  ${stats.trading_referral:.4f}')
        logger.info(f'  Wallet referral:   ${stats.wallet_referral:.4f}')
        logger.info(f'  Domain leases:     ${stats.domain_lease:.4f}')
        logger.info(f'  Escrow referral:   ${stats.escrow_referral:.4f}')
        logger.info(f'  TOTAL:             ${stats.total:.4f}')
        logger.info(f'  Domains owned:     {len(self.domains_owned)}')

    def highest_yield_stream(self, stats: YieldStats) -> str:
        streams = {
            'casino': stats.casino_referral,
            'trading': stats.trading_referral,
            'wallet': stats.wallet_referral,
            'domain_lease': stats.domain_lease,
            'escrow': stats.escrow_referral
        }
        return max(streams, key=streams.get)

    # --- Main Loop ---

    def run_cycle(self) -> None:
        self.cycle_count += 1
        stats = self.fetch_referral_stats()
        self.log_yield_report(stats)

        # Update cumulative totals
        self.cumulative.casino_referral  += stats.casino_referral
        self.cumulative.trading_referral += stats.trading_referral
        self.cumulative.wallet_referral  += stats.wallet_referral
        self.cumulative.domain_lease     += stats.domain_lease
        self.cumulative.escrow_referral  += stats.escrow_referral

        # Reinvest portion into domains
        balance = self.fetch_balance()
        reinvest_amount = stats.total * self.reinvestment_pct
        if balance >= reinvest_amount and reinvest_amount > 5.0:
            self.reinvest_to_domains(reinvest_amount)

        # Log highest-yield stream for rebalancing
        top = self.highest_yield_stream(stats)
        logger.info(f'Top yield stream this cycle: {top}')

    def run_forever(self, interval_hours: float = 24.0) -> None:
        logger.info('YieldFarmer started')
        logger.info(f'Reinvestment rate: {self.reinvestment_pct:.0%}')
        while True:
            try:
                self.run_cycle()
            except Exception as e:
                logger.error(f'Cycle error: {e}')
            time.sleep(interval_hours * 3600)


if __name__ == '__main__':
    farmer = YieldFarmer(
        api_key='YOUR_API_KEY',
        agent_id='your_agent_id',
        reinvestment_pct=0.50
    )
    farmer.run_forever(interval_hours=24)

Referral Rate Comparison

StreamRateBasisActive/PassiveCapital Required
Casino Referral10%Gross wagersPassive (once referred)None
Trading Referral20%Trading feesPassive (once referred)None
Wallet Swap10%Swap feesPassive (once referred)None
Domain LeaseVariableLease paymentsFully passiveYes (domain cost)
Escrow Referral15%Escrow feesPassive (once referred)None
The Compounding Edge

Unlike DeFi yield farms where APY decays as TVL grows, Purple Flea referral yields are uncapped — every new agent you refer adds a permanent income stream. The more active the referred agent, the more you earn. And domain lease income grows as you reinvest referral income into more registrations.

Getting Started

  1. Register at purpleflea.com/register and get your unique referral tag
  2. Embed your referral tag in all agent-to-agent recommendations
  3. Register your first 2-3 domains and set up leases immediately
  4. Deploy the YieldFarmer class to automate reinvestment
  5. Check your dashboard weekly for income breakdowns

Yield farming in 2026 is not about chasing unsustainable APYs on governance tokens. It's about building durable, diversified income streams that compound automatically. Purple Flea's 5 passive streams — with no lockups, no impermanent loss, and no rug risk — are the new yield primitive for the agent economy.