sqa 0.0.22 → 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 (183) 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 +86 -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 +833 -213
  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/checksums/sqa-0.0.23.gem.sha512 +1 -0
  17. data/checksums/sqa-0.0.24.gem.sha512 +1 -0
  18. data/data/talk_talk.json +103284 -0
  19. data/develop_summary.md +313 -0
  20. data/docs/advanced/backtesting.md +206 -0
  21. data/docs/advanced/ensemble.md +68 -0
  22. data/docs/advanced/fpop.md +153 -0
  23. data/docs/advanced/index.md +112 -0
  24. data/docs/advanced/multi-timeframe.md +67 -0
  25. data/docs/advanced/pattern-matcher.md +75 -0
  26. data/docs/advanced/portfolio-optimizer.md +79 -0
  27. data/docs/advanced/portfolio.md +166 -0
  28. data/docs/advanced/risk-management.md +210 -0
  29. data/docs/advanced/strategy-generator.md +158 -0
  30. data/docs/advanced/streaming.md +209 -0
  31. data/docs/ai_and_ml.md +80 -0
  32. data/docs/api/dataframe.md +1115 -0
  33. data/docs/api/index.md +126 -0
  34. data/docs/assets/css/custom.css +88 -0
  35. data/docs/assets/js/mathjax.js +18 -0
  36. data/docs/concepts/index.md +68 -0
  37. data/docs/contributing/index.md +60 -0
  38. data/docs/data-sources/index.md +66 -0
  39. data/docs/data_frame.md +317 -97
  40. data/docs/factors_that_impact_price.md +26 -0
  41. data/docs/finviz.md +11 -0
  42. data/docs/fx_pro_bit.md +25 -0
  43. data/docs/genetic_programming.md +104 -0
  44. data/docs/getting-started/index.md +123 -0
  45. data/docs/getting-started/installation.md +229 -0
  46. data/docs/getting-started/quick-start.md +244 -0
  47. data/docs/i_gotta_an_idea.md +22 -0
  48. data/docs/index.md +163 -0
  49. data/docs/indicators/index.md +97 -0
  50. data/docs/indicators.md +110 -24
  51. data/docs/options.md +8 -0
  52. data/docs/strategies/bollinger-bands.md +146 -0
  53. data/docs/strategies/consensus.md +64 -0
  54. data/docs/strategies/custom.md +310 -0
  55. data/docs/strategies/ema.md +53 -0
  56. data/docs/strategies/index.md +92 -0
  57. data/docs/strategies/kbs.md +164 -0
  58. data/docs/strategies/macd.md +96 -0
  59. data/docs/strategies/market-profile.md +54 -0
  60. data/docs/strategies/mean-reversion.md +58 -0
  61. data/docs/strategies/rsi.md +95 -0
  62. data/docs/strategies/sma.md +55 -0
  63. data/docs/strategies/stochastic.md +63 -0
  64. data/docs/strategies/volume-breakout.md +54 -0
  65. data/docs/ta_lib.md +160 -0
  66. data/docs/tags.md +7 -0
  67. data/docs/true_strength_index.md +46 -0
  68. data/docs/weighted_moving_average.md +48 -0
  69. data/examples/README.md +354 -0
  70. data/examples/advanced_features_example.rb +350 -0
  71. data/examples/fpop_analysis_example.rb +191 -0
  72. data/examples/genetic_programming_example.rb +148 -0
  73. data/examples/kbs_strategy_example.rb +208 -0
  74. data/examples/pattern_context_example.rb +300 -0
  75. data/examples/rails_app/Gemfile +34 -0
  76. data/examples/rails_app/README.md +416 -0
  77. data/examples/rails_app/app/assets/javascripts/application.js +107 -0
  78. data/examples/rails_app/app/assets/stylesheets/application.css +659 -0
  79. data/examples/rails_app/app/controllers/analysis_controller.rb +11 -0
  80. data/examples/rails_app/app/controllers/api/v1/stocks_controller.rb +227 -0
  81. data/examples/rails_app/app/controllers/application_controller.rb +22 -0
  82. data/examples/rails_app/app/controllers/backtest_controller.rb +11 -0
  83. data/examples/rails_app/app/controllers/dashboard_controller.rb +21 -0
  84. data/examples/rails_app/app/controllers/portfolio_controller.rb +7 -0
  85. data/examples/rails_app/app/views/analysis/show.html.erb +209 -0
  86. data/examples/rails_app/app/views/backtest/show.html.erb +171 -0
  87. data/examples/rails_app/app/views/dashboard/index.html.erb +118 -0
  88. data/examples/rails_app/app/views/dashboard/show.html.erb +408 -0
  89. data/examples/rails_app/app/views/errors/show.html.erb +17 -0
  90. data/examples/rails_app/app/views/layouts/application.html.erb +60 -0
  91. data/examples/rails_app/app/views/portfolio/index.html.erb +33 -0
  92. data/examples/rails_app/bin/rails +6 -0
  93. data/examples/rails_app/config/application.rb +45 -0
  94. data/examples/rails_app/config/boot.rb +5 -0
  95. data/examples/rails_app/config/database.yml +18 -0
  96. data/examples/rails_app/config/environment.rb +11 -0
  97. data/examples/rails_app/config/routes.rb +26 -0
  98. data/examples/rails_app/config.ru +8 -0
  99. data/examples/realtime_stream_example.rb +274 -0
  100. data/examples/sinatra_app/Gemfile +22 -0
  101. data/examples/sinatra_app/QUICKSTART.md +159 -0
  102. data/examples/sinatra_app/README.md +461 -0
  103. data/examples/sinatra_app/app.rb +344 -0
  104. data/examples/sinatra_app/config.ru +5 -0
  105. data/examples/sinatra_app/public/css/style.css +659 -0
  106. data/examples/sinatra_app/public/js/app.js +107 -0
  107. data/examples/sinatra_app/views/analyze.erb +306 -0
  108. data/examples/sinatra_app/views/backtest.erb +325 -0
  109. data/examples/sinatra_app/views/dashboard.erb +419 -0
  110. data/examples/sinatra_app/views/error.erb +58 -0
  111. data/examples/sinatra_app/views/index.erb +118 -0
  112. data/examples/sinatra_app/views/layout.erb +61 -0
  113. data/examples/sinatra_app/views/portfolio.erb +43 -0
  114. data/examples/strategy_generator_example.rb +346 -0
  115. data/hsa_portfolio.csv +11 -0
  116. data/justfile +0 -0
  117. data/lib/api/alpha_vantage_api.rb +462 -0
  118. data/lib/sqa/backtest.rb +329 -0
  119. data/lib/sqa/config.rb +22 -9
  120. data/lib/sqa/data_frame/alpha_vantage.rb +43 -65
  121. data/lib/sqa/data_frame/data.rb +92 -0
  122. data/lib/sqa/data_frame/yahoo_finance.rb +34 -41
  123. data/lib/sqa/data_frame.rb +148 -243
  124. data/lib/sqa/ensemble.rb +359 -0
  125. data/lib/sqa/fpop.rb +199 -0
  126. data/lib/sqa/gp.rb +259 -0
  127. data/lib/sqa/indicator.rb +5 -8
  128. data/lib/sqa/init.rb +16 -9
  129. data/lib/sqa/market_regime.rb +240 -0
  130. data/lib/sqa/multi_timeframe.rb +379 -0
  131. data/lib/sqa/pattern_matcher.rb +497 -0
  132. data/lib/sqa/plugin_manager.rb +20 -0
  133. data/lib/sqa/portfolio.rb +260 -6
  134. data/lib/sqa/portfolio_optimizer.rb +377 -0
  135. data/lib/sqa/risk_manager.rb +442 -0
  136. data/lib/sqa/seasonal_analyzer.rb +209 -0
  137. data/lib/sqa/sector_analyzer.rb +300 -0
  138. data/lib/sqa/stock.rb +67 -96
  139. data/lib/sqa/strategy/bollinger_bands.rb +42 -0
  140. data/lib/sqa/strategy/common.rb +0 -2
  141. data/lib/sqa/strategy/consensus.rb +5 -2
  142. data/lib/sqa/strategy/kbs_strategy.rb +470 -0
  143. data/lib/sqa/strategy/macd.rb +46 -0
  144. data/lib/sqa/strategy/mp.rb +1 -1
  145. data/lib/sqa/strategy/stochastic.rb +60 -0
  146. data/lib/sqa/strategy/volume_breakout.rb +57 -0
  147. data/lib/sqa/strategy.rb +5 -0
  148. data/lib/sqa/strategy_generator.rb +947 -0
  149. data/lib/sqa/stream.rb +361 -0
  150. data/lib/sqa/version.rb +1 -7
  151. data/lib/sqa.rb +41 -14
  152. data/main.just +81 -0
  153. data/mkdocs.yml +288 -0
  154. data/trace.log +0 -0
  155. metadata +279 -48
  156. data/bin/sqa +0 -6
  157. data/lib/sqa/activity.rb +0 -10
  158. data/lib/sqa/analysis.rb +0 -306
  159. data/lib/sqa/cli.rb +0 -173
  160. data/lib/sqa/constants.rb +0 -23
  161. data/lib/sqa/indicator/average_true_range.rb +0 -43
  162. data/lib/sqa/indicator/bollinger_bands.rb +0 -28
  163. data/lib/sqa/indicator/candlestick_pattern_recognizer.rb +0 -60
  164. data/lib/sqa/indicator/donchian_channel.rb +0 -29
  165. data/lib/sqa/indicator/double_top_bottom_pattern.rb +0 -34
  166. data/lib/sqa/indicator/elliott_wave_theory.rb +0 -57
  167. data/lib/sqa/indicator/exponential_moving_average.rb +0 -25
  168. data/lib/sqa/indicator/exponential_moving_average_trend.rb +0 -36
  169. data/lib/sqa/indicator/fibonacci_retracement.rb +0 -23
  170. data/lib/sqa/indicator/head_and_shoulders_pattern.rb +0 -26
  171. data/lib/sqa/indicator/market_profile.rb +0 -32
  172. data/lib/sqa/indicator/mean_reversion.rb +0 -37
  173. data/lib/sqa/indicator/momentum.rb +0 -28
  174. data/lib/sqa/indicator/moving_average_convergence_divergence.rb +0 -29
  175. data/lib/sqa/indicator/peaks_and_valleys.rb +0 -29
  176. data/lib/sqa/indicator/predict_next_value.rb +0 -202
  177. data/lib/sqa/indicator/relative_strength_index.rb +0 -47
  178. data/lib/sqa/indicator/simple_moving_average.rb +0 -24
  179. data/lib/sqa/indicator/simple_moving_average_trend.rb +0 -32
  180. data/lib/sqa/indicator/stochastic_oscillator.rb +0 -68
  181. data/lib/sqa/indicator/true_range.rb +0 -39
  182. data/lib/sqa/trade.rb +0 -26
  183. data/lib/sqa/web.rb +0 -159
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-10-25 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: alphavantage
@@ -25,7 +24,7 @@ dependencies:
25
24
  - !ruby/object:Gem::Version
