Fees and Spread

Fees and spreads charged by the protocol

Narwhal Trading Fees & Spreads

Complete Guide to Trading Costs


📊 Fee Structure Overview

Understanding trading costs is crucial for successful trading. Narwhal uses multiple fee types to ensure fair pricing, protect liquidity providers, and maintain platform sustainability.

Quick Reference Table

Fee Type
When Applied
Rate
Charged On

Opening Fee

Opening positions

0.08%

Total position size

Closing Fee

Closing positions

0.08%

Total position size

Base Spread

Opening only

0.025% (crypto/stocks), 0% (FX)

Position size

Price Impact

Opening only

Variable

Position size

Borrowing Fee

Daily (per block)

Variable by asset

Collateral amount

Funding Fee

Daily (per block)

Variable by skew

Position size


💰 Trading Fees

Opening & Closing Fees

Purpose: Platform revenue and liquidity provider compensation

Rate: 0.08% of total position size Applied to: Position size (collateral × leverage) When charged: Upon opening and closing positions

Example:

  • Collateral: $1,000

  • Leverage: 10x

  • Position size: $10,000

  • Opening fee: $10,000 × 0.08% = $8

  • Closing fee: $10,000 × 0.08% = $8

  • Total trading fees: $16


📈 Spreads & Price Impact

Base Spread

Purpose: Simulate bid/ask spread found on traditional exchanges

Rates by Asset Class:

  • Crypto pairs: 0.025%

  • Stock pairs: 0.025%

  • FX pairs: 0% (no spread)

When applied: Only when opening positions How it works: Added to the oracle price to determine your execution price

Example:

  • BTC/USD oracle price: $50,000

  • Base spread: 0.025%

  • Long entry price: $50,000 × (1 + 0.025%) = $50,012.50

  • Short entry price: $50,000 × (1 - 0.025%) = $49,987.50

Price Impact

Purpose: Protect liquidity providers from large directional trades and simulate real market depth

Formula:

Price Impact (%) = (Current Open Interest + New Trade Size ÷ 2) ÷ Market Depth

Market Depth by Asset:

  • Crypto: Binance 1% depth × 2 (conservative estimate)

  • Stocks:

    • Tier 1: $10M depth

    • Tier 2: $5M depth

    • Tier 3: $2.5M depth

  • FX: No price impact (infinite liquidity assumption)

When applied: Only when opening positions


🧮 Price Impact Calculation Example

Scenario: Opening BTC/USD Long

Market conditions:

  • Current long open interest: $500,000

  • New trade position size: $200,000

  • BTC market depth: $20,000,000

Step 1: Calculate price impact

Price Impact = ($500,000 + $200,000 ÷ 2) ÷ $20,000,000
Price Impact = ($500,000 + $100,000) ÷ $20,000,000  
Price Impact = $600,000 ÷ $20,000,000
Price Impact = 0.03 = 3%

Step 2: Add base spread

Total cost = Price Impact + Base Spread
Total cost = 3% + 0.025% = 3.025%

Step 3: Calculate execution price

Oracle price: $50,000
Execution price = $50,000 × (1 + 3.025%)
Execution price = $51,512.50

Impact on your trade:

  • Position size: $200,000

  • Extra cost: $200,000 × 3.025% = $6,050

  • This protects liquidity providers from the market impact of your large trade


⏰ Time-Based Fees

Borrowing Fees (Rollover)

Purpose: Simulate the cost of borrowing capital for leveraged positions

How it works:

  • Charged per block on your collateral amount

  • Rate varies by asset volatility (measured by Average True Range)

  • Higher volatility = higher borrowing costs

Calculation:

Borrowing Fee = (Current Block - Open Block) × Fee Rate Per Block × Collateral

Fee Rate Determination:

Annual Rate = (4-week ATR ÷ 4-week Average Price × 100)^1.25 × 52 ÷ 20
Per Block Rate = Annual Rate ÷ 10,512,000 blocks per year

Example:

  • Position opened at block: 1,000,000

  • Current block: 1,010,000 (10,000 blocks later)

  • Collateral: $1,000

  • Annual borrowing rate: 15.7%

  • Per block rate: 15.7% ÷ 10,512,000 = 0.000001493%

Borrowing Fee = 10,000 blocks × 0.000001493% × $1,000
Borrowing Fee = $0.15

Funding Fees

Purpose: Incentivize balanced long/short ratios to protect liquidity providers

How it works:

  • Market skew creates funding rates

  • Longs pay shorts when there are more longs than shorts

  • Shorts pay longs when there are more shorts than longs

  • No fees when the market is perfectly balanced

