Project · Derivatives Python · NumPy · SciPy · pandas
Pricing Coffee Derivatives on a Commodities Desk

Three tasks from Citi's Markets Quant job simulation, completed in July 2026. I priced a six-month coffee option three different ways, used the same engine to design a coffee-linked structured note for a client, and set out how a desk should manage the market, credit and operational risks around it. Everything below was built in Python and checked by re-running the code.

Fair value of the call
$0.0712/lb
≈ $2,670 per contract
Monte Carlo vs formula
0.02%
difference, 500k paths
Note participation
40.9%
3% coupon, 80% barrier
Tail risk removed
85%
by a protective put
In plain words

An option is like insurance. A coffee call option gives you the right, but not the obligation, to buy coffee at a fixed price later. If coffee gets expensive, the insurance pays out; if it doesn't, you've only lost the premium. The hard part is deciding what that insurance is worth today, and how much risk you carry once you've sold it to someone.

1
Price the option
Fair futures price from cost of carry, option value from Black-76, then a Monte Carlo simulation to check the answer and measure tail risk.
2
Build a structured note
A product paying a coupon plus coffee upside. Solved for the participation rate that makes it worth exactly what the client pays, and showed the client's 26.6% chance of losing money.
3
Manage the risks
Hedging a weather view, onboarding a risky supplier, and fixing manual trade errors — each sized before it is mitigated.
4
Know the model's limits
A single flat volatility misprices out-of-the-money options. In production I'd price off the implied volatility surface.