26
25
  version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
- name: api_key_manager
27
+ name: csv
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
@@ -56,16 +55,30 @@ dependencies:
56
55
  name: hashie
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - "~>"
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: 4.1.0
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: kbs
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
62
75
  type: :runtime
63
76
  prerelease: false
64
77
  version_requirements: !ruby/object:Gem::Requirement
65
78
  requirements:
66
- - - "~>"
79
+ - - ">="
67
80
  - !ruby/object:Gem::Version
68
- version: 4.1.0
81
+ version: '0'
69
82
  - !ruby/object:Gem::Dependency
70
83
  name: lite-statistics
71
84
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +108,21 @@ dependencies:
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  - !ruby/object:Gem::Dependency
98
- name: sem_version
111
+ name: redis
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: ruby_llm
99
126
  requirement: !ruby/object:Gem::Requirement
100
127
  requirements:
101
128
  - - ">="
@@ -109,7 +136,35 @@ dependencies:
109
136
  - !ruby/object:Gem::Version
110
137
  version: '0'
111
138
  - !ruby/object:Gem::Dependency
112
- name: tty-option
139
+ name: ruby_llm-mcp
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: shared_tools
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: sqa-tai
113
168
  requirement: !ruby/object:Gem::Requirement
114
169
  requirements:
115
170
  - - ">="
