Project 5: Black-Scholes Option Pricing Model
Build a pricing tool that computes European call and put values.
Project Overview
| Attribute | Value |
|---|---|
| Difficulty | Level 2: Intermediate |
| Time Estimate | Weekend |
| Main Language | Python |
| Alternative Languages | C++, R |
| Knowledge Area | Options pricing |
| Tools | CLI or notebook |
| Main Book | “Options, Futures, and Other Derivatives” by John Hull |
What you’ll build: A calculator that prices European options using the Black-Scholes formula.
Why it teaches quant: It connects probability, distributions, and finance into a single equation.
Core challenges you’ll face:
- Implementing the normal CDF accurately
- Handling input units (time, rates, volatility)
- Comparing model price to market price
Real World Outcome
You will input option parameters and receive theoretical call/put prices.
Example Output:
$ python black_scholes.py --s 100 --k 105 --t 0.5 --r 0.03 --sigma 0.2
Call: 4.23
Put: 7.71
Verification steps:
- Validate against known examples
- Check call-put parity
The Core Question You’re Answering
“How does probability translate into option prices?”
Black-Scholes is the canonical quant formula.
Concepts You Must Understand First
Stop and research these before coding:
- Normal distribution
- How do z-scores map to probabilities?
- Book Reference: “Options, Futures, and Other Derivatives” by John Hull, Ch. 11
- Risk-neutral pricing
- Why do we discount expected payoff at the risk-free rate?
- Book Reference: “Options, Futures, and Other Derivatives” by John Hull, Ch. 13
- Volatility
- Why is volatility the most sensitive input?
- Book Reference: “Options, Futures, and Other Derivatives” by John Hull, Ch. 14
Questions to Guide Your Design
- Input handling
- How will you ensure time is in years and rates are annualized?
- How will you validate sigma ranges?
- Output analysis
- Will you compute implied volatility if given a market price?
- How will you show sensitivity (Greeks)?
Thinking Exercise
Call-Put Parity
Given S=100, K=100, r=0.05, T=1, compute the parity relationship between call and put.
Questions while working:
- Why must parity always hold?
- What does it imply about arbitrage?
The Interview Questions They’ll Ask
Prepare to answer these:
- “What is the Black-Scholes model?”
- “Why do we use the normal CDF?”
- “What is risk-neutral pricing?”
- “What are the model assumptions?”
- “How does volatility affect option price?”
Hints in Layers
Hint 1: Starting Point Implement the d1 and d2 calculations carefully.
Hint 2: Next Level Use a reliable normal CDF function from a library.
Hint 3: Technical Details Check call-put parity as a validation test.
Hint 4: Tools/Debugging Compare output to a trusted online calculator.
Books That Will Help
| Topic | Book | Chapter |
|---|---|---|
| Normal distribution | “Options, Futures, and Other Derivatives” by John Hull | Ch. 11 |
| Risk-neutral pricing | “Options, Futures, and Other Derivatives” by John Hull | Ch. 13 |
| Volatility sensitivity | “Options, Futures, and Other Derivatives” by John Hull | Ch. 14 |
Implementation Hints
- Keep units consistent: time in years, rates annualized.
- Provide a sample input set for testing.
- Include parity checks in tests.
Learning Milestones
- First milestone: You can compute call and put prices.
- Second milestone: You can validate parity.
- Final milestone: You can explain model assumptions and limits.