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.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/.goose/memory/development.txt +3 -0
  3. data/.semver +6 -0
  4. data/ARCHITECTURE.md +648 -0
  5. data/CHANGELOG.md +82 -0
  6. data/CLAUDE.md +653 -0
  7. data/COMMITS.md +196 -0
  8. data/DATAFRAME_ARCHITECTURE_REVIEW.md +421 -0
  9. data/NEXT-STEPS.md +154 -0
  10. data/README.md +812 -262
  11. data/TASKS.md +358 -0
  12. data/TEST_RESULTS.md +140 -0
  13. data/TODO.md +42 -0
  14. data/_notes.txt +25 -0
  15. data/bin/sqa-console +11 -0
  16. data/data/talk_talk.json +103284 -0
  17. data/develop_summary.md +313 -0
  18. data/docs/advanced/backtesting.md +206 -0
  19. data/docs/advanced/ensemble.md +68 -0
  20. data/docs/advanced/fpop.md +153 -0
  21. data/docs/advanced/index.md +112 -0
  22. data/docs/advanced/multi-timeframe.md +67 -0
  23. data/docs/advanced/pattern-matcher.md +75 -0
  24. data/docs/advanced/portfolio-optimizer.md +79 -0
  25. data/docs/advanced/portfolio.md +166 -0
  26. data/docs/advanced/risk-management.md +210 -0
  27. data/docs/advanced/strategy-generator.md +158 -0
  28. data/docs/advanced/streaming.md +209 -0
  29. data/docs/ai_and_ml.md +80 -0
  30. data/docs/api/dataframe.md +1115 -0
  31. data/docs/api/index.md +126 -0
  32. data/docs/assets/css/custom.css +88 -0
  33. data/docs/assets/js/mathjax.js +18 -0
  34. data/docs/concepts/index.md +68 -0
  35. data/docs/contributing/index.md +60 -0
  36. data/docs/data-sources/index.md +66 -0
  37. data/docs/data_frame.md +317 -97
  38. data/docs/factors_that_impact_price.md +26 -0
  39. data/docs/finviz.md +11 -0
  40. data/docs/fx_pro_bit.md +25 -0
  41. data/docs/genetic_programming.md +104 -0
  42. data/docs/getting-started/index.md +123 -0
  43. data/docs/getting-started/installation.md +229 -0
  44. data/docs/getting-started/quick-start.md +244 -0
  45. data/docs/i_gotta_an_idea.md +22 -0
  46. data/docs/index.md +163 -0
  47. data/docs/indicators/index.md +97 -0
  48. data/docs/indicators.md +110 -24
  49. data/docs/options.md +8 -0
  50. data/docs/strategies/bollinger-bands.md +146 -0
  51. data/docs/strategies/consensus.md +64 -0
  52. data/docs/strategies/custom.md +310 -0
  53. data/docs/strategies/ema.md +53 -0
  54. data/docs/strategies/index.md +92 -0
  55. data/docs/strategies/kbs.md +164 -0
  56. data/docs/strategies/macd.md +96 -0
  57. data/docs/strategies/market-profile.md +54 -0
  58. data/docs/strategies/mean-reversion.md +58 -0
  59. data/docs/strategies/rsi.md +95 -0
  60. data/docs/strategies/sma.md +55 -0
  61. data/docs/strategies/stochastic.md +63 -0
  62. data/docs/strategies/volume-breakout.md +54 -0
  63. data/docs/tags.md +7 -0
  64. data/docs/true_strength_index.md +46 -0
  65. data/docs/weighted_moving_average.md +48 -0
  66. data/examples/README.md +354 -0
  67. data/examples/advanced_features_example.rb +350 -0
  68. data/examples/fpop_analysis_example.rb +191 -0
  69. data/examples/genetic_programming_example.rb +148 -0
  70. data/examples/kbs_strategy_example.rb +208 -0
  71. data/examples/pattern_context_example.rb +300 -0
  72. data/examples/rails_app/Gemfile +34 -0
  73. data/examples/rails_app/README.md +416 -0
  74. data/examples/rails_app/app/assets/javascripts/application.js +107 -0
  75. data/examples/rails_app/app/assets/stylesheets/application.css +659 -0
  76. data/examples/rails_app/app/controllers/analysis_controller.rb +11 -0
  77. data/examples/rails_app/app/controllers/api/v1/stocks_controller.rb +227 -0
  78. data/examples/rails_app/app/controllers/application_controller.rb +22 -0
  79. data/examples/rails_app/app/controllers/backtest_controller.rb +11 -0
  80. data/examples/rails_app/app/controllers/dashboard_controller.rb +21 -0
  81. data/examples/rails_app/app/controllers/portfolio_controller.rb +7 -0
  82. data/examples/rails_app/app/views/analysis/show.html.erb +209 -0
  83. data/examples/rails_app/app/views/backtest/show.html.erb +171 -0
  84. data/examples/rails_app/app/views/dashboard/index.html.erb +118 -0
  85. data/examples/rails_app/app/views/dashboard/show.html.erb +408 -0
  86. data/examples/rails_app/app/views/errors/show.html.erb +17 -0
  87. data/examples/rails_app/app/views/layouts/application.html.erb +60 -0
  88. data/examples/rails_app/app/views/portfolio/index.html.erb +33 -0
  89. data/examples/rails_app/bin/rails +6 -0
  90. data/examples/rails_app/config/application.rb +45 -0
  91. data/examples/rails_app/config/boot.rb +5 -0
  92. data/examples/rails_app/config/database.yml +18 -0
  93. data/examples/rails_app/config/environment.rb +11 -0
  94. data/examples/rails_app/config/routes.rb +26 -0
  95. data/examples/rails_app/config.ru +8 -0
  96. data/examples/realtime_stream_example.rb +274 -0
  97. data/examples/sinatra_app/Gemfile +22 -0
  98. data/examples/sinatra_app/QUICKSTART.md +159 -0
  99. data/examples/sinatra_app/README.md +461 -0
  100. data/examples/sinatra_app/app.rb +344 -0
  101. data/examples/sinatra_app/config.ru +5 -0
  102. data/examples/sinatra_app/public/css/style.css +659 -0
  103. data/examples/sinatra_app/public/js/app.js +107 -0
  104. data/examples/sinatra_app/views/analyze.erb +306 -0
  105. data/examples/sinatra_app/views/backtest.erb +325 -0
  106. data/examples/sinatra_app/views/dashboard.erb +419 -0
  107. data/examples/sinatra_app/views/error.erb +58 -0
  108. data/examples/sinatra_app/views/index.erb +118 -0
  109. data/examples/sinatra_app/views/layout.erb +61 -0
  110. data/examples/sinatra_app/views/portfolio.erb +43 -0
  111. data/examples/strategy_generator_example.rb +346 -0
  112. data/hsa_portfolio.csv +11 -0
  113. data/justfile +0 -0
  114. data/lib/api/alpha_vantage_api.rb +462 -0
  115. data/lib/sqa/backtest.rb +329 -0
  116. data/lib/sqa/data_frame/alpha_vantage.rb +43 -65
  117. data/lib/sqa/data_frame/data.rb +92 -0
  118. data/lib/sqa/data_frame/yahoo_finance.rb +35 -43
  119. data/lib/sqa/data_frame.rb +148 -243
  120. data/lib/sqa/ensemble.rb +359 -0
  121. data/lib/sqa/fpop.rb +199 -0
  122. data/lib/sqa/gp.rb +259 -0
  123. data/lib/sqa/indicator.rb +5 -8
  124. data/lib/sqa/init.rb +15 -8
  125. data/lib/sqa/market_regime.rb +240 -0
  126. data/lib/sqa/multi_timeframe.rb +379 -0
  127. data/lib/sqa/pattern_matcher.rb +497 -0
  128. data/lib/sqa/portfolio.rb +260 -6
  129. data/lib/sqa/portfolio_optimizer.rb +377 -0
  130. data/lib/sqa/risk_manager.rb +442 -0
  131. data/lib/sqa/seasonal_analyzer.rb +209 -0
  132. data/lib/sqa/sector_analyzer.rb +300 -0
  133. data/lib/sqa/stock.rb +67 -125
  134. data/lib/sqa/strategy/bollinger_bands.rb +42 -0
  135. data/lib/sqa/strategy/consensus.rb +5 -2
  136. data/lib/sqa/strategy/kbs_strategy.rb +470 -0
  137. data/lib/sqa/strategy/macd.rb +46 -0
  138. data/lib/sqa/strategy/mp.rb +1 -1
  139. data/lib/sqa/strategy/stochastic.rb +60 -0
  140. data/lib/sqa/strategy/volume_breakout.rb +57 -0
  141. data/lib/sqa/strategy.rb +5 -0
  142. data/lib/sqa/strategy_generator.rb +947 -0
  143. data/lib/sqa/stream.rb +361 -0
  144. data/lib/sqa/version.rb +1 -7
  145. data/lib/sqa.rb +23 -16
  146. data/main.just +81 -0
  147. data/mkdocs.yml +288 -0
  148. data/trace.log +0 -0
  149. metadata +261 -51
  150. data/bin/sqa +0 -6
  151. data/lib/patches/dry-cli.rb +0 -228
  152. data/lib/sqa/activity.rb +0 -10
  153. data/lib/sqa/cli.rb +0 -62
  154. data/lib/sqa/commands/analysis.rb +0 -309
  155. data/lib/sqa/commands/base.rb +0 -139
  156. data/lib/sqa/commands/web.rb +0 -199
  157. data/lib/sqa/commands.rb +0 -22
  158. data/lib/sqa/constants.rb +0 -23
  159. data/lib/sqa/indicator/average_true_range.rb +0 -33
  160. data/lib/sqa/indicator/bollinger_bands.rb +0 -28
  161. data/lib/sqa/indicator/candlestick_pattern_recognizer.rb +0 -60
  162. data/lib/sqa/indicator/donchian_channel.rb +0 -29
  163. data/lib/sqa/indicator/double_top_bottom_pattern.rb +0 -34
  164. data/lib/sqa/indicator/elliott_wave_theory.rb +0 -57
  165. data/lib/sqa/indicator/exponential_moving_average.rb +0 -25
  166. data/lib/sqa/indicator/exponential_moving_average_trend.rb +0 -36
  167. data/lib/sqa/indicator/fibonacci_retracement.rb +0 -23
  168. data/lib/sqa/indicator/head_and_shoulders_pattern.rb +0 -26
  169. data/lib/sqa/indicator/market_profile.rb +0 -32
  170. data/lib/sqa/indicator/mean_reversion.rb +0 -37
  171. data/lib/sqa/indicator/momentum.rb +0 -28
  172. data/lib/sqa/indicator/moving_average_convergence_divergence.rb +0 -29
  173. data/lib/sqa/indicator/peaks_and_valleys.rb +0 -29
  174. data/lib/sqa/indicator/predict_next_value.rb +0 -202
  175. data/lib/sqa/indicator/relative_strength_index.rb +0 -47
  176. data/lib/sqa/indicator/simple_moving_average.rb +0 -24
  177. data/lib/sqa/indicator/simple_moving_average_trend.rb +0 -32
  178. data/lib/sqa/indicator/stochastic_oscillator.rb +0 -68
  179. data/lib/sqa/indicator/true_range.rb +0 -39
  180. data/lib/sqa/trade.rb +0 -26