@@ -136,6 +191,62 @@ dependencies:
136
191
  - - ">="
137
192
  - !ruby/object:Gem::Version
138
193
  version: '0'
194
+ - !ruby/object:Gem::Dependency
195
+ name: eps
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ - !ruby/object:Gem::Dependency
209
+ name: polars-df
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :runtime
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: toml-rb
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ type: :runtime
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ - !ruby/object:Gem::Dependency
237
+ name: regent
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: '0'
243
+ type: :runtime
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
139
250
  - !ruby/object:Gem::Dependency
140
251
  name: amazing_print
141
252
  requirement: !ruby/object:Gem::Requirement
@@ -193,7 +304,7 @@ dependencies:
193
304
  - !ruby/object:Gem::Version
194
305
  version: '0'
195
306
  - !ruby/object:Gem::Dependency
196
- name: tocer
307
+ name: rake
197
308
  requirement: !ruby/object:Gem::Requirement
198
309
  requirements:
199
310
  - - ">="
@@ -207,7 +318,21 @@ dependencies:
207
318
  - !ruby/object:Gem::Version
208
319
  version: '0'
209
320
  - !ruby/object:Gem::Dependency
210
- name: rake
321
+ name: simplecov
322
+ requirement: !ruby/object:Gem::Requirement
323
+ requirements:
324
+ - - ">="
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
327
+ type: :development
328
+ prerelease: false
329
+ version_requirements: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
334
+ - !ruby/object:Gem::Dependency
335
+ name: tocer
211
336
  requirement: !ruby/object:Gem::Requirement
