This commit addresses a critical architectural issue by moving business logic
from the CLI layer to the core library, ensuring proper separation of concerns.
Key changes:
1. Refactored business logic:
- Moved `generate_spy_changes` from `src/focli/utils.py` to `src/folio/simulator.py`
- Moved `calculate_position_value_with_price_change` from `src/focli/utils.py` to `src/folio/portfolio_value.py`
- Moved `simulate_position_with_spy_changes` from `src/focli/utils.py` to `src/folio/simulator.py`
- Updated imports in CLI code to use the functions from the core library
2. Enhanced documentation:
- Added separation of concerns principles to BEST-PRACTICES.md
- Created a dedicated "Separation of Concerns" section in project-design.md
- Added CLI interface documentation to project-design.md
- Added code examples of proper separation in project-conventions.md
3. Verified changes:
- Ran tests to ensure all functionality works correctly
- Manually tested the CLI …
Add advanced interactive features to the Folio CLI:
- Position-specific analysis with risk metrics and simulations
- Ticker filtering capabilities across commands
- State management between commands for workflow continuity
- Parameter customization with presets for frequent analyses
- Detailed position breakdowns with risk metrics
Also includes:
- Make target for easy startup (make focli)
- Improved help documentation
- User-centric README and release announcement
- Bug fixes for simulation calculations
Completes all Phase 2 tasks from the MVP plan.
This commit adds a new interactive command-line interface for Folio portfolio management.
The CLI provides an interactive shell environment for running portfolio simulations,
analyzing positions, and exploring investment scenarios.
Key features:
- Interactive shell with command history and auto-completion
- Portfolio loading and viewing capabilities
- SPY simulation with customizable parameters
- Position-specific analysis with detailed breakdowns
- Comprehensive help system
Technical details:
- Uses prompt_toolkit for the interactive shell
- Leverages existing code from src/folio modules
- Maintains the same output formatting using Rich
- Follows project coding conventions and passes linting
The CLI provides at least the same functionality as scripts/folio-simulator.py
but in an interactive shell environment where users can run multiple commands
without restarting the application.
This is Phase 1 of the planned implementation, focusing on core functionality.
Future phases will add…
BREAKING CHANGE: Removed FMP data fetcher and related configuration options
- Removed src/fmp.py module and all related tests
- Consolidated DataFetcherSingleton into a single implementation in src/stockdata.py
- Removed data_source configuration option from folio.yaml
- Simplified create_data_fetcher to only support YFinance
- Updated all imports and usages to use the simplified data fetcher
- Removed scripts/check_beta.py and tests/fetch_sample_data.py that depended on FMP
- Updated documentation to reflect YFinance as the only supported data source
This change simplifies the codebase by removing unnecessary abstraction and
focusing on a single data source implementation.