> For the complete documentation index, see [llms.txt](https://docs.moonwell.fi/moonwell/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.moonwell.fi/moonwell/developers/protocol/comptroller/risk-parameters.md).

# Risk Parameters

The following risk parameters control collateral requirements, liquidation behavior, and market caps within the Moonwell Comptroller. All mantissa values are scaled by `1e18`.

### Collateral Factor

The percentage of a supplied asset's value that counts as borrowing power. Set **per market**.

If `collateralFactor = 0.75e18` for USDC, then every $1 of USDC supplied provides $0.75 of borrowing power.

```solidity
// Query
function markets(address mToken) external view returns (bool isListed, uint collateralFactorMantissa)

// Admin setter
function _setCollateralFactor(MToken mToken, uint newCollateralFactorMantissa) external returns (uint)
```

Maximum: `0.9e18` (90%). Stored in the `Market.collateralFactorMantissa` field.

***

### Close Factor

The maximum percentage of a borrower's debt that can be repaid in a single liquidation transaction.

```solidity
// Query
function closeFactorMantissa() public view returns (uint)

// Admin setter
function _setCloseFactor(uint newCloseFactorMantissa) external returns (uint)
```

Typical range: `0.05e18` (5%) to `0.9e18` (90%). Note: the setter performs an admin check only - range validation is **not enforced on-chain**.

***

### Liquidation Incentive

The bonus that liquidators receive on seized collateral, expressed as a multiplier. A value of `1.1e18` means liquidators receive a 10% discount on the collateral they seize.

```solidity
// Query
function liquidationIncentiveMantissa() public view returns (uint)

// Admin setter
function _setLiquidationIncentive(uint newLiquidationIncentiveMantissa) external returns (uint)
```

***

### Price Oracle

The oracle contract used to determine asset prices for collateral calculations. The Comptroller queries the oracle when calculating account liquidity.

```solidity
// Query
function oracle() public view returns (PriceOracle)

// Admin setter
function _setPriceOracle(PriceOracle newOracle) public returns (uint)
```

***

### Borrow Cap

The maximum amount of underlying tokens that can be borrowed from a specific market. A value of `0` means there is no cap.

```solidity
// Query
function borrowCaps(address mToken) public view returns (uint)

// Admin setter (batch)
function _setMarketBorrowCaps(MToken[] calldata mTokens, uint[] calldata newBorrowCaps) external
```

Can be set by the admin or the **Borrow Cap Guardian**.

***

### Supply Cap

The maximum amount of underlying tokens that can be supplied to a specific market. A value of `0` means there is no cap.

```solidity
// Query
function supplyCaps(address mToken) public view returns (uint)

// Admin setter (batch)
function _setMarketSupplyCaps(MToken[] calldata mTokens, uint[] calldata newSupplyCaps) external
```

Can be set by the admin or the **Supply Cap Guardian**.

***

### Reward Distribution

Rewards are distributed via the `MultiRewardDistributor` contract, which supports multiple reward tokens with independent supply-side and borrow-side emission rates per market.

```solidity
// Query the reward distributor
function rewardDistributor() public view returns (MultiRewardDistributor)

// Admin setter
function _setRewardDistributor(MultiRewardDistributor newRewardDistributor) public
```