Rate Calculation:

Market Skew = (Long OI - Short OI) ÷ Total OI
Funding Rate increases with skew magnitude

Example Scenarios:

Balanced Market

  • Long OI: $1M, Short OI: $1M

  • Market skew: 0%

  • Funding rate: 0%

Long-Heavy Market

  • Long OI: $1.5M, Short OI: $500K

  • Market skew: +50%

  • Longs pay shorts (positive funding rate)

Short-Heavy Market

  • Long OI: $500K, Short OI: $1.5M

  • Market skew: -50%

  • Shorts pay longs (negative funding rate)

Charging mechanism:

  • Applied to total position size (not just collateral)

  • Charged per block based on current skew

  • Automatically credited/debited from position value


💡 Cost Optimization Tips

Minimize Trading Fees

  • Size positions appropriately - larger positions don't increase fee percentages

  • Plan entries and exits - avoid overtrading

  • Consider fee impact when setting take profits

Reduce Spread & Price Impact

  • Trade during liquid hours when market depth is highest

  • Split large orders into smaller chunks if possible

  • Choose liquid pairs - major crypto and FX pairs have better execution

  • Avoid trading during major news when spreads may widen

Manage Time-Based Fees

  • Monitor borrowing costs for long-term positions

  • Consider funding rates when choosing position direction

  • Close positions during unfavorable funding periods if profitable

  • Use lower leverage to reduce borrowing fee impact

Smart Position Management

  • Factor all costs into your profit targets

  • Monitor accumulated fees in position details

  • Consider total cost of ownership for longer-term trades

  • Use stop losses to limit fee accumulation on losing trades


📊 Fee Transparency

Real-Time Monitoring

All fees are displayed in real-time:

  • Estimated costs shown before trade execution

  • Accumulated fees visible in open positions

  • Historical fee data in trade history

  • Current funding rates displayed for each pair

No Hidden Costs

  • All fees disclosed upfront

  • Predictable calculation methods

  • Blockchain transparency - all fees recorded on-chain

  • Fair application - same rates for all users


🎯 Understanding Total Trading Costs

Opening a Position - All Costs

Total Opening Cost = Opening Fee + Base Spread + Price Impact
Example: 0.08% + 0.025% + 1% = 1.105%

Holding a Position - Daily Costs

Daily Holding Cost = Borrowing Fee + Funding Fee (if applicable)
Varies by asset and market conditions

Closing a Position - Final Cost

Closing Cost = Closing Fee (0.08%)
No spread or price impact on closing

Total Round-Trip Example

Opening a $10,000 BTC position:

  • Opening fee: $8

  • Base spread: $2.50

  • Price impact: $100 (1% example)

  • Opening total: $110.50

Holding for 7 days:

  • Borrowing fees: ~$3/day = $21

  • Funding fees: Variable (could be +$5 or -$5)

  • Holding total: ~$21

Closing the position:

  • Closing fee: $8

  • Closing total: $8

Grand total: ~$139.50 (1.395% of position size)


Spread

A base spread is considered to simulate a bid/ask spread on a CLOB exchange for execution price. Currently, a base spread of 0.025% is applied on the spot price returned from the oracle. Spread only applies when opening a trade

Price Impact

Price impact is implemented to simulate execution price in a CLOB exchange mechanism, protecting NLP holders from directional skew. As such, we take the current aggregate open interest on the platform plus half of the trade position size, divided by 1% of order book depth on a reference exchange. It is calculated as follows:

Price Impact(%)=Open interest long/short+new trade position size21%depth above/belowPrice~Impact(\%) = \frac{Open~interest~{long/short}+\frac{new~trade~position~size}{2}}{1\% depth~above/below}

Note: Price impact never applies when closing a trade

Methodology:

For crypto, 1% depth is calculated as the 1% depth of Binance multiplied by 2. Our pricing oracle uses the median price of 7 centralized exchanges; hence, multiplying the depth of the most liquid exchange by 2 serves as a conservative measure

For stocks, the 1% depths are set at $10m (tier 1), $5m (tier 2), and $2.5m (tier 3) in both directions (long/short).

There is no price impact for FX.

Example:

Asset: BTC/USD

1% depth above: $20M

Long open interest: $500k

New trade position size: $200k (collateral x leverage)

The price impact (%): 500k + 200k/2 20m = 0.03%

Then add the spread (0.025%) → 0.03% + 0.025% = 0.055%.

Borrowing Fee

Borrowing fees simulate borrowing costs as the Narwhal platform provides synthetic leverage and maintains solid risk management for the protocol.

