Introduction
# Decision Trees — Structured Decision-Making
Decision tree analysis: a visual tool for making decisions with probabilities and expected value.
## When to Use
✅ **Good for:** - Business decisions (investments, hiring, product launches) - Personal choices (career, relocation, purchases) - Trading & investing (position sizing, entry/exit) - Operational decisions (expansion, outsourcing) - Any situation with measurable consequences
❌ **Not suitable for:** - Decisions with true uncertainty (black swans) - Fast tactical choices - Purely emotional/ethical questions
## Method
**Decision tree** = tree-like structure where: - **Decision nodes** (squares) — your actions - **Chance nodes** (circles) — random events - **End nodes** (triangles) — final outcomes
**Process:** 1. **Define options** — all possible actions 2. **Define outcomes** — what can happen after each action 3. **Estimate probabilities** — how likely is each outcome (0-100%) 4. **Estimate values** — utility/reward for each outcome (money, points, utility units) 5. **Calculate EV** — expected value = Σ (probability × value) 6. **Choose** — option with highest EV
## Formula
``` EV = Σ (probability_i × value_i) ```
**Example:** - Outcome A: 70% probability, +$100 → 0.7 × 100 = $70 - Outcome B: 30% probability, -$50 → 0.3 × (-50) = -$15 - **EV = $70 + (-$15) = $55**
## Classic Example (from Wikipedia)
**Decision:** Go to party or stay home?
### Estimates: - Party: +9 utility (fun) - Home: +3 utility (comfort) - Carrying jacket unnecessarily: -2 utility - Being cold: -10 utility - Probability cold: 70% - Probability warm: 30%
### Tree:
``` Decision ├─ Go to party │ ├─ Take jacket │ │ ├─ Cold (70%) → 9 utility (party) │ │ └─ Warm (30%) → 9 - 2 = 7 utility (carried unnecessarily) │ │ EV = 0.7 × 9 + 0.3 × 7 = 8.4 │ └─ Don't take jacket │ ├─ Cold (70%) → 9 - 10 = -1 utility (froze) │ └─ Warm (30%) → 9 utility (perfect) │ EV = 0.7 × (-1) + 0.3 × 9 = 2.0 └─ Stay home └─ EV = 3.0 (always) ```
**Conclusion:** Go and take jacket (EV = 8.4) > stay home (EV = 3.0) > go without jacket (EV = 2.0)
## Business Example
**Decision:** Launch new product?
### Estimates: - Success probability: 40% - Failure probability: 60% - Profit if success: $500K - Loss if failure: $200K - Don't launch: $0
### Tree:
``` Launch product ├─ Success (40%) → +$500K └─ Failure (60%) → -$200K
EV = (0.4 × 500K) + (0.6 × -200K) = 200K - 120K = +$80K
Don't launch └─ EV = $0 ```
**Conclusion:** Launch (EV = +$80K) is better than not launching ($0).
## Trading Example
**Decision:** Enter position or wait?
### Estimates: - Probability of rise: 60% - Probability of fall: 40% - Position size: $1000 - Target: +10% ($100 profit) - Stop-loss: -5% ($50 loss)
### Tree:
``` Enter position ├─ Rise (60%) → +$100 └─ Fall (40%) → -$50
EV = (0.6 × 100) + (0.4 × -50) = 60 - 20 = +$40
Wait └─ No position → $0
EV = $0 ```
**Conclusion:** Entering position has positive EV (+$40), better than waiting ($0).
## Method Limitations
⚠️ **Critical points:**
1. **Subjective estimates** — probabilities often "finger in the air" 2. **Doesn't account for risk appetite** — ignores psychology (loss aversion) 3. **Simplified model** — reality is more complex 4. **Unstable** — small data changes can drastically alter the tree 5. **May be inaccurate** — other methods exist that are more precise (random forests)
**But:** The method is valuable for **structuring thinking**, even if numbers are approximate.
## User Workflow
### 1. Structuring
Ask: - What are the action options? - What are possible outcomes? - What are values/utility for each outcome? - How do we measure value? (money, utility units, happiness points)
### 2. Probability Estimation
Help estimate through: - Historical data (if available) - Comparable situations - Expert judgment (user experience) - Subjective assessment (if no data)
### 3. Visualization
Draw tree in markdown:
``` Decision ├─ Option A │ ├─ Outcome A1 (X%) → Value Y │ └─ Outcome A2 (Z%) → Value W └─ Option B └─ Outcome B1 (100%) → Value V ```
### 4. EV Calculation
For each option: ``` EV_A = (X% × Y) + (Z% × W) EV_B = V ```
### 5. Recommendation
Option with highest EV = best choice (rationally).
**But add context:** - Risk tolerance (can user handle worst case) - Time horizon (when is result needed) - Other factors (reputational risk, emotions, ethics)
## Application Examples by Domain
### Trading & Investing
**Position Sizing:** - Options: 5%, 10%, 20% of capital - Outcomes: Profit/loss with different probabilities - Value: Absolute profit in $
**Entry Timing:** - Options: Enter now, wait for -5%, wait for -10% - Outcomes: Price goes up/down - Value: Opportunity cost vs better entry price
### Business Strategy
**Product Launch:** - Options: Launch / don't launch - Outcomes: Success / failure - Value: Revenue, market share, costs
**Hiring Decision:** - Options: Hire candidate A / candidate B / don't hire - Outcomes: Successful onboarding / quit after X months - Value: Productivity, costs, opportunity cost
### Personal Decisions
**Career Change:** - Options: Stay / change job / start business - Outcomes: Success / failure in new role - Value: Salary, satisfaction, growth, risk
**Real Estate:** - Options: Buy house A / house B / continue renting - Outcomes: Price increase / decrease / personal situation changes - Value: Net worth, monthly costs, quality of life
### Operations
**Capacity Planning:** - Options: Expand production / outsource / status quo - Outcomes: Demand increases / decreases - Value: Profit, utilization, fixed costs
**Vendor Selection:** - Options: Vendor A / Vendor B / in-house - Outcomes: Quality, reliability, failures - Value: Total cost of ownership
## Calculator Script
Use `scripts/decision_tree.py` for automated EV calculations:
```bash python3 scripts/decision_tree.py --interactive ```
Or via JSON:
```bash python3 scripts/decision_tree.py --json tree.json ```
JSON format:
```json { "decision": "Launch product?", "options": [ { "name": "Launch", "outcomes": [ {"name": "Success", "probability": 0.4, "value": 500000}, {"name": "Failure", "probability": 0.6, "value": -200000} ] }, { "name": "Don't launch", "outcomes": [ {"name": "Status quo", "probability": 1.0, "value": 0} ] } ] } ```
Output:
``` 📊 Decision Tree Analysis
Decision: Launch product?
Option 1: Launch └─ EV = $80,000.00 ├─ Success (40.0%) → +$500,000.00 └─ Failure (60.0%) → -$200,000.00
Option 2: Don't launch └─ EV = $0.00 └─ Status quo (100.0%) → $0.00
✅ Recommendation: Launch (EV: $80,000.00) ```
## Final Checklist
Before giving recommendation, ensure:
- ✅ All options covered - ✅ Probabilities sum to 100% for each branch - ✅ Values are realistic (not fantasies) - ✅ Worst case scenario is clear to user - ✅ Risk/reward ratio is explicit - ✅ Method limitations mentioned - ✅ Qualitative context added (not just EV)
## Method Advantages
✅ **Simple** — people understand trees intuitively ✅ **Visual** — clear structure ✅ **Works with little data** — can use expert estimates ✅ **White box** — transparent logic ✅ **Worst/best case** — extreme scenarios visible ✅ **Multiple decision-makers** — can account for different interests
## Method Disadvantages
❌ **Unstable** — small data changes → large tree changes ❌ **Inaccurate** — often more precise methods exist ❌ **Subjective** — probability estimates "from the head" ❌ **Complex** — becomes unwieldy with many outcomes ❌ **Doesn't account for risk preference** — assumes risk neutrality
## Important
The method is valuable for **structuring thinking**, but numbers are often taken from thin air.
What matters more is the process — **forcing yourself to think through all branches** and explicitly evaluate consequences.
Don't sell the decision as "scientifically proven" — it's just a framework for conscious choice.
## Further Reading
- Decision trees in operations research - Influence diagrams (more compact for complex decisions) - Utility functions (accounting for risk aversion) - Monte Carlo simulation (for greater accuracy) - Real options analysis (for strategic decisions)