212
337
  requirements:
213
338
  - - ">="
@@ -220,22 +345,34 @@ dependencies:
220
345
  - - ">="
221
346
  - !ruby/object:Gem::Version
222
347
  version: '0'
223
- description: Simplistic playpen (e.g. not for serious use) for doing technical analysis
224
- of stock prices.
348
+ description: |
349
+ Simplistic playpen (e.g. not for serious use) for doing
350
+ technical analysis of stock prices. Under Construction.
225
351
  email:
226
352
  - dvanhoozer@gmail.com
227
353
  executables:
228
- - sqa
354
+ - sqa-console
229
355
  extensions: []
230
356
  extra_rdoc_files: []
231
357
  files:
232
358
  - ".config/tocer/configuration.yml"
233
359
  - ".envrc"
360
+ - ".goose/memory/development.txt"
361
+ - ".semver"
362
+ - ARCHITECTURE.md
234
363
  - CHANGELOG.md
364
+ - CLAUDE.md
365
+ - COMMITS.md
366
+ - DATAFRAME_ARCHITECTURE_REVIEW.md
235
367
  - LICENSE
368
+ - NEXT-STEPS.md
236
369
  - README.md
237
370
  - Rakefile
238
- - bin/sqa
371
+ - TASKS.md
372
+ - TEST_RESULTS.md
373
+ - TODO.md
374
+ - _notes.txt
375
+ - bin/sqa-console
239
376
  - checksums/sqa-0.0.1.gem.sha512
240
377
  - checksums/sqa-0.0.10.gem.sha512
241
378
  - checksums/sqa-0.0.11.gem.sha512
@@ -249,6 +386,8 @@ files:
249
386
  - checksums/sqa-0.0.20.gem.sha512
250
387
  - checksums/sqa-0.0.21.gem.sha512
251
388
  - checksums/sqa-0.0.22.gem.sha512
389
+ - checksums/sqa-0.0.23.gem.sha512
390
+ - checksums/sqa-0.0.24.gem.sha512
252
391
  - checksums/sqa-0.0.3.gem.sha512
253
392
  - checksums/sqa-0.0.4.gem.sha512
254
393
  - checksums/sqa-0.0.5.gem.sha512
@@ -256,85 +395,179 @@ files:
256
395
  - checksums/sqa-0.0.7.gem.sha512
257
396
  - checksums/sqa-0.0.8.gem.sha512