Calculation

Rollover fees are charged on the initial collateral of the trade and tallied on a per-block basis. The rollover fee rate is annualized and then divided as a per-block fee, assuming the chain processes 28,800 blocks per day or 10,512,000 blocks per year.

Rollover fee=(current blockopen trade block)×rollover fee per block%×trade collateralRollover~fee=(current~block-open~trade~block)\times rollover~fee~per~block \%\times trade~ collateral

Rollover Fee Methodology

Rollover fees should vary depending on the volatility of the underlying assets being traded, which is measured using the average true range (ATR) indicator, expressed as a percentage over the average closing price (ATRP):

TR=max[(HL),(HCp),(LCp)]TR =\max[(H-L), |(H-C_p)|, |(L-C_p)|]
ATR=(1n)i=1nTRiATR = (\frac{1}{n})\sum^{n}_{i=1}{TR}_i
Rollover fee per block=(4weekATR/4 week average price100)x×52blocks per yeary\text{Rollover fee per block} = \frac{(4 week ATR/\text{4 week average price}*100)^x\times 52}{blocks~per~year*y}

Where:

X = 1.25

Y = 20

Assumed 10,512,000 is the number of blocks per year.

Example:

Current block: 1,010,000

Trade open block: 1,000,000

Rollover fee %: 157% = 0.00001% per block

Collateral: $1,000

Rollover fee = (1,010,000 - 1,000,000) * 0.00001/100 * 1,000 = 1

Funding Rate

To book perpetual exchanges, a funding rate is introduced to incentivize perpetual prices to trade at par to spot prices through a funding rate mechanism, where longs pay shorts if contracts are traded at a premium to spot and vice versa. Narwhal Finance uses oracle-based pricing but includes a funding fee to incentivize neutral long-short skew to better protect NLP holders. Similar to rollover fees, funding fees are charged on a per-block basis. However, fees are charged on the total position size rather than the initial collateral.

Funding fee per block=(ATR%4 week average)x×52blocks per yeary\text{Funding fee per block} = \frac{(ATR\% 4~ week~average)^x\times 52}{blocks~per~year*y}

Where:

X = 1.25

Y = 60

Blocks per year

ATR: Average True Range; calculated as:

TR=max[(HL),(HCp),(LCp)]TR =\max[(H-L), |(H-C_p)|, |(L-C_p)|]
ATR=(1n)i=1nTRiATR = (\frac{1}{n})\sum^{n}_{i=1}{TR}_i
Accumulated funding fee per OI (long)+=(long OIshort OI)×blocks elapsed×funding fee per block%long OIAccumulated~funding~fee~per~OI~(long)\mathrel{+}=\frac{(long~OI-short~OI)\times blocks~elapsed\times funding~fee~per~block\%}{long~OI}
Accumulated funding fee per OI (long)+=(short OIlong OI)×blocks elapsed×funding fee per block%short OIAccumulated~funding~fee~per~OI~(long)\mathrel{+}=\frac{(short~OI-long~OI)\times blocks~elapsed\times funding~fee~per~block\%}{short~OI}
Funding fee=(Current accumulated funding fee per OIInitial accumulated funding fee per OI)×trade collateral×trade leverageFunding~fee=(Current~accumulated~funding~fee~per~OI-Initial~accumulated~funding~fee~per~OI)\times trade~collateral\times trade~leverage

If the negative value is added to the trade value like a positive PnL, and the liquidation price goes further away. If the value is positive, it is removed from the trade value like negative PnL, making the liquidation price closer.

However, if the funding fee rate per block corresponds to 40% per year, it doesn’t mean that 40% will be charged at all times. It will only be the case if there is 0 exposure on the opposite side, as the funding rate is only applied to the pair's net exposure.

For example, if this pair has $1m long exposure and $500k short exposure, the funding fees paid will be ($1m—$500k) * 40 / 100 = $200k per year, which represents a cost of 20% / year for longs and a reward of 40% / year for shorts.

❓ Frequently Asked Questions

Why are there so many fee types?

Each fee serves a specific purpose in maintaining platform stability, protecting liquidity providers, and ensuring fair market conditions.

Can I avoid price impact?

Price impact reflects real market conditions. Smaller trades have a lower impact, and trading during liquid periods helps minimize costs.

How do funding rates work?

You either pay or receive funding based on market skew. Balanced markets have zero funding rates.

Are fees the same for all users?

All users pay the same transparent fee schedule regardless of trading volume or account size.


Understanding these costs helps you make informed trading decisions and optimize your strategy for maximum profitability.

Last updated