Pool Configuration & Parameters
Every Knox pool is configured with a set of parameters that define its risk profile, duration, fee structure, and collateralization requirements.
Core Parameters
Rate Configuration
rSenior
Type:
uint128(basis points)Range: 0.50% - 20.00% (50 - 2000 bps)
Description: Guaranteed annualized return for the senior tranche
Example:
rSenior = 500means 5.00% APYImpact:
Higher senior rate → Less yield left for spectrum/junior
Lower senior rate → More yield available for risk tranches
rMaxSpectrum
Type:
uint128(basis points)Range:
(rSenior + spectrumGridStep)- 50.00% (5000 bps)Description: Maximum APY cap for the highest spectrum tranche
Constraint: Must be greater than
rSeniorExample: With
rSenior = 500(5%),rMaxSpectrum = 2000(20%)Impact: Defines the upper bound of the spectrum grid
spectrumGridStep
Type:
uint128(basis points)Range: 0.25% - 5.00% (25 - 500 bps)
Description: APY increment between spectrum grid points
Constraint:
(rMaxSpectrum - rSenior)must be evenly divisible byspectrumGridStepExample: With
rSenior = 500,rMaxSpectrum = 1000,gridStep = 100:Available rates: 6%, 7%, 8%, 9%, 10%
Impact:
Smaller step → More granular risk selection (more possible tranches)
Larger step → Coarser grid (fewer tranches, simpler waterfall)
Grid Size Formula:
Example Grids:
3%
10%
0.5%
14
3.5%, 4.0%, ... 10.0%
5%
20%
1.0%
15
6%, 7%, ... 20%
2%
8%
2.0%
3
4%, 6%, 8%
Period & Timing
dPeriod
Type:
uint128(seconds)Range: 7 days - 365 days (604800 - 31536000 seconds)
Description: Pool duration from deployment to maturity
Common Values:
30 days:
2_592_00090 days:
7_776_000180 days:
15_552_000365 days:
31_536_000
Impact:
Longer period → More compounding, higher absolute returns
Shorter period → Less time risk, faster capital turnover
Maturity Calculation:
Compounding Effect (5% APY):
7 days
7/365 = 1.92%
0.096%
30 days
30/365 = 8.22%
0.41%
90 days
90/365 = 24.66%
1.23%
365 days
100%
5.00%
Fee Configuration
cProtocolFee
Type:
uint128(basis points)Range: 0.00% - 30.00% (0 - 3000 bps)
Description: Fee on total pool yield, collected at settlement
Default: Typically 5-10% (500-1000 bps)
Calculation:
When Applied: Only if factory.applyProtocolFees() == true (global switch)
Impact:
Fee reduces distributable amount before waterfall
Effectively borne by riskiest positions (spectrum/junior)
No fee if pool has no profit
Example:
Deposits: $1M
Withdrawals: $1.1M
Fee: 10% (1000 bps)
Protocol takes:
($1.1M - $1M) × 10% = $10kDistributable: $1.09M
protocolFeeBeneficiary
Type:
addressDescription: Receives protocol fees at settlement
Set At: Pool deployment (parameter to
SpectrumFactory.deploy())
Collateralization
cCollateralFactorFirst
Type:
uint128(basis points)Range: 5.00% - 100.00% (500 - 10000 bps)
Description: Collateral factor for the first (lowest) spectrum grid point
Meaning: Percentage of spectrum value pledged as backing for senior deposits
Example:
cCollateralFactorFirst = 5000(50%)$100in the 5.5% spectrum tranche backs$10of senior deposits
Impact:
Higher CF → More senior capacity per unit of spectrum
Lower CF → Safer for spectrum holders (less loss absorption)
cCollateralFactorJunior
Type:
uint128(basis points)Range:
cCollateralFactorFirst- 100.00% (10000 bps)Description: Collateral factor for junior tranche (and upper bound for interpolation)
Typical Value: 100% (10000 bps)
Meaning: Junior pledges entire value as senior backing
Constraint: Must be
≥ cCollateralFactorFirstExample:
cCollateralFactorJunior = 10000(100%)$100in junior backs$20of senior deposits (at 5% senior APY, 365d period)
Collateral Factor Interpolation
Spectrum tranches between first and junior have CFs interpolated linearly:
Where position is 0-indexed (0 = first spectrum, N = last spectrum before junior).
Example:
cCollateralFactorFirst = 5000(50%)cCollateralFactorJunior = 10000(100%)Grid: 5.5%, 7.5%, 9.5%, 11.5%, 13.5% (5 tranches)
5.5%
0/4
50% + (50% × 0/4)
50%
7.5%
1/4
50% + (50% × 1/4)
62.5%
9.5%
2/4
50% + (50% × 2/4)
75%
11.5%
3/4
50% + (50% × 3/4)
87.5%
13.5%
4/4
50% + (50% × 4/4)
100%
Capacity Constraints
cMaxTotalDeposits
Type:
uint256Range: 0 -
type(uint256).maxDescription: Hard cap on total pool deposits across all tranches
Special: If set to
0at initialization, becomestype(uint256).max(unlimited)Example:
cMaxTotalDeposits = 10_000_000e6(10M USDC for a 6-decimal token)Impact: Prevents pool from growing beyond manageable size
Senior Capacity (Dynamic)
Computed: Not a configuration parameter — calculated dynamically
Formula:
Recalculates: On every senior deposit, based on current waterfall values
Example (365d period, 5% senior):
Spectrum 5.5%
$100k
50%
$50k
$50k × 20 = $1M
Spectrum 10%
$200k
75%
$150k
$150k × 20 = $3M
Junior
$300k
100%
$300k
$300k × 20 = $6M
Total
$500k
$10M
Divisor:
Inverted: Each $1 of collateral backs $20 of senior deposits ($1 / 0.05 = $20)
Validation Constraints
At Deployment
At Deposit
Parameter Examples
Conservative Pool
Profile: Low-risk, longer duration, heavy senior allocation
Aggressive Pool
Profile: High-risk, short duration, spectrum-focused
Balanced Pool
Profile: Moderate risk, standard duration, fine-grained spectrum grid
Key Takeaways
Rate hierarchy:
rSenior < spectrum_i < rMaxSpectrum, withspectrumGridStepspacingGrid divisibility:
(rMaxSpectrum - rSenior) % gridStep == 0enforcedCollateral interpolation: Linear from
cCollateralFactorFirsttocCollateralFactorJuniorSenior capacity: Dynamic, recalculated on each senior deposit based on subordinate values
Protocol fee: Only on total yield, global on/off switch via factory
Period: Fixed duration, compounding pro-rated to holding time
Validation: Strict at deployment and deposit to prevent misconfiguration