data/mkdocs.yml ADDED
@@ -0,0 +1,288 @@
1
+ # MkDocs Configuration for SQA Documentation
2
+ site_name: SQA - Simple Qualitative Analysis
3
+ site_description: A powerful Ruby library for stock market technical analysis and trading strategy development
4
+ site_author: Dewayne VanHoozer
5
+ site_url: https://madbomber.github.io/sqa
6
+ copyright: Copyright © 2024 Dewayne VanHoozer
7
+
8
+ # Repository information
9
+ repo_name: madbomber/sqa
10
+ repo_url: https://github.com/madbomber/sqa
11
+ edit_uri: edit/main/docs/
12
+
13
+ # Configuration
14
+ theme:
15
+ name: material
16
+
17
+ # Color scheme - Default to light mode
18
+ palette:
19
+ # Palette toggle for light mode (default)
20
+ - scheme: default
21
+ primary: indigo
22
+ accent: deep purple
23
+ toggle:
24
+ icon: material/brightness-7
25
+ name: Switch to dark mode
26
+
27
+ # Palette toggle for dark mode
28
+ - scheme: slate
29
+ primary: indigo
30
+ accent: deep purple
31
+ toggle:
32
+ icon: material/brightness-4
33
+ name: Switch to light mode
34
+
35
+ # Typography
36
+ font:
37
+ text: Roboto
38
+ code: Roboto Mono
39
+
40
+ # Logo and icon
41
+ icon:
42
+ repo: fontawesome/brands/github
43
+
44
+ # Theme features
45
+ features:
46
+ # Navigation
47
+ - navigation.instant
48
+ - navigation.tracking
49
+ - navigation.tabs
50
+ - navigation.tabs.sticky
51
+ - navigation.sections
52
+ - navigation.path
53
+ - navigation.indexes
54
+ - navigation.top
55
+ - navigation.footer
56
+
57
+ # Table of contents
58
+ - toc.follow
59
+ - toc.integrate
60
+
61
+ # Search
62
+ - search.suggest
63
+ - search.highlight
64
+ - search.share
65
+
66
+ # Header
67
+ - header.autohide
68
+
69
+ # Content
70
+ - content.code.copy
71
+ - content.code.annotate
72
+ - content.tabs.link
73
+ - content.tooltips
74
+ - content.action.edit
75
+ - content.action.view
76
+
77
+ # Announce
78
+ - announce.dismiss
79
+
80
+ # Plugins
81
+ plugins:
82
+ - search:
83
+ separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
84
+ - tags:
85
+ tags_file: tags.md
86
+
87
+ # Extensions
88
+ markdown_extensions:
89
+ # Python Markdown
90
+ - abbr
91
+ - admonition
92
+ - attr_list
93
+ - def_list
94
+ - footnotes
95
+ - md_in_html
96
+ - tables
97
+ - toc:
98
+ permalink: true
99
+ title: On this page
100
+ toc_depth: 3
101
+
102
+ # Python Markdown Extensions
103
+ - pymdownx.arithmatex:
104
+ generic: true
105
+ - pymdownx.betterem:
106
+ smart_enable: all
107
+ - pymdownx.caret
108
+ - pymdownx.critic
109
+ - pymdownx.details
110
+ - pymdownx.emoji:
111
+ emoji_generator: !!python/name:material.extensions.emoji.to_svg
112
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
113
+ - pymdownx.highlight:
114
+ anchor_linenums: true
115
+ line_spans: __span
116
+ pygments_lang_class: true
117
+ - pymdownx.inlinehilite
118
+ - pymdownx.keys
119
+ - pymdownx.magiclink:
120
+ repo_url_shorthand: true
121
+ user: madbomber
122
+ repo: sqa
123
+ - pymdownx.mark
124
+ - pymdownx.smartsymbols
125
+ - pymdownx.snippets:
126
+ check_paths: true
127
+ - pymdownx.superfences:
128
+ custom_fences:
129
+ - name: mermaid
130
+ class: mermaid
131
+ format: !!python/name:pymdownx.superfences.fence_code_format
132
+ - pymdownx.tabbed:
133
+ alternate_style: true
134
+ - pymdownx.tasklist:
135
+ custom_checkbox: true
136
+ - pymdownx.tilde
137
+
138
+ # Extra CSS and JavaScript
139
+ extra_css:
140
+ - assets/css/custom.css
141
+
142
+ extra_javascript:
143
+ - assets/js/mathjax.js
144
+ - https://polyfill.io/v3/polyfill.min.js?features=es6
145
+ - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
146
+
147
+ # Social media and extra configuration
148
+ extra:
149
+ social:
150
+ - icon: fontawesome/brands/github
151
+ link: https://github.com/madbomber/sqa
152
+ name: SQA on GitHub
153
+ - icon: fontawesome/solid/gem
154
+ link: https://rubygems.org/gems/sqa
155
+ name: SQA on RubyGems
156
+
157
+ version:
158
+ provider: mike
159
+
160
+ analytics:
161
+ feedback:
162
+ title: Was this page helpful?
163
+ ratings:
164
+ - icon: material/emoticon-happy-outline
165
+ name: This page was helpful
166
+ data: 1
167
+ note: >-
168
+ Thanks for your feedback!
169
+ - icon: material/emoticon-sad-outline
170
+ name: This page could be improved
171
+ data: 0
172
+ note: >-
173
+ Thanks for your feedback! Help us improve by creating an issue.
174
+
175
+ # Navigation
176
+ nav:
177
+ - Home: index.md
178
+ - Getting Started:
179
+ - getting-started/index.md
180
+ - Installation: getting-started/installation.md
181
+ - Quick Start: getting-started/quick-start.md
182
+ - Configuration: getting-started/configuration.md
183
+ - Console Usage: getting-started/console-usage.md
184
+
185
+ - Core Concepts:
186
+ - concepts/index.md
187
+ - Stock Objects: concepts/stock.md
188
+ - DataFrames: data_frame.md
189
+ - Technical Indicators: concepts/indicators.md
190
+ - Trading Strategies: strategy.md
191
+
192
+ - Technical Indicators:
193
+ - indicators/index.md
194
+ - Overview: indicators.md
195
+ - Moving Averages:
196
+ - Simple Moving Average: simple_moving_average.md
197
+ - Exponential Moving Average: exponential_moving_average.md
198
+ - Weighted Moving Average: weighted_moving_average.md
199
+ - Momentum Indicators:
200
+ - RSI (Relative Strength Index): relative_strength_index.md
201
+ - Momentum: momentum.md
202
+ - Stochastic Oscillator: stochastic_oscillator.md
203
+ - True Strength Index: true_strength_index.md
204
+ - Volatility Indicators:
205
+ - Bollinger Bands: bollinger_bands.md
206
+ - Average True Range: average_true_range.md
207
+ - True Range: true_range.md
208
+ - Donchian Channel: donchian_channel.md
209
+ - Trend Indicators:
210
+ - MACD: moving_average_convergence_divergence.md
211
+ - Market Profile: market_profile.md
212
+ - Pattern Recognition:
213
+ - Fibonacci Retracement: fibonacci_retracement.md
214
+ - Peaks and Valleys: peaks_and_valleys.md
215
+ - Candlestick Patterns: candlestick_pattern_recognizer.md
216
+ - Double Top/Bottom: double_top_bottom_pattern.md
217
+ - Head and Shoulders: head_and_shoulders_pattern.md
218
+
219
+ - Trading Strategies:
220
+ - strategies/index.md
221
+ - Built-in Strategies:
222
+ - Bollinger Bands Strategy: strategies/bollinger-bands.md
223
+ - RSI Strategy: strategies/rsi.md
224
+ - MACD Strategy: strategies/macd.md
225
+ - SMA Strategy: strategies/sma.md
226
+ - EMA Strategy: strategies/ema.md
227
+ - Stochastic Strategy: strategies/stochastic.md
228
+ - Volume Breakout: strategies/volume-breakout.md
229
+ - Mean Reversion: strategies/mean-reversion.md
230
+ - Market Profile: strategies/market-profile.md
231
+ - Consensus Strategy: strategies/consensus.md
232
+ - Advanced Strategies:
233
+ - Knowledge-Based Strategy (KBS): strategies/kbs.md
234
+ - Custom Strategies: strategies/custom.md
235
+
236
+ - Advanced Features:
237
+ - advanced/index.md
238
+ - Portfolio Management: advanced/portfolio.md
239
+ - Backtesting: advanced/backtesting.md
240
+ - Strategy Generator: advanced/strategy-generator.md
241
+ - Genetic Programming: genetic_programming.md
242
+ - Real-Time Streaming: advanced/streaming.md
243
+ - FPOP Analysis: advanced/fpop.md
244
+ - Risk Management: advanced/risk-management.md
245
+ - Portfolio Optimizer: advanced/portfolio-optimizer.md
246
+ - Ensemble Strategies: advanced/ensemble.md
247
+ - Multi-Timeframe Analysis: advanced/multi-timeframe.md
248
+ - Pattern Matcher: advanced/pattern-matcher.md
249
+
250
+ - AI & Machine Learning:
251
+ - ai_and_ml.md
252
+ - Predict Next Value: predict_next_value.md
253
+ - Identify Wave Condition: identify_wave_condition.md
254
+ - LIBSVM Format: libsvm_file_format.md
255
+
256
+ - API Reference:
257
+ - api/index.md
258
+ - SQA Module: api/sqa.md
259
+ - Stock Class: api/stock.md
260
+ - DataFrame Class: api/dataframe.md
261
+ - Strategy Framework: api/strategy.md
262
+ - Portfolio Class: api/portfolio.md
263
+ - Backtest Class: api/backtest.md
264
+ - Stream Class: api/stream.md
265
+
266
+ - Data Sources:
267
+ - data-sources/index.md
268
+ - Alpha Vantage: alpha_vantage_technical_indicators.md
269
+ - Data Format: data-sources/format.md
270
+ - Custom Data: data-sources/custom.md
271
+
272
+ - Resources:
273
+ - Tags: tags.md
274
+ - Requirements: requirements.md
275
+ - Terms of Use: terms_of_use.md
276
+ - Trading Ideas: i_gotta_an_idea.md
277
+ - Factor Analysis: factors_that_impact_price.md
278
+ - External Tools:
279
+ - TA-Lib: ta_lib.md
280
+ - FinViz: finviz.md
281
+ - FX Pro Bit: fx_pro_bit.md
282
+ - Options Trading: options.md
283
+
284
+ - Contributing:
285
+ - contributing/index.md
286
+ - Development Setup: contributing/setup.md
287
+ - Testing: contributing/testing.md
288
+ - Code Style: contributing/style.md
data/trace.log ADDED
File without changes