258
397
  - checksums/sqa-0.0.9.gem.sha512
398
+ - data/talk_talk.json
399
+ - develop_summary.md
259
400
  - docs/.gitignore
260
401
  - docs/README.md
402
+ - docs/advanced/backtesting.md
403
+ - docs/advanced/ensemble.md
404
+ - docs/advanced/fpop.md
405
+ - docs/advanced/index.md
406
+ - docs/advanced/multi-timeframe.md
407
+ - docs/advanced/pattern-matcher.md
408
+ - docs/advanced/portfolio-optimizer.md
409
+ - docs/advanced/portfolio.md
410
+ - docs/advanced/risk-management.md
411
+ - docs/advanced/strategy-generator.md
412
+ - docs/advanced/streaming.md
413
+ - docs/ai_and_ml.md
261
414
  - docs/alpha_vantage_technical_indicators.md
415
+ - docs/api/dataframe.md
416
+ - docs/api/index.md
417
+ - docs/assets/css/custom.css
418
+ - docs/assets/js/mathjax.js
262
419
  - docs/average_true_range.md
263
420
  - docs/bollinger_bands.md
264
421
  - docs/candlestick_pattern_recognizer.md
422
+ - docs/concepts/index.md
423
+ - docs/contributing/index.md
424
+ - docs/data-sources/index.md
265
425
  - docs/data_frame.md
266
426
  - docs/donchian_channel.md
267
427
  - docs/double_top_bottom_pattern.md
268
428
  - docs/exponential_moving_average.md
429
+ - docs/factors_that_impact_price.md
269
430
  - docs/fibonacci_retracement.md
431
+ - docs/finviz.md
432
+ - docs/fx_pro_bit.md
433
+ - docs/genetic_programming.md
434
+ - docs/getting-started/index.md
435
+ - docs/getting-started/installation.md
436
+ - docs/getting-started/quick-start.md
270
437
  - docs/head_and_shoulders_pattern.md
438
+ - docs/i_gotta_an_idea.md
271
439
  - docs/identify_wave_condition.md
440
+ - docs/index.md
272
441
  - docs/indicators.md
442
+ - docs/indicators/index.md
273
443
  - docs/libsvm_file_format.md
274
444
  - docs/market_profile.md
275
445
  - docs/mean_reversion.md
276
446
  - docs/momentum.md
277
447
  - docs/moving_average_convergence_divergence.md
448
+ - docs/options.md
278
449
  - docs/peaks_and_valleys.md
279
450
  - docs/predict_next_value.md
280
451
  - docs/relative_strength_index.md
281
452
  - docs/requirements.md
282
453
  - docs/simple_moving_average.md
283
454
  - docs/stochastic_oscillator.md
455
+ - docs/strategies/bollinger-bands.md
456
+ - docs/strategies/consensus.md
457
+ - docs/strategies/custom.md
458
+ - docs/strategies/ema.md
459
+ - docs/strategies/index.md
460
+ - docs/strategies/kbs.md
461
+ - docs/strategies/macd.md
462
+ - docs/strategies/market-profile.md
463
+ - docs/strategies/mean-reversion.md
464
+ - docs/strategies/rsi.md
465
+ - docs/strategies/sma.md
466
+ - docs/strategies/stochastic.md
467
+ - docs/strategies/volume-breakout.md
284
468
  - docs/strategy.md
469
+ - docs/ta_lib.md
470
+ - docs/tags.md
285
471
  - docs/terms_of_use.md
286
472
  - docs/true_range.md
