docs: Add comprehensive documentation improvement roadmap
- Identifies critical gaps in optimal control mathematical foundations - Details needed HMM API expansion (currently only 16 lines) - Lists all implemented algorithms requiring documentation - Provides phased implementation plan with priorities - References academic sources for mathematical content User feedback: 'make it a lot more concise and detailed' + needs HJB equation theory, viscosity solutions, algorithm details
This commit is contained in:
@@ -0,0 +1,226 @@
|
|||||||
|
# Documentation Improvements Needed
|
||||||
|
|
||||||
|
**Date:** 2026-02-17
|
||||||
|
**Version:** v1.0.1
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The user identified several critical gaps in the Optimiz-rs documentation that need to be addressed:
|
||||||
|
|
||||||
|
1. **Optimal Control Page (`docs/source/algorithms/optimal_control.md`)**
|
||||||
|
- Needs much more detail on HJB equations
|
||||||
|
- Needs explanation of viscosity solutions
|
||||||
|
- Needs to introduce what's actually in the code/module
|
||||||
|
- Needs more mathematical foundations
|
||||||
|
|
||||||
|
2. **HMM API Page (`docs/source/api/hmm.md`)**
|
||||||
|
- Currently almost empty (only ~16 lines)
|
||||||
|
- Needs explanation of what algorithms are implemented
|
||||||
|
- Needs details on how they work
|
||||||
|
- Needs guidance on when/how to use them
|
||||||
|
|
||||||
|
3. **General Documentation**
|
||||||
|
- Make more concise and detailed throughout
|
||||||
|
- Better balance of theory and practice
|
||||||
|
|
||||||
|
## Required Enhancements
|
||||||
|
|
||||||
|
### 1. Optimal Control Documentation
|
||||||
|
|
||||||
|
#### Mathematical Foundations Needed:
|
||||||
|
- **HJB Equation:** Full derivation and intuition
|
||||||
|
- General form for stochastic processes
|
||||||
|
- Specialization to Ornstein-Uhlenbeck process
|
||||||
|
- Connection to optimal stopping/switching problems
|
||||||
|
|
||||||
|
- **Viscosity Solutions:** Detailed explanation
|
||||||
|
- Why classical solutions don't exist (kinks at boundaries)
|
||||||
|
- Definition of viscosity solutions
|
||||||
|
- Numerical approximation via upwind schemes
|
||||||
|
- Monotonicity and convergence properties
|
||||||
|
|
||||||
|
- **Finite Difference Methods:**
|
||||||
|
- Grid discretization approach
|
||||||
|
- Upwind vs central differences
|
||||||
|
- Policy iteration algorithm
|
||||||
|
- Convergence criteria
|
||||||
|
|
||||||
|
#### Implementation Details Needed:
|
||||||
|
- **What's Actually in the Module:**
|
||||||
|
- HJB solver for OU process (src/optimal_control/hjb_solver.rs)
|
||||||
|
- Viscosity solution solver (src/optimal_control/viscosity.rs)
|
||||||
|
- Regime switching (src/optimal_control/regime_switching.rs)
|
||||||
|
- Jump diffusion (src/optimal_control/jump_diffusion.rs)
|
||||||
|
- MRSJD - Multi-Regime Switching Jump Diffusion (src/optimal_control/mrsjd.rs)
|
||||||
|
- OU parameter estimation (src/optimal_control/ou_estimator.rs)
|
||||||
|
- Kalman filters: Linear, EKF, UKF (src/optimal_control/kalman_filter.rs)
|
||||||
|
- Backtesting framework (src/optimal_control/backtest.rs)
|
||||||
|
|
||||||
|
#### Usage Guidance Needed:
|
||||||
|
- When to use each algorithm
|
||||||
|
- Parameter tuning guidelines
|
||||||
|
- Diagnostic plots and convergence monitoring
|
||||||
|
- Integration with other modules (HMM, Mean Field Games)
|
||||||
|
- Real-world trading examples
|
||||||
|
|
||||||
|
### 2. HMM API Documentation
|
||||||
|
|
||||||
|
#### Algorithms to Document:
|
||||||
|
- **Forward Algorithm:** Compute P(O|λ) efficiently
|
||||||
|
- Forward variable α_t(i)
|
||||||
|
- Recursive computation
|
||||||
|
- Numerical stability (scaling)
|
||||||
|
|
||||||
|
- **Backward Algorithm:** Alternative for completeness
|
||||||
|
- Backward variable β_t(i)
|
||||||
|
- Use in Baum-Welch
|
||||||
|
|
||||||
|
- **Viterbi Algorithm:** Most likely state sequence
|
||||||
|
- Dynamic programming approach
|
||||||
|
- Backtracking for path recovery
|
||||||
|
|
||||||
|
- **Baum-Welch (EM) Algorithm:** Parameter learning
|
||||||
|
- E-step: compute γ_t(i) and ξ_t(i,j)
|
||||||
|
- M-step: update π, A, B parameters
|
||||||
|
- Convergence properties
|
||||||
|
|
||||||
|
#### API Methods to Explain:
|
||||||
|
- **`HMM(n_states)`:** Constructor
|
||||||
|
- When to use 2 vs 3+ states
|
||||||
|
- Initialization strategy
|
||||||
|
|
||||||
|
- **`fit(X, n_iterations, tolerance)`:** Training
|
||||||
|
- What data X should look like
|
||||||
|
- How many iterations needed
|
||||||
|
- Convergence diagnostics
|
||||||
|
- Multiple random restarts
|
||||||
|
|
||||||
|
- **`predict(X)`:** Viterbi decoding
|
||||||
|
- Returns most likely state sequence
|
||||||
|
- Use cases: regime detection, trading signals
|
||||||
|
|
||||||
|
- **`score(X)`:** Log-likelihood
|
||||||
|
- Model comparison
|
||||||
|
- Convergence monitoring
|
||||||
|
- Anomaly detection
|
||||||
|
|
||||||
|
#### Usage Examples Needed:
|
||||||
|
- **Regime Detection:**
|
||||||
|
- Market regimes (bull/bear)
|
||||||
|
- Volatility regimes (high/low)
|
||||||
|
- Integration with optimal control
|
||||||
|
|
||||||
|
- **Parameter Estimation Per Regime:**
|
||||||
|
- Combine with OU parameter estimation
|
||||||
|
- Regime-specific HJB solving
|
||||||
|
|
||||||
|
- **Model Selection:**
|
||||||
|
- BIC/AIC for choosing number of states
|
||||||
|
- Cross-validation approaches
|
||||||
|
|
||||||
|
- **Numerical Best Practices:**
|
||||||
|
- Data requirements (minimum samples)
|
||||||
|
- Handling outliers
|
||||||
|
- Initialization sensitivity
|
||||||
|
- Convergence diagnostics
|
||||||
|
|
||||||
|
### 3. API Reference Page (`docs/source/api/optimal_control.md`)
|
||||||
|
|
||||||
|
Currently 117 lines but needs:
|
||||||
|
- Complete function signatures
|
||||||
|
- Parameter descriptions with types
|
||||||
|
- Return value specifications
|
||||||
|
- Detailed examples for each function
|
||||||
|
- Error handling documentation
|
||||||
|
|
||||||
|
## Implementation Plan
|
||||||
|
|
||||||
|
### Phase 1: Mathematical Foundations (High Priority)
|
||||||
|
1. Expand optimal_control.md with HJB equation derivations
|
||||||
|
2. Add viscosity solutions section with theory and numerics
|
||||||
|
3. Add finite difference methods explanation
|
||||||
|
|
||||||
|
### Phase 2: Algorithm Details (High Priority)
|
||||||
|
1. HMM API documentation expansion
|
||||||
|
2. Detail each algorithm (forward, backward, Viterbi, Baum-Welch)
|
||||||
|
3. Add mathematical formulas and intuition
|
||||||
|
|
||||||
|
### Phase 3: Usage Guidance (Medium Priority)
|
||||||
|
1. Add "When to Use" sections for each algorithm
|
||||||
|
2. Parameter tuning guidelines
|
||||||
|
3. Diagnostic procedures
|
||||||
|
4. Integration examples
|
||||||
|
|
||||||
|
### Phase 4: API Reference (Medium Priority)
|
||||||
|
1. Complete function signatures
|
||||||
|
2. Parameter and return types
|
||||||
|
3. Error documentation
|
||||||
|
4. Cross-references
|
||||||
|
|
||||||
|
### Phase 5: Examples and Tutorials (Low Priority)
|
||||||
|
1. Jupyter notebooks for common use cases
|
||||||
|
2. End-to-end workflows
|
||||||
|
3. Performance benchmarking examples
|
||||||
|
|
||||||
|
## Technical Notes
|
||||||
|
|
||||||
|
### Current Implementation Status:
|
||||||
|
|
||||||
|
**Optimal Control Module (`src/optimal_control/`):**
|
||||||
|
- ✅ HJB solver (hjb_solver.rs)
|
||||||
|
- ✅ Viscosity solutions (viscosity.rs)
|
||||||
|
- ✅ Regime switching (regime_switching.rs)
|
||||||
|
- ✅ Jump diffusion (jump_diffusion.rs)
|
||||||
|
- ✅ MRSJD (mrsjd.rs)
|
||||||
|
- ✅ OU estimation (ou_estimator.rs)
|
||||||
|
- ✅ Kalman filters (kalman_filter.rs, kalman_py_bindings.rs)
|
||||||
|
- ✅ Backtesting (backtest.rs)
|
||||||
|
|
||||||
|
**HMM Module (`src/hmm/`):**
|
||||||
|
- ✅ Gaussian emissions (emission.rs)
|
||||||
|
- ✅ Forward-Backward algorithm (model.rs)
|
||||||
|
- ✅ Viterbi decoding (viterbi.rs)
|
||||||
|
- ✅ Baum-Welch training (model.rs)
|
||||||
|
- ✅ Python bindings (python_bindings.rs)
|
||||||
|
|
||||||
|
### Documentation Files to Update:
|
||||||
|
|
||||||
|
1. `docs/source/algorithms/optimal_control.md` (currently 94 lines → target: 500+ lines)
|
||||||
|
2. `docs/source/api/hmm.md` (currently 16 lines → target: 300+ lines)
|
||||||
|
3. `docs/source/api/optimal_control.md` (currently 117 lines → target: 400+ lines)
|
||||||
|
4. `docs/source/algorithms/hmm.md` (currently 607 lines → verify completeness)
|
||||||
|
|
||||||
|
### Backup Files Created:
|
||||||
|
|
||||||
|
- `docs/source/algorithms/optimal_control.md.backup`
|
||||||
|
- `docs/source/api/hmm.md.backup`
|
||||||
|
- `docs/source/api/optimal_control.md.backup`
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
1. **Immediate:** Write comprehensive optimal_control mathematical foundations
|
||||||
|
2. **Immediate:** Expand HMM API documentation with algorithm details
|
||||||
|
3. **Soon:** Add usage examples and integration guides
|
||||||
|
4. **Later:** Create Jupyter notebook tutorials
|
||||||
|
|
||||||
|
## References Needed
|
||||||
|
|
||||||
|
### Optimal Control:
|
||||||
|
- Fleming & Soner (2006): Controlled Markov Processes and Viscosity Solutions
|
||||||
|
- Øksendal (2003): Stochastic Differential Equations
|
||||||
|
- Pham (2009): Continuous-time Stochastic Control and Optimization
|
||||||
|
- Barles & Souganidis (1991): Convergence of approximation schemes
|
||||||
|
|
||||||
|
### HMM:
|
||||||
|
- Rabiner (1989): Tutorial on HMMs and selected applications
|
||||||
|
- Murphy (2012): Machine Learning: A Probabilistic Perspective
|
||||||
|
- Bishop (2006): Pattern Recognition and Machine Learning
|
||||||
|
|
||||||
|
### Kalman Filtering:
|
||||||
|
- Kalman (1960): A New Approach to Linear Filtering
|
||||||
|
- Julier & Uhlmann (1997): Unscented Kalman Filter
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Status:** Documentation gaps identified. Implementation in progress.
|
||||||
|
**Priority:** High - These are critical for user onboarding and proper usage.
|
||||||
Reference in New Issue
Block a user