Options Probability Calculator (Excel-Compatible)
Calculate the probability of profit for your options strategies with precision. Export results to Excel for advanced analysis.
Comprehensive Guide to Options Probability Calculators in Excel
Options trading combines the art of speculation with the science of probability. While many traders rely on brokerage platforms for probability calculations, creating your own options probability calculator in Excel provides unparalleled flexibility for backtesting strategies, analyzing historical data, and developing custom trading systems.
This guide covers everything from the foundational mathematics behind options probabilities to advanced Excel implementations that rival professional trading software. Whether you’re a retail trader looking to validate broker quotes or a quantitative analyst building complex models, you’ll find actionable insights to elevate your options trading.
1. Understanding Options Probabilities: The Core Concepts
Before building an Excel calculator, it’s essential to grasp the key probability metrics that define options trading success:
- Probability of Profit (PoP): The likelihood that an option will expire in-the-money (ITM) by at least $0.01. This is the most commonly cited probability metric.
- Probability of Touch (PoT): The chance that the underlying asset will reach the strike price at any point before expiration, not just at expiration.
- Expected Move: The statistically probable price range (typically ±1 standard deviation) that the underlying will reach by expiration.
- Delta Probability: An approximation that the option’s delta represents the probability of expiring ITM (accurate for European options in efficient markets).
The Black-Scholes model and its extensions form the mathematical backbone for these calculations. While Excel doesn’t natively support complex stochastic calculus, we can implement simplified versions that provide 95%+ accuracy for most practical trading scenarios.
2. The Mathematical Foundations
At the heart of every options probability calculator lies the cumulative normal distribution function (Φ), which converts z-scores into probabilities. In Excel, this is implemented via the NORM.S.DIST function.
The key formulas for probability calculations are:
- Probability of Profit (Call):
PoP = NORM.S.DIST((LN(S/K) + (r + σ²/2)*T)/(σ*SQRT(T)), TRUE)
Where:- S = Underlying price
- K = Strike price
- r = Risk-free rate
- σ = Implied volatility
- T = Time to expiration (in years)
- Probability of Profit (Put):
PoP = NORM.S.DIST(-(LN(S/K) + (r + σ²/2)*T)/(σ*SQRT(T)), TRUE) - Probability of Touch:
Requires more complex barrier option pricing models, but can be approximated in Excel using:PoT ≈ PoP + 2*(NORM.S.DIST(z, TRUE) - 0.5)
Where z is the same as in PoP calculation
3. Building Your Excel Probability Calculator: Step-by-Step
Let’s construct a professional-grade options probability calculator in Excel. This implementation will handle both calls and puts with dynamic probability calculations.
Step 1: Input Section Setup
Create a clearly labeled input section with these cells:
| Input Parameter | Excel Cell | Example Value | Validation |
|---|---|---|---|
| Underlying Price | B2 | 150.25 | > 0 |
| Strike Price | B3 | 155.00 | > 0 |
| Days to Expiration | B4 | 45 | 1-730 |
| Implied Volatility (%) | B5 | 28.5 | 0.1-200 |
| Risk-Free Rate (%) | B6 | 4.25 | 0-10 |
| Option Type | B7 | Call/Put | Data Validation |
Step 2: Intermediate Calculations
Add these helper calculations in a separate section:
| Calculation | Excel Formula | Sample Output |
|---|---|---|
| Time in Years | =B4/365 | 0.1233 |
| Volatility (decimal) | =B5/100 | 0.285 |
| Risk-Free Rate (decimal) | =B6/100 | 0.0425 |
| d1 Numerator | =LN(B2/B3)+(B9+B10^2/2)*B8 | -0.0659 |
| d1 Denominator | =B10*SQRT(B8) | 0.1394 |
| d1 | =B11/B12 | -0.4730 |
| d2 | =B13-B12 | -0.6124 |
Step 3: Probability Calculations
Now implement the core probability formulas:
| Probability Metric | Excel Formula (Call) | Excel Formula (Put) |
|---|---|---|
| Probability of Profit | =NORM.S.DIST(B13,TRUE) | =NORM.S.DIST(-B14,TRUE) |
| Probability of Touch | =NORM.S.DIST(B13,TRUE)+2*(NORM.S.DIST(B13,TRUE)-0.5) | =NORM.S.DIST(-B14,TRUE)+2*(NORM.S.DIST(-B14,TRUE)-0.5) |
| Delta Approximation | =NORM.S.DIST(B13,FALSE) | =-NORM.S.DIST(-B14,FALSE) |
| Expected Price at Expiration | =B2*EXP(B9*B8) | =B2*EXP(B9*B8) |
Step 4: Advanced Features
Enhance your calculator with these professional additions:
- Dynamic Charting: Create a probability distribution chart that updates automatically when inputs change. Use Excel’s
NORM.DISTfunction to generate the distribution curve. - Strategy Comparisons: Add dropdowns for different strategies (covered calls, spreads, etc.) with conditional probability calculations.
- Historical Backtesting: Import historical price data and calculate how often your probability targets would have been met.
- Monte Carlo Simulation: Use Excel’s Data Table feature to run thousands of price path simulations.
- Excel VBA Automation: Create macros to:
- Pull live option chain data from brokers
- Generate probability heatmaps
- Export calculations to CSV for further analysis
4. Validating Your Calculator Against Broker Data
To ensure your Excel calculator’s accuracy, perform these validation tests:
- Single Option Comparison:
- Enter the same parameters (price, strike, IV, DTE) in both your Excel sheet and your broker’s platform
- Compare the Probability of Profit values – they should match within ±1%
- For ThinkorSwim users, the “Probability Analysis” tab provides detailed metrics for comparison
- Implied Volatility Sensitivity:
- Create a data table showing how PoP changes with IV (from 10% to 100% in 5% increments)
- Verify that higher IV increases PoP for OTM options and decreases it for ITM options
- Time Decay Analysis:
- Plot PoP against DTE (from 1 to 365 days)
- Confirm that PoP approaches 50% for ATM options as expiration nears
- Extreme Value Testing:
- Test with very high/low IV (200% and 1%)
- Test with very short/long DTE (1 day and 5 years)
- Verify the calculator handles these edge cases gracefully
5. Advanced Applications: Beyond Basic Probabilities
Once you’ve mastered the basic probability calculator, explore these advanced applications:
Portfolio-Level Probability Analysis
Extend your calculator to handle multiple positions:
- Correlation Matrices: Use Excel’s
CORRELfunction to analyze how underlying assets move together, then adjust combined probabilities accordingly. - Portfolio PoP: Calculate the overall probability that your entire options portfolio will be profitable using:
=PRODUCT(1-Individual_PoP_Failures)
Where Individual_PoP_Failures = 1 – each position’s PoP - Risk Parity Allocation: Use Solver to optimize position sizing based on probability-weighted returns.
Probability-Based Position Sizing
Implement the Kelly Criterion in Excel to determine optimal position sizes:
=IF(Probability_Win>0,
IF((Probability_Win*(Win_Amount/Loss_Amount)+(1-Probability_Win))>0,
Probability_Win*(Win_Amount/Loss_Amount)+(1-Probability_Win),
0),
0)
Where:
- Probability_Win = Your calculated PoP
- Win_Amount = Potential profit per contract
- Loss_Amount = Potential loss per contract
Probability Decay Analysis
Create a decay chart showing how probabilities change as expiration approaches:
- Set up a column with days remaining (e.g., 45, 40, 35,…, 1)
- For each day, calculate:
- New time to expiration (days/365)
- Updated d1 and d2 values
- New PoP and PoT
- Create a line chart with days on the x-axis and probabilities on the y-axis
- Add a secondary axis showing implied volatility term structure
6. Common Pitfalls and How to Avoid Them
Even experienced traders make these mistakes when building probability calculators:
| Pitfall | Why It’s Problematic | Solution |
|---|---|---|
| Using historical volatility instead of implied volatility | Historical volatility reflects past movement; implied volatility reflects market expectations. Using the wrong one gives misleading probabilities. | Always use the option’s current implied volatility for forward-looking probability calculations. |
| Ignoring dividends | For dividend-paying stocks, ignoring dividends can overstate call probabilities and understate put probabilities. | Adjust the risk-free rate in your calculations: r = risk-free rate – dividend yield. |
| Assuming normal distribution | Market returns often exhibit fat tails. The normal distribution underestimates the probability of extreme moves. | Implement a Student’s t-distribution or add kurtosis adjustments for more accurate tail probabilities. |
| Neglecting early assignment risk | American options can be exercised early, which isn’t accounted for in basic Black-Scholes probabilities. | For ITM options, calculate early assignment probabilities using binomial trees in Excel. |
| Round-off errors in Excel | Excel’s floating-point precision can cause small errors that compound in complex calculations. | Use the PRECISION function and round intermediate steps to 6 decimal places. |
| Static volatility assumption | Implied volatility changes over time, but many calculators use a single IV input. | Build a volatility surface with term structure and skew adjustments. |
7. Excel VBA: Automating Your Probability Calculator
For traders managing complex strategies, Excel VBA can transform your probability calculator into a powerful trading tool. Here are essential VBA functions to implement:
Automated Data Import
Sub ImportOptionChain()
Dim ws As Worksheet
Dim brokerURL As String
Dim symbol As String
' Set your parameters
symbol = "SPY"
brokerURL = "https://api.yourbroker.com/options/" & symbol
' Create HTTP request
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
' Send request
http.Open "GET", brokerURL, False
http.Send
' Parse JSON response (requires JSON parser)
Dim json As Object
Set json = JsonConverter.ParseJson(http.responseText)
' Write to worksheet
Set ws = ThisWorkbook.Sheets("Option Chain")
ws.Range("A2").Value = json("underlyingPrice")
' Process calls
Dim i As Integer, call As Object
i = 2
For Each call In json("calls")
ws.Cells(i, 2).Value = call("strike")
ws.Cells(i, 3).Value = call("iv")
ws.Cells(i, 4).Value = call("delta")
i = i + 1
Next call
' Process puts
i = 2
For Each put In json("puts")
ws.Cells(i, 5).Value = put("strike")
ws.Cells(i, 6).Value = put("iv")
ws.Cells(i, 7).Value = put("delta")
i = i + 1
Next put
End Sub
Probability Heatmap Generator
Function CreateProbabilityHeatmap()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Heatmap")
' Clear existing data
ws.Cells.Clear
' Set up headers
ws.Range("B1").Value = "Strike"
ws.Range("C1").Value = "Probability of Profit"
ws.Range("D1").Value = "Probability of Touch"
' Input parameters
Dim underlying As Double: underlying = ws.Range("B2").Value
Dim dte As Integer: dte = ws.Range("B3").Value
Dim iv As Double: iv = ws.Range("B4").Value / 100
Dim strikes() As Variant: strikes = ws.Range("B6:B25").Value
' Calculate probabilities for each strike
Dim i As Integer, strike As Variant
For i = LBound(strikes) To UBound(strikes)
strike = strikes(i, 1)
If Not IsEmpty(strike) Then
ws.Cells(i + 5, 3).Value = CalculatePoP(underlying, strike, dte, iv, "Call")
ws.Cells(i + 5, 4).Value = CalculatePoT(underlying, strike, dte, iv, "Call")
End If
Next i
' Create heatmap formatting
Dim popRange As Range, potRange As Range
Set popRange = ws.Range("C6:C25")
Set potRange = ws.Range("D6:D25")
' Color scale formatting
popRange.FormatConditions.AddColorScale ColorScaleType:=3
popRange.FormatConditions(popRange.FormatConditions.Count).SetFirstPriority
popRange.FormatConditions(1).ColorScaleCriteria(1).Type = xlConditionValueLowestValue
popRange.FormatConditions(1).ColorScaleCriteria(1).FormatColor.Color = RGB(255, 0, 0)
popRange.FormatConditions(1).ColorScaleCriteria(2).Type = xlConditionValuePercentile
popRange.FormatConditions(1).ColorScaleCriteria(2).Value = 50
popRange.FormatConditions(1).ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 0)
popRange.FormatConditions(1).ColorScaleCriteria(3).Type = xlConditionValueHighestValue
popRange.FormatConditions(1).ColorScaleCriteria(3).FormatColor.Color = RGB(0, 255, 0)
' Repeat for PoT
potRange.FormatConditions.AddColorScale ColorScaleType:=3
potRange.FormatConditions(potRange.FormatConditions.Count).SetFirstPriority
potRange.FormatConditions(1).ColorScaleCriteria(1).Type = xlConditionValueLowestValue
potRange.FormatConditions(1).ColorScaleCriteria(1).FormatColor.Color = RGB(255, 0, 0)
potRange.FormatConditions(1).ColorScaleCriteria(2).Type = xlConditionValuePercentile
potRange.FormatConditions(1).ColorScaleCriteria(2).Value = 50
potRange.FormatConditions(1).ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 0)
potRange.FormatConditions(1).ColorScaleCriteria(3).Type = xlConditionValueHighestValue
potRange.FormatConditions(1).ColorScaleCriteria(3).FormatColor.Color = RGB(0, 255, 0)
End Function
Automated Trade Journal
Sub RecordTrade()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Trade Journal")
' Find first empty row
Dim nextRow As Long
nextRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' Record trade details
ws.Cells(nextRow, 1).Value = Now()
ws.Cells(nextRow, 2).Value = ws.Range("B2").Value ' Symbol
ws.Cells(nextRow, 3).Value = ws.Range("B3").Value ' Strategy
ws.Cells(nextRow, 4).Value = ws.Range("B4").Value ' Premium Received
ws.Cells(nextRow, 5).Value = ws.Range("B5").Value ' Probability of Profit
ws.Cells(nextRow, 6).Value = ws.Range("B6").Value ' Probability of Touch
ws.Cells(nextRow, 7).Value = ws.Range("B7").Value ' Days to Expiration
' Calculate position size based on Kelly Criterion
Dim kellyFraction As Double
kellyFraction = Application.Run("CalculateKelly", ws.Range("B5").Value, _
ws.Range("B8").Value, ws.Range("B9").Value)
ws.Cells(nextRow, 8).Value = kellyFraction
' Save workbook
ThisWorkbook.Save
End Sub
8. Integrating with External Data Sources
To create a truly professional-grade calculator, connect Excel to these data sources:
| Data Source | Integration Method | Use Case | Example Provider |
|---|---|---|---|
| Live Option Chains | API connection via VBA | Real-time probability calculations | TD Ameritrade, Interactive Brokers |
| Historical Volatility | CSV import or API | Backtesting probability models | Yahoo Finance, Alpha Vantage |
| Implied Volatility Surface | Web scraping or API | Term structure and skew analysis | CBOE, Barchart |
| Economic Calendar | API connection | Adjusting probabilities for event risk | Federal Reserve, Trading Economics |
| Corporate Actions | API or CSV | Dividend and earnings adjustments | Nasdaq, Bloomberg |
| Market Sentiment | API connection | Probability adjustments for extreme sentiment | Trade-Ideas, LunarCrush |
9. Advanced Excel Techniques for Options Traders
Master these Excel features to build sophisticated probability models:
Array Formulas for Batch Calculations
Process entire option chains with single formulas:
{=NORM.S.DIST((LN($B$2,B6:B25)+(C$1+C$2^2/2)*C$3)/(C$2*SQRT(C$3)),TRUE)}
Enter as an array formula with Ctrl+Shift+Enter to calculate PoP for all strikes simultaneously.
Solver for Probability Optimization
Use Excel’s Solver to:
- Find the strike price that gives a specific PoP target
- Optimize strategy parameters for maximum probability-adjusted returns
- Calculate the implied volatility that would give a desired probability
Example setup:
- Set target cell to your PoP calculation
- Set variable cell to the strike price
- Add constraints (e.g., strike must be between 140-160)
- Set target value to your desired probability (e.g., 0.70 for 70%)
Monte Carlo Simulation
Implement a basic Monte Carlo in Excel:
- Set up a data table with 1,000+ rows
- In each row, calculate a random price path:
=B2*EXP((C$1-0.5*C$2^2)*C$3 + C$2*SQRT(C$3)*NORM.S.INV(RAND())) - Track whether each path results in a profit
- Calculate the percentage of profitable paths for empirical PoP
Dynamic Named Ranges
Create flexible references that adjust automatically:
- Go to Formulas > Name Manager > New
- Name: “StrikePrices”
- Refers to:
=OFFSET(Sheet1!$B$6,0,0,COUNTA(Sheet1!$B:$B)-5,1) - Use this named range in your probability formulas
10. Excel vs. Professional Platforms: A Comparison
While Excel offers unparalleled flexibility, it’s important to understand how it compares to professional platforms:
| Feature | Excel Probability Calculator | ThinkorSwim | TradeStation | Bloomberg Terminal |
|---|---|---|---|---|
| Customization | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Real-time Data | ⭐ (with API) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Backtesting | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Multi-leg Strategies | ⭐⭐⭐ (complex) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Probability Accuracy | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Cost | $0 (with Excel) | $0 (with TD account) | $99+/month | $24,000/year |
| Portability | ⭐⭐⭐⭐⭐ | ⭐⭐ (desktop only) | ⭐⭐⭐ (cloud access) | ⭐ (terminal only) |
| Learning Curve | ⭐⭐⭐⭐ (Excel skills needed) | ⭐⭐ (intuitive UI) | ⭐⭐⭐ (some learning) | ⭐⭐⭐⭐ (steep) |
11. Case Study: Building a Probability-Based Iron Condor Calculator
Let’s walk through creating an advanced calculator for one of the most popular probability-based strategies – the iron condor.
Step 1: Input Section
Set up these inputs:
- Underlying price
- Short call strike
- Long call strike
- Short put strike
- Long put strike
- Days to expiration
- Implied volatility
- Short premium received (per wing)
- Commission per contract
Step 2: Probability Calculations
For each wing, calculate:
' Short Call PoP
=NORM.S.DIST((LN(B2/B4)+(B7+B8^2/2)*(B6/365))/(B8*SQRT(B6/365)),TRUE)
' Short Put PoP
=NORM.S.DIST(-(LN(B2/B5)+(B7+B8^2/2)*(B6/365))/(B8*SQRT(B6/365)),TRUE)
' Combined PoP (probability both wings expire OTM)
=Short_Call_PoP * Short_Put_PoP
Step 3: Risk/Reward Analysis
Calculate these key metrics:
' Max Profit
=(B9*2 - B10*4) * 100
' Max Loss
=(B4-B3 - B9 + B10) * 100
' or for put side:
=(B5-B6 - B9 + B10) * 100
' Probability-Adjusted Return
=(Max_Profit * Combined_PoP) - (Max_Loss * (1-Combined_PoP))
Step 4: Dynamic Adjustment Analysis
Add these features:
- Adjustment Triggers: Calculate at what underlying price you should adjust based on probability thresholds (e.g., adjust when PoP drops below 60%)
- Rolling Analysis: Show how probabilities change if you roll the position at different DTE
- Assignment Risk: Calculate early assignment probabilities for each leg
Step 5: Visualization
Create these charts:
- Probability Curve: Show how combined PoP changes with underlying price
- Profit/Loss Diagram: Classic iron condor P&L graph with probability annotations
- Time Decay Chart: Show how PoP changes as expiration approaches
12. The Psychology of Probability-Based Trading
Understanding the mathematics is only half the battle. Successful probability-based trading requires mastering these psychological aspects:
- The Probability Paradox: Why traders often take high-probability trades with small edge instead of lower-probability trades with larger edge
- Recency Bias: How recent wins/losses distort perception of actual probabilities
- Probability vs. Outcome: Why a 70% PoP trade can still have a 30% chance of losing (and how to handle the losses)
- The Law of Large Numbers: Why you need 50+ trades to realize your expected probability edge
- Probability Anchoring: How initial probability estimates influence trade management decisions
To combat these psychological challenges:
- Maintain a trade journal tracking:
- Pre-trade probability calculation
- Actual outcome
- Emotional state during the trade
- Lessons learned
- Review your journal monthly to:
- Compare actual win rate vs. calculated PoP
- Identify patterns in emotional responses
- Adjust position sizing based on actual performance
- Implement these psychological safeguards:
- Never risk more than 1% of capital on a single trade, regardless of PoP
- Take a break after 3 consecutive losses to prevent revenge trading
- Use the “10-minute rule” – wait 10 minutes before acting on emotional impulses
13. Tax and Regulatory Considerations
Probability-based trading strategies often generate frequent trades, which has important tax and regulatory implications:
IRS Tax Treatment (U.S. Traders)
- Section 1256 Contracts: Index options qualify for 60/40 tax treatment (60% long-term, 40% short-term capital gains)
- Non-1256 Options: Equity options are taxed at short-term rates if held <1 year
- Wash Sale Rule: Be careful with adjustment trades that might trigger wash sales
- Trader Tax Status: If you qualify, you can deduct trading expenses and elect mark-to-market accounting
Pattern Day Trader Rule
For U.S. traders with accounts under $25,000:
- You’re limited to 3 day trades in a 5-business-day period
- Probability-based strategies often involve frequent adjustments that may count as day trades
- Consider using a cash account to avoid PDT restrictions (but beware of free-riding violations)
International Considerations
For non-U.S. traders:
- Canada: Options are taxed as capital gains (50% inclusion rate)
- UK: Options are subject to Capital Gains Tax (annual exemption applies)
- Australia: Options are taxed under CGT rules with 50% discount for assets held >12 months
- Singapore: No capital gains tax on options trading
14. Future Developments in Options Probability Modeling
The field of options probability calculation is evolving rapidly. Stay ahead with these emerging trends:
Machine Learning Enhancements
- Probability Refinement: Using ML to adjust Black-Scholes probabilities based on:
- Market regime (bull/bear/range-bound)
- Volatility term structure
- Order flow imbalances
- Dynamic IV Forecasting: Predicting how implied volatility will change, allowing for more accurate forward-looking probabilities
- Early Assignment Prediction: ML models that estimate early exercise probabilities better than traditional methods
Alternative Probability Models
- Stochastic Volatility Models: Heston model implementations in Excel that account for volatility clustering
- Jump Diffusion: Incorporating probability of sudden price jumps (especially relevant for earnings plays)
- Fractional Brownian Motion: Capturing long memory effects in asset prices
Blockchain and Smart Contracts
- Decentralized Probability Oracles: Using blockchain to create transparent, tamper-proof probability calculations
- Automated Probability-Based Strategies: Smart contracts that execute trades when probability thresholds are met
- Tokenized Probability Markets: Trading probability outcomes directly as tokens
Quantum Computing
- Monte Carlo Acceleration: Quantum computers can run millions of price path simulations instantly
- High-Dimensional Probability Calculations: Modeling complex multi-asset probability surfaces
- Real-Time Probability Adjustments: Instant recalculation of probabilities as market conditions change
15. Conclusion: Building Your Probability Trading Edge
Creating and mastering an options probability calculator in Excel provides several key advantages:
- Transparency: You understand exactly how probabilities are calculated, unlike black-box broker tools
- Customization: Tailor calculations to your specific trading style and risk tolerance
- Backtesting: Test probability-based strategies against historical data
- Confidence: Verify broker-provided probabilities and identify potential edge
- Innovation: Develop unique probability-based strategies not available on retail platforms
Remember these key principles as you develop your probability trading approach:
- Probabilities are guides, not guarantees – always manage risk
- Small edges compound over time – focus on consistency
- Adapt your probability targets to different market regimes
- Combine probability analysis with fundamental catalysts for higher conviction trades
- Continuously validate and refine your models against real market data
By implementing the Excel models and strategies outlined in this guide, you’ll gain a significant edge in understanding and trading options probabilities. Start with the basic calculator, validate it thoroughly, then gradually add the advanced features that align with your trading style.
The most successful options traders combine probabilistic thinking with disciplined risk management and continuous learning. Your Excel probability calculator will become a powerful tool in developing and maintaining that edge.