sqa 0.0.24 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.goose/memory/development.txt +3 -0
- data/.semver +6 -0
- data/ARCHITECTURE.md +648 -0
- data/CHANGELOG.md +82 -0
- data/CLAUDE.md +653 -0
- data/COMMITS.md +196 -0
- data/DATAFRAME_ARCHITECTURE_REVIEW.md +421 -0
- data/NEXT-STEPS.md +154 -0
- data/README.md +812 -262
- data/TASKS.md +358 -0
- data/TEST_RESULTS.md +140 -0
- data/TODO.md +42 -0
- data/_notes.txt +25 -0
- data/bin/sqa-console +11 -0
- data/data/talk_talk.json +103284 -0
- data/develop_summary.md +313 -0
- data/docs/advanced/backtesting.md +206 -0
- data/docs/advanced/ensemble.md +68 -0
- data/docs/advanced/fpop.md +153 -0
- data/docs/advanced/index.md +112 -0
- data/docs/advanced/multi-timeframe.md +67 -0
- data/docs/advanced/pattern-matcher.md +75 -0
- data/docs/advanced/portfolio-optimizer.md +79 -0
- data/docs/advanced/portfolio.md +166 -0
- data/docs/advanced/risk-management.md +210 -0
- data/docs/advanced/strategy-generator.md +158 -0
- data/docs/advanced/streaming.md +209 -0
- data/docs/ai_and_ml.md +80 -0
- data/docs/api/dataframe.md +1115 -0
- data/docs/api/index.md +126 -0
- data/docs/assets/css/custom.css +88 -0
- data/docs/assets/js/mathjax.js +18 -0
- data/docs/concepts/index.md +68 -0
- data/docs/contributing/index.md +60 -0
- data/docs/data-sources/index.md +66 -0
- data/docs/data_frame.md +317 -97
- data/docs/factors_that_impact_price.md +26 -0
- data/docs/finviz.md +11 -0
- data/docs/fx_pro_bit.md +25 -0
- data/docs/genetic_programming.md +104 -0
- data/docs/getting-started/index.md +123 -0
- data/docs/getting-started/installation.md +229 -0
- data/docs/getting-started/quick-start.md +244 -0
- data/docs/i_gotta_an_idea.md +22 -0
- data/docs/index.md +163 -0
- data/docs/indicators/index.md +97 -0
- data/docs/indicators.md +110 -24
- data/docs/options.md +8 -0
- data/docs/strategies/bollinger-bands.md +146 -0
- data/docs/strategies/consensus.md +64 -0
- data/docs/strategies/custom.md +310 -0
- data/docs/strategies/ema.md +53 -0
- data/docs/strategies/index.md +92 -0
- data/docs/strategies/kbs.md +164 -0
- data/docs/strategies/macd.md +96 -0
- data/docs/strategies/market-profile.md +54 -0
- data/docs/strategies/mean-reversion.md +58 -0
- data/docs/strategies/rsi.md +95 -0
- data/docs/strategies/sma.md +55 -0
- data/docs/strategies/stochastic.md +63 -0
- data/docs/strategies/volume-breakout.md +54 -0
- data/docs/tags.md +7 -0
- data/docs/true_strength_index.md +46 -0
- data/docs/weighted_moving_average.md +48 -0
- data/examples/README.md +354 -0
- data/examples/advanced_features_example.rb +350 -0
- data/examples/fpop_analysis_example.rb +191 -0
- data/examples/genetic_programming_example.rb +148 -0
- data/examples/kbs_strategy_example.rb +208 -0
- data/examples/pattern_context_example.rb +300 -0
- data/examples/rails_app/Gemfile +34 -0
- data/examples/rails_app/README.md +416 -0
- data/examples/rails_app/app/assets/javascripts/application.js +107 -0
- data/examples/rails_app/app/assets/stylesheets/application.css +659 -0
- data/examples/rails_app/app/controllers/analysis_controller.rb +11 -0
- data/examples/rails_app/app/controllers/api/v1/stocks_controller.rb +227 -0
- data/examples/rails_app/app/controllers/application_controller.rb +22 -0
- data/examples/rails_app/app/controllers/backtest_controller.rb +11 -0
- data/examples/rails_app/app/controllers/dashboard_controller.rb +21 -0
- data/examples/rails_app/app/controllers/portfolio_controller.rb +7 -0
- data/examples/rails_app/app/views/analysis/show.html.erb +209 -0
- data/examples/rails_app/app/views/backtest/show.html.erb +171 -0
- data/examples/rails_app/app/views/dashboard/index.html.erb +118 -0
- data/examples/rails_app/app/views/dashboard/show.html.erb +408 -0
- data/examples/rails_app/app/views/errors/show.html.erb +17 -0
- data/examples/rails_app/app/views/layouts/application.html.erb +60 -0
- data/examples/rails_app/app/views/portfolio/index.html.erb +33 -0
- data/examples/rails_app/bin/rails +6 -0
- data/examples/rails_app/config/application.rb +45 -0
- data/examples/rails_app/config/boot.rb +5 -0
- data/examples/rails_app/config/database.yml +18 -0
- data/examples/rails_app/config/environment.rb +11 -0
- data/examples/rails_app/config/routes.rb +26 -0
- data/examples/rails_app/config.ru +8 -0
- data/examples/realtime_stream_example.rb +274 -0
- data/examples/sinatra_app/Gemfile +22 -0
- data/examples/sinatra_app/QUICKSTART.md +159 -0
- data/examples/sinatra_app/README.md +461 -0
- data/examples/sinatra_app/app.rb +344 -0
- data/examples/sinatra_app/config.ru +5 -0
- data/examples/sinatra_app/public/css/style.css +659 -0
- data/examples/sinatra_app/public/js/app.js +107 -0
- data/examples/sinatra_app/views/analyze.erb +306 -0
- data/examples/sinatra_app/views/backtest.erb +325 -0
- data/examples/sinatra_app/views/dashboard.erb +419 -0
- data/examples/sinatra_app/views/error.erb +58 -0
- data/examples/sinatra_app/views/index.erb +118 -0
- data/examples/sinatra_app/views/layout.erb +61 -0
- data/examples/sinatra_app/views/portfolio.erb +43 -0
- data/examples/strategy_generator_example.rb +346 -0
- data/hsa_portfolio.csv +11 -0
- data/justfile +0 -0
- data/lib/api/alpha_vantage_api.rb +462 -0
- data/lib/sqa/backtest.rb +329 -0
- data/lib/sqa/data_frame/alpha_vantage.rb +43 -65
- data/lib/sqa/data_frame/data.rb +92 -0
- data/lib/sqa/data_frame/yahoo_finance.rb +35 -43
- data/lib/sqa/data_frame.rb +148 -243
- data/lib/sqa/ensemble.rb +359 -0
- data/lib/sqa/fpop.rb +199 -0
- data/lib/sqa/gp.rb +259 -0
- data/lib/sqa/indicator.rb +5 -8
- data/lib/sqa/init.rb +15 -8
- data/lib/sqa/market_regime.rb +240 -0
- data/lib/sqa/multi_timeframe.rb +379 -0
- data/lib/sqa/pattern_matcher.rb +497 -0
- data/lib/sqa/portfolio.rb +260 -6
- data/lib/sqa/portfolio_optimizer.rb +377 -0
- data/lib/sqa/risk_manager.rb +442 -0
- data/lib/sqa/seasonal_analyzer.rb +209 -0
- data/lib/sqa/sector_analyzer.rb +300 -0
- data/lib/sqa/stock.rb +67 -125
- data/lib/sqa/strategy/bollinger_bands.rb +42 -0
- data/lib/sqa/strategy/consensus.rb +5 -2
- data/lib/sqa/strategy/kbs_strategy.rb +470 -0
- data/lib/sqa/strategy/macd.rb +46 -0
- data/lib/sqa/strategy/mp.rb +1 -1
- data/lib/sqa/strategy/stochastic.rb +60 -0
- data/lib/sqa/strategy/volume_breakout.rb +57 -0
- data/lib/sqa/strategy.rb +5 -0
- data/lib/sqa/strategy_generator.rb +947 -0
- data/lib/sqa/stream.rb +361 -0
- data/lib/sqa/version.rb +1 -7
- data/lib/sqa.rb +23 -16
- data/main.just +81 -0
- data/mkdocs.yml +288 -0
- data/trace.log +0 -0
- metadata +261 -51
- data/bin/sqa +0 -6
- data/lib/patches/dry-cli.rb +0 -228
- data/lib/sqa/activity.rb +0 -10
- data/lib/sqa/cli.rb +0 -62
- data/lib/sqa/commands/analysis.rb +0 -309
- data/lib/sqa/commands/base.rb +0 -139
- data/lib/sqa/commands/web.rb +0 -199
- data/lib/sqa/commands.rb +0 -22
- data/lib/sqa/constants.rb +0 -23
- data/lib/sqa/indicator/average_true_range.rb +0 -33
- data/lib/sqa/indicator/bollinger_bands.rb +0 -28
- data/lib/sqa/indicator/candlestick_pattern_recognizer.rb +0 -60
- data/lib/sqa/indicator/donchian_channel.rb +0 -29
- data/lib/sqa/indicator/double_top_bottom_pattern.rb +0 -34
- data/lib/sqa/indicator/elliott_wave_theory.rb +0 -57
- data/lib/sqa/indicator/exponential_moving_average.rb +0 -25
- data/lib/sqa/indicator/exponential_moving_average_trend.rb +0 -36
- data/lib/sqa/indicator/fibonacci_retracement.rb +0 -23
- data/lib/sqa/indicator/head_and_shoulders_pattern.rb +0 -26
- data/lib/sqa/indicator/market_profile.rb +0 -32
- data/lib/sqa/indicator/mean_reversion.rb +0 -37
- data/lib/sqa/indicator/momentum.rb +0 -28
- data/lib/sqa/indicator/moving_average_convergence_divergence.rb +0 -29
- data/lib/sqa/indicator/peaks_and_valleys.rb +0 -29
- data/lib/sqa/indicator/predict_next_value.rb +0 -202
- data/lib/sqa/indicator/relative_strength_index.rb +0 -47
- data/lib/sqa/indicator/simple_moving_average.rb +0 -24
- data/lib/sqa/indicator/simple_moving_average_trend.rb +0 -32
- data/lib/sqa/indicator/stochastic_oscillator.rb +0 -68
- data/lib/sqa/indicator/true_range.rb +0 -39
- data/lib/sqa/trade.rb +0 -26
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,87 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
### Fixed
|
|
4
|
+
- **DataFrame::Data**: Added missing `SQA::DataFrame::Data` class for stock metadata storage
|
|
5
|
+
- Stores ticker, name, exchange, source, indicators, and overview data
|
|
6
|
+
- Supports both hash initialization (JSON) and keyword arguments
|
|
7
|
+
- Used by `SQA::Stock` for persisting stock metadata
|
|
8
|
+
- Fixes error when loading stocks in sqa-cli gem
|
|
9
|
+
|
|
10
|
+
## [0.0.31] - 2024-11-09
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **FPOP Module**: Future Period of Performance analysis utilities for calculating future period loss/profit
|
|
14
|
+
- Comprehensive FPL (Future Period Loss/Profit) analysis utilities
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Use correct KBS DSL syntax with 'perform' instead of 'then'
|
|
18
|
+
- KBS syntax corrections and improvements
|
|
19
|
+
|
|
20
|
+
## [0.0.30] - 2024-11-08
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- **StrategyGenerator**: Reverse-engineer profitable trades to discover patterns
|
|
24
|
+
- Pattern mining from historical data
|
|
25
|
+
- Strategy generation from discovered patterns
|
|
26
|
+
- Comprehensive tests and documentation
|
|
27
|
+
|
|
28
|
+
## [0.0.29] - 2024-11-07
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- **GeneticProgram**: Evolutionary algorithm for strategy parameter optimization
|
|
32
|
+
- **KBS Strategy**: RETE-based forward-chaining inference engine (454 lines)
|
|
33
|
+
- **Stream**: Real-time price streaming with callback support (343 lines)
|
|
34
|
+
- Comprehensive tests for all new modules
|
|
35
|
+
|
|
36
|
+
## [0.0.28] - 2024-11-06
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
- **Portfolio**: Position and trade tracking with P&L calculations (265 lines)
|
|
40
|
+
- **Backtest**: Strategy simulation with comprehensive performance metrics (345 lines)
|
|
41
|
+
- **4 New Strategies**:
|
|
42
|
+
- Bollinger Bands strategy
|
|
43
|
+
- MACD crossover strategy
|
|
44
|
+
- Stochastic oscillator strategy
|
|
45
|
+
- Volume Breakout strategy
|
|
46
|
+
|
|
47
|
+
## [0.0.27] - 2024-11-05
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- **BREAKING**: Renamed `bin/sqa` to `bin/sqa-console` for clarity
|
|
51
|
+
|
|
52
|
+
### Removed
|
|
53
|
+
- Removed `api_key_manager` dependency (unused)
|
|
54
|
+
|
|
55
|
+
### Documentation
|
|
56
|
+
- Updated README.md and CLAUDE.md to reflect current capabilities
|
|
57
|
+
|
|
58
|
+
## [0.0.26] - 2024-11-04
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
- **BREAKING**: Replaced local indicator implementations with `sqa-tai` gem
|
|
62
|
+
- All 150+ technical indicators now provided by separate sqa-tai gem
|
|
63
|
+
- sqa-tai wraps TA-Lib C library (industry standard)
|
|
64
|
+
- Access via `SQAI.indicator_name(prices, options)` or `SQA::TAI.indicator_name(...)`
|
|
65
|
+
|
|
66
|
+
### Removed
|
|
67
|
+
- Local indicator implementations (migrated to sqa-tai gem)
|
|
68
|
+
|
|
69
|
+
## [0.0.25] - 2024-11-03
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
- **BREAKING**: Refactored SQA::DataFrame to integrate with polars-df gem
|
|
73
|
+
- Replaced previous DataFrame implementation with high-performance Polars-backed version
|
|
74
|
+
- 30x performance improvement for time series operations
|
|
75
|
+
- Wraps Polars::DataFrame with convenience methods
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
- Documentation for architecture refactoring plan
|
|
79
|
+
- Conventional Commits specification document
|
|
80
|
+
|
|
81
|
+
### Chore
|
|
82
|
+
- Pruned unused gems from Gemfile
|
|
83
|
+
- Updated Gemfile.lock dependencies
|
|
84
|
+
|
|
3
85
|
## [0.0.24] - 2023-11-08
|
|
4
86
|
|
|
5
87
|
- replaced [tty-option gem](https://github.com/piotrmurach/tty-option) with [dry-cli gem](https://github.com/dry-rb/dry-cli)
|