473
+ - docs/true_strength_index.md
474
+ - docs/weighted_moving_average.md
475
+ - examples/README.md
476
+ - examples/advanced_features_example.rb
477
+ - examples/fpop_analysis_example.rb
478
+ - examples/genetic_programming_example.rb
479
+ - examples/kbs_strategy_example.rb
480
+ - examples/pattern_context_example.rb
481
+ - examples/rails_app/Gemfile
482
+ - examples/rails_app/README.md
483
+ - examples/rails_app/app/assets/javascripts/application.js
484
+ - examples/rails_app/app/assets/stylesheets/application.css
485
+ - examples/rails_app/app/controllers/analysis_controller.rb
486
+ - examples/rails_app/app/controllers/api/v1/stocks_controller.rb
487
+ - examples/rails_app/app/controllers/application_controller.rb
488
+ - examples/rails_app/app/controllers/backtest_controller.rb
489
+ - examples/rails_app/app/controllers/dashboard_controller.rb
490
+ - examples/rails_app/app/controllers/portfolio_controller.rb
491
+ - examples/rails_app/app/views/analysis/show.html.erb
492
+ - examples/rails_app/app/views/backtest/show.html.erb
493
+ - examples/rails_app/app/views/dashboard/index.html.erb
494
+ - examples/rails_app/app/views/dashboard/show.html.erb
495
+ - examples/rails_app/app/views/errors/show.html.erb
496
+ - examples/rails_app/app/views/layouts/application.html.erb
497
+ - examples/rails_app/app/views/portfolio/index.html.erb
498
+ - examples/rails_app/bin/rails
499
+ - examples/rails_app/config.ru
500
+ - examples/rails_app/config/application.rb
501
+ - examples/rails_app/config/boot.rb
502
+ - examples/rails_app/config/database.yml
503
+ - examples/rails_app/config/environment.rb
504
+ - examples/rails_app/config/routes.rb
505
+ - examples/realtime_stream_example.rb
506
+ - examples/sinatra_app/Gemfile
507
+ - examples/sinatra_app/QUICKSTART.md
508
+ - examples/sinatra_app/README.md
509
+ - examples/sinatra_app/app.rb
510
+ - examples/sinatra_app/config.ru
511
+ - examples/sinatra_app/public/css/style.css
512
+ - examples/sinatra_app/public/js/app.js
513
+ - examples/sinatra_app/views/analyze.erb
514
+ - examples/sinatra_app/views/backtest.erb
515
+ - examples/sinatra_app/views/dashboard.erb
516
+ - examples/sinatra_app/views/error.erb
517
+ - examples/sinatra_app/views/index.erb
518
+ - examples/sinatra_app/views/layout.erb
519
+ - examples/sinatra_app/views/portfolio.erb
520
+ - examples/strategy_generator_example.rb
521
+ - hsa_portfolio.csv
522
+ - justfile
523
+ - lib/api/alpha_vantage_api.rb
287
524
  - lib/patches/string.rb
288
525
  - lib/sqa.rb
289
- - lib/sqa/activity.rb
290
- - lib/sqa/analysis.rb
291
- - lib/sqa/cli.rb
526
+ - lib/sqa/backtest.rb
292
527
  - lib/sqa/config.rb
293
- - lib/sqa/constants.rb
294
528
  - lib/sqa/data_frame.rb
295
529
  - lib/sqa/data_frame/alpha_vantage.rb
530
+ - lib/sqa/data_frame/data.rb
296
531
  - lib/sqa/data_frame/yahoo_finance.rb
532
+ - lib/sqa/ensemble.rb
297
533
  - lib/sqa/errors.rb
534
+ - lib/sqa/fpop.rb
535
+ - lib/sqa/gp.rb
298
536
  - lib/sqa/indicator.rb
299
- - lib/sqa/indicator/average_true_range.rb
300
- - lib/sqa/indicator/bollinger_bands.rb
301
- - lib/sqa/indicator/candlestick_pattern_recognizer.rb
302
- - lib/sqa/indicator/donchian_channel.rb
303
- - lib/sqa/indicator/double_top_bottom_pattern.rb
304
- - lib/sqa/indicator/elliott_wave_theory.rb
305
- - lib/sqa/indicator/exponential_moving_average.rb
306
- - lib/sqa/indicator/exponential_moving_average_trend.rb
307
- - lib/sqa/indicator/fibonacci_retracement.rb
308
- - lib/sqa/indicator/head_and_shoulders_pattern.rb
309
- - lib/sqa/indicator/market_profile.rb
310
- - lib/sqa/indicator/mean_reversion.rb
311
- - lib/sqa/indicator/momentum.rb
312
- - lib/sqa/indicator/moving_average_convergence_divergence.rb
313
- - lib/sqa/indicator/peaks_and_valleys.rb
314
- - lib/sqa/indicator/predict_next_value.rb
315
- - lib/sqa/indicator/relative_strength_index.rb
316
- - lib/sqa/indicator/simple_moving_average.rb
317
- - lib/sqa/indicator/simple_moving_average_trend.rb
318
- - lib/sqa/indicator/stochastic_oscillator.rb
319
- - lib/sqa/indicator/true_range.rb
320
537
  - lib/sqa/init.rb
