Skip to main content

Allocators

The allocators module provides a unified framework for allocating capital through fund structures and generating transactions.

Overview

Historically, allocation logic was spread across different apps (capital calls, distributions, etc.). The allocator framework consolidates this into a single source of truth.

Architecture

ComponentResponsibility
AllocatorAllocates to starting entities, orchestrates the flow
Use AllocatorPropagates allocation up the fund structure
Transaction GeneratorCreates transaction records with amounts

Example Flow

Given this fund structure:

Allocation Process

Components

Allocator

The main entry point that:
  • Determines starting entities (commitments)
  • Calculates initial allocation amounts
  • Calls Use Allocator for each entity
class Allocator:
    def allocate(
        self,
        ctx: RequestCtx,
        event: FundFamilyEvent,
        allocation_data: AllocationData,
    ) -> list[UseAllocation]:
        # Determine starting entities
        # Calculate amounts
        # Call use allocator
        pass

Use Allocator

Propagates allocation up the fund structure:
  • Takes an entity and amount
  • Determines parent entity
  • Applies allocation rules
  • Recursively allocates to parents
class UseAllocator:
    def allocate_use(
        self,
        ctx: RequestCtx,
        entity: Entity,
        use: CapitalUse,
        amount: Decimal,
    ) -> list[Transaction]:
        # Get parent in fund structure
        # Apply allocation rules
        # Generate transactions
        # Recurse to parent
        pass

Transaction Generator

Creates the actual transaction records:
  • Calculates final amounts
  • Applies rounding
  • Creates transaction objects
class TransactionGenerator:
    def generate_transactions(
        self,
        ctx: RequestCtx,
        entity: Entity,
        use: CapitalUse,
        amount: Decimal,
    ) -> Transaction:
        # Apply any adjustments
        # Handle rounding
        # Create transaction
        pass

Allocation Rules

The allocation percentage for each entity is determined by:
FactorDescription
Commitment amountHow much the LP committed
Allocation basisWhich calculation to use
Investor class rulesSpecial rules per class
Time periodDifferent rules at different fund stages

Integration

Used by:
  • Capital Calls
  • Distributions
  • Equalizations
  • Fee allocations

Benefits

Consistency

Single source of truth for allocation logic.

Testability

Isolated components are easier to test.

Flexibility

Easy to add new allocation types.

Audit Trail

Clear transaction generation path.