538
+ - lib/sqa/market_regime.rb
539
+ - lib/sqa/multi_timeframe.rb
540
+ - lib/sqa/pattern_matcher.rb
541
+ - lib/sqa/plugin_manager.rb
321
542
  - lib/sqa/portfolio.rb
543
+ - lib/sqa/portfolio_optimizer.rb
544
+ - lib/sqa/risk_manager.rb
545
+ - lib/sqa/seasonal_analyzer.rb
546
+ - lib/sqa/sector_analyzer.rb
322
547
  - lib/sqa/stock.rb
323
548
  - lib/sqa/strategy.rb
324
549
  - lib/sqa/strategy/README.md
550
+ - lib/sqa/strategy/bollinger_bands.rb
325
551
  - lib/sqa/strategy/common.rb
326
552
  - lib/sqa/strategy/consensus.rb
327
553
  - lib/sqa/strategy/ema.rb
554
+ - lib/sqa/strategy/kbs_strategy.rb
555
+ - lib/sqa/strategy/macd.rb
328
556
  - lib/sqa/strategy/mp.rb
329
557
  - lib/sqa/strategy/mr.rb
330
558
  - lib/sqa/strategy/random.md
331
559
  - lib/sqa/strategy/random.rb
332
560
  - lib/sqa/strategy/rsi.rb
333
561
  - lib/sqa/strategy/sma.rb
562
+ - lib/sqa/strategy/stochastic.rb
563
+ - lib/sqa/strategy/volume_breakout.rb
564
+ - lib/sqa/strategy_generator.rb
565
+ - lib/sqa/stream.rb
334
566
  - lib/sqa/ticker.rb
335
- - lib/sqa/trade.rb
336
567
  - lib/sqa/version.rb
337
- - lib/sqa/web.rb
568
+ - main.just
569
+ - mkdocs.yml
570
+ - trace.log
338
571
  homepage: https://github.com/MadBomber/sqa
339
572
  licenses:
340
573
  - MIT
@@ -343,7 +576,6 @@ metadata:
343
576
  homepage_uri: https://github.com/MadBomber/sqa
344
577
  source_code_uri: https://github.com/MadBomber/sqa
345
578
  changelog_uri: https://github.com/MadBomber/sqa
346
- post_install_message:
347
579
  rdoc_options: []
348
580
  require_paths:
349
581
  - lib
@@ -351,15 +583,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
351
583
  requirements:
352
584
  - - ">="
353
585
  - !ruby/object:Gem::Version
354
- version: '2.7'
586
+ version: '3.2'
355
587
  required_rubygems_version: !ruby/object:Gem::Requirement
356
588
  requirements:
357
589
  - - ">="
358
590
  - !ruby/object:Gem::Version
359
591
  version: '0'
360
592
  requirements: []
361
- rubygems_version: 3.4.21
362
- signing_key:
593
+ rubygems_version: 3.7.2
363
594
  specification_version: 4
364
- summary: sqa - Stock Qualitative Analysis
595
+ summary: sqa - Simple Qualitative Analysis
365
596
  test_files: []
data/bin/sqa DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'sqa'
4
- require 'sqa/cli'
5
-
6
- SQA.init
data/lib/sqa/activity.rb DELETED
@@ -1,10 +0,0 @@
1
- # lib/sqa/activity.rb
2
-
3
- # Historical daily stock activity
4
- # primary id is [ticker, date]
5
-
6
- class SQA::Activity < ActiveRecord::Base
7
- # belongs_to :stock using ticker as the foreign key
8
- # need a unique constraint on [ticker, date]
9
- # should date be saved as a Date object or string?
10
- end