sqa 0.0.37 → 0.0.38

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +62 -0
  3. data/docs/api-reference/alphavantageapi.md +105 -105
  4. data/docs/api-reference/apierror.md +2 -2
  5. data/docs/api-reference/index.md +2 -2
  6. data/docs/api-reference/notimplemented.md +2 -2
  7. data/docs/api-reference/sqa.md +12 -12
  8. data/docs/api-reference/sqa_backtest.md +43 -9
  9. data/docs/api-reference/sqa_backtest_results.md +34 -34
  10. data/docs/api-reference/sqa_badparametererror.md +1 -1
  11. data/docs/api-reference/sqa_config.md +31 -31
  12. data/docs/api-reference/sqa_configurationerror.md +1 -1
  13. data/docs/api-reference/sqa_datafetcherror.md +3 -3
  14. data/docs/api-reference/sqa_dataframe.md +63 -36
  15. data/docs/api-reference/sqa_dataframe_alphavantage.md +2 -2
  16. data/docs/api-reference/sqa_dataframe_data.md +18 -18
  17. data/docs/api-reference/sqa_dataframe_yahoofinance.md +2 -2
  18. data/docs/api-reference/sqa_ensemble.md +21 -21
  19. data/docs/api-reference/sqa_fpop.md +8 -8
  20. data/docs/api-reference/sqa_geneticprogram.md +20 -20
  21. data/docs/api-reference/sqa_geneticprogram_individual.md +8 -8
  22. data/docs/api-reference/sqa_marketregime.md +10 -10
  23. data/docs/api-reference/sqa_multitimeframe.md +11 -11
  24. data/docs/api-reference/sqa_patternmatcher.md +9 -9
  25. data/docs/api-reference/sqa_pluginmanager.md +4 -4
  26. data/docs/api-reference/sqa_portfolio.md +84 -27
  27. data/docs/api-reference/sqa_portfolio_position.md +12 -12
  28. data/docs/api-reference/sqa_portfolio_trade.md +16 -16
  29. data/docs/api-reference/sqa_portfoliooptimizer.md +10 -10
  30. data/docs/api-reference/sqa_riskmanager.md +12 -12
  31. data/docs/api-reference/sqa_seasonalanalyzer.md +6 -6
  32. data/docs/api-reference/sqa_sectoranalyzer.md +9 -9
  33. data/docs/api-reference/sqa_stock.md +48 -36
  34. data/docs/api-reference/sqa_strategy.md +8 -8
  35. data/docs/api-reference/sqa_strategy_bollingerbands.md +2 -2
  36. data/docs/api-reference/sqa_strategy_common.md +3 -3
  37. data/docs/api-reference/sqa_strategy_consensus.md +12 -12
  38. data/docs/api-reference/sqa_strategy_ema.md +4 -4
  39. data/docs/api-reference/sqa_strategy_kbs.md +11 -11
  40. data/docs/api-reference/sqa_strategy_macd.md +2 -2
  41. data/docs/api-reference/sqa_strategy_mp.md +4 -4
  42. data/docs/api-reference/sqa_strategy_mr.md +4 -4
  43. data/docs/api-reference/sqa_strategy_random.md +4 -4
  44. data/docs/api-reference/sqa_strategy_rsi.md +4 -4
  45. data/docs/api-reference/sqa_strategy_sma.md +4 -4
  46. data/docs/api-reference/sqa_strategy_stochastic.md +2 -2
  47. data/docs/api-reference/sqa_strategy_volumebreakout.md +2 -2
  48. data/docs/api-reference/sqa_strategygenerator.md +19 -19
  49. data/docs/api-reference/sqa_strategygenerator_pattern.md +17 -17
  50. data/docs/api-reference/sqa_strategygenerator_patterncontext.md +21 -21
  51. data/docs/api-reference/sqa_strategygenerator_profitablepoint.md +27 -27
  52. data/docs/api-reference/sqa_stream.md +18 -18
  53. data/docs/api-reference/sqa_ticker.md +8 -8
  54. data/docs/api-reference/string.md +11 -11
  55. data/docs/file_formats.md +250 -0
  56. data/lib/sqa/backtest.rb +32 -0
  57. data/lib/sqa/data_frame.rb +25 -0
  58. data/lib/sqa/portfolio.rb +54 -0
  59. data/lib/sqa/stock.rb +11 -0
  60. data/lib/sqa/version.rb +1 -1
  61. data/mkdocs.yml +1 -0
  62. metadata +2 -2
  63. data/docs/IMPROVEMENT_PLAN.md +0 -531
@@ -4,7 +4,7 @@
4
4
  Represents a single trade
5
5
 
6
6
  !!! abstract "Source Information"
7
- **Defined in:** `lib/sqa/portfolio.rb:27`
7
+ **Defined in:** [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
8
8
 
9
9
  **Inherits from:** `Struct`
10
10
 
@@ -28,7 +28,7 @@ Sets the attribute ticker
28
28
  the newly set value
29
29
 
30
30
  ??? info "Source Location"
31
- `lib/sqa/portfolio.rb:27`
31
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
32
32
 
33
33
  ---
34
34
 
@@ -46,7 +46,7 @@ Returns the value of attribute ticker
46
46
  the current value of ticker
47
47
 
48
48
  ??? info "Source Location"
49
- `lib/sqa/portfolio.rb:27`
49
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
50
50
 
51
51
  ---
52
52
 
@@ -68,7 +68,7 @@ Sets the attribute action
68
68
  the newly set value
69
69
 
70
70
  ??? info "Source Location"
71
- `lib/sqa/portfolio.rb:27`
71
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
72
72
 
73
73
  ---
74
74
 
@@ -86,7 +86,7 @@ Returns the value of attribute action
86
86
  the current value of action
87
87
 
88
88
  ??? info "Source Location"
89
- `lib/sqa/portfolio.rb:27`
89
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
90
90
 
91
91
  ---
92
92
 
@@ -108,7 +108,7 @@ Sets the attribute shares
108
108
  the newly set value
109
109
 
110
110
  ??? info "Source Location"
111
- `lib/sqa/portfolio.rb:27`
111
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
112
112
 
113
113
  ---
114
114
 
@@ -126,7 +126,7 @@ Returns the value of attribute shares
126
126
  the current value of shares
127
127
 
128
128
  ??? info "Source Location"
129
- `lib/sqa/portfolio.rb:27`
129
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
130
130
 
131
131
  ---
132
132
 
@@ -148,7 +148,7 @@ Sets the attribute price
148
148
  the newly set value
149
149
 
150
150
  ??? info "Source Location"
151
- `lib/sqa/portfolio.rb:27`
151
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
152
152
 
153
153
  ---
154
154
 
@@ -166,7 +166,7 @@ Returns the value of attribute price
166
166
  the current value of price
167
167
 
168
168
  ??? info "Source Location"
169
- `lib/sqa/portfolio.rb:27`
169
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
170
170
 
171
171
  ---
172
172
 
@@ -188,7 +188,7 @@ Sets the attribute date
188
188
  the newly set value
189
189
 
190
190
  ??? info "Source Location"
191
- `lib/sqa/portfolio.rb:27`
191
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
192
192
 
193
193
  ---
194
194
 
@@ -206,7 +206,7 @@ Returns the value of attribute date
206
206
  the current value of date
207
207
 
208
208
  ??? info "Source Location"
209
- `lib/sqa/portfolio.rb:27`
209
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
210
210
 
211
211
  ---
212
212
 
@@ -228,7 +228,7 @@ Sets the attribute total
228
228
  the newly set value
229
229
 
230
230
  ??? info "Source Location"
231
- `lib/sqa/portfolio.rb:27`
231
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
232
232
 
233
233
  ---
234
234
 
@@ -246,7 +246,7 @@ Returns the value of attribute total
246
246
  the current value of total
247
247
 
248
248
  ??? info "Source Location"
249
- `lib/sqa/portfolio.rb:27`
249
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
250
250
 
251
251
  ---
252
252
 
@@ -268,7 +268,7 @@ Sets the attribute commission
268
268
  the newly set value
269
269
 
270
270
  ??? info "Source Location"
271
- `lib/sqa/portfolio.rb:27`
271
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
272
272
 
273
273
  ---
274
274
 
@@ -286,7 +286,7 @@ Returns the value of attribute commission
286
286
  the current value of commission
287
287
 
288
288
  ??? info "Source Location"
289
- `lib/sqa/portfolio.rb:27`
289
+ [`lib/sqa/portfolio.rb:27`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L27)
290
290
 
291
291
  ---
292
292
 
@@ -296,7 +296,7 @@ Returns the value of attribute commission
296
296
 
297
297
 
298
298
  ??? info "Source Location"
299
- `lib/sqa/portfolio.rb:28`
299
+ [`lib/sqa/portfolio.rb:28`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio.rb#L28)
300
300
 
301
301
  ---
302
302
 
@@ -12,7 +12,7 @@
12
12
  - Maximum Sharpe portfolio
13
13
 
14
14
  !!! abstract "Source Information"
15
- **Defined in:** `lib/sqa/portfolio_optimizer.rb:25`
15
+ **Defined in:** [`lib/sqa/portfolio_optimizer.rb:25`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L25)
16
16
 
17
17
  **Inherits from:** `Object`
18
18
 
@@ -37,7 +37,7 @@ Calculate portfolio returns given weights
37
37
  Portfolio returns over time
38
38
 
39
39
  ??? info "Source Location"
40
- `lib/sqa/portfolio_optimizer.rb:34`
40
+ [`lib/sqa/portfolio_optimizer.rb:34`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L34)
41
41
 
42
42
  ---
43
43
 
@@ -60,7 +60,7 @@ Calculate portfolio variance
60
60
  Portfolio variance
61
61
 
62
62
  ??? info "Source Location"
63
- `lib/sqa/portfolio_optimizer.rb:51`
63
+ [`lib/sqa/portfolio_optimizer.rb:51`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L51)
64
64
 
65
65
  ---
66
66
 
@@ -86,7 +86,7 @@ Uses numerical optimization to find weights that maximize Sharpe ratio.
86
86
  { weights: Array, sharpe: Float, return: Float, volatility: Float }
87
87
 
88
88
  ??? info "Source Location"
89
- `lib/sqa/portfolio_optimizer.rb:75`
89
+ [`lib/sqa/portfolio_optimizer.rb:75`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L75)
90
90
 
91
91
  ---
92
92
 
@@ -109,7 +109,7 @@ Find Minimum Variance portfolio
109
109
  { weights: Array, variance: Float, volatility: Float }
110
110
 
111
111
  ??? info "Source Location"
112
- `lib/sqa/portfolio_optimizer.rb:114`
112
+ [`lib/sqa/portfolio_optimizer.rb:114`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L114)
113
113
 
114
114
  ---
115
115
 
@@ -133,7 +133,7 @@ Allocate weights so each asset contributes equally to portfolio risk.
133
133
  { weights: Array, volatility: Float }
134
134
 
135
135
  ??? info "Source Location"
136
- `lib/sqa/portfolio_optimizer.rb:146`
136
+ [`lib/sqa/portfolio_optimizer.rb:146`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L146)
137
137
 
138
138
  ---
139
139
 
@@ -158,7 +158,7 @@ Generate portfolios along the efficient frontier.
158
158
  Array of portfolio hashes
159
159
 
160
160
  ??? info "Source Location"
161
- `lib/sqa/portfolio_optimizer.rb:175`
161
+ [`lib/sqa/portfolio_optimizer.rb:175`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L175)
162
162
 
163
163
  ---
164
164
 
@@ -194,7 +194,7 @@ Optimize portfolio for multiple objectives simultaneously.
194
194
  )
195
195
  ```
196
196
  ??? info "Source Location"
197
- `lib/sqa/portfolio_optimizer.rb:217`
197
+ [`lib/sqa/portfolio_optimizer.rb:217`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L217)
198
198
 
199
199
  ---
200
200
 
@@ -216,7 +216,7 @@ Equal weight portfolio (1/N rule)
216
216
  Equal weights
217
217
 
218
218
  ??? info "Source Location"
219
- `lib/sqa/portfolio_optimizer.rb:285`
219
+ [`lib/sqa/portfolio_optimizer.rb:285`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L285)
220
220
 
221
221
  ---
222
222
 
@@ -240,7 +240,7 @@ Rebalance portfolio to target weights
240
240
  Rebalancing trades { ticker => { action: :buy/:sell, shares: N, value: $ } }
241
241
 
242
242
  ??? info "Source Location"
243
- `lib/sqa/portfolio_optimizer.rb:298`
243
+ [`lib/sqa/portfolio_optimizer.rb:298`](https://github.com/madbomber/sqa/blob/main/lib/sqa/portfolio_optimizer.rb#L298)
244
244
 
245
245
  ---
246
246
 
@@ -11,7 +11,7 @@
11
11
  - Stop loss calculations
12
12
 
13
13
  !!! abstract "Source Information"
14
- **Defined in:** `lib/sqa/risk_manager.rb:29`
14
+ **Defined in:** [`lib/sqa/risk_manager.rb:29`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L29)
15
15
 
16
16
  **Inherits from:** `Object`
17
17
 
@@ -47,7 +47,7 @@ at a specified confidence level.
47
47
  # => -0.02 (2% maximum expected loss at 95% confidence)
48
48
  ```
49
49
  ??? info "Source Location"
50
- `lib/sqa/risk_manager.rb:48`
50
+ [`lib/sqa/risk_manager.rb:48`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L48)
51
51
 
52
52
  ---
53
53
 
@@ -78,7 +78,7 @@ It provides a more conservative risk measure than VaR.
78
78
  # => -0.025 (2.5% expected loss in worst 5% of cases)
79
79
  ```
80
80
  ??? info "Source Location"
81
- `lib/sqa/risk_manager.rb:77`
81
+ [`lib/sqa/risk_manager.rb:77`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L77)
82
82
 
83
83
  ---
84
84
 
@@ -124,7 +124,7 @@ where:
124
124
  )
125
125
  ```
126
126
  ??? info "Source Location"
127
- `lib/sqa/risk_manager.rb:116`
127
+ [`lib/sqa/risk_manager.rb:116`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L116)
128
128
 
129
129
  ---
130
130
 
@@ -155,7 +155,7 @@ Simple and conservative approach.
155
155
  # => 200.0 (risk $200 per trade)
156
156
  ```
157
157
  ??? info "Source Location"
158
- `lib/sqa/risk_manager.rb:146`
158
+ [`lib/sqa/risk_manager.rb:146`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L146)
159
159
 
160
160
  ---
161
161
 
@@ -192,7 +192,7 @@ Higher volatility = smaller position size.
192
192
  )
193
193
  ```
194
194
  ??? info "Source Location"
195
- `lib/sqa/risk_manager.rb:170`
195
+ [`lib/sqa/risk_manager.rb:170`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L170)
196
196
 
197
197
  ---
198
198
 
@@ -227,7 +227,7 @@ Calculate stop loss price based on ATR (Average True Range)
227
227
  # => 143.0 (stop at current - 2*ATR)
228
228
  ```
229
229
  ??? info "Source Location"
230
- `lib/sqa/risk_manager.rb:204`
230
+ [`lib/sqa/risk_manager.rb:204`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L204)
231
231
 
232
232
  ---
233
233
 
@@ -256,7 +256,7 @@ Drawdown is the peak-to-trough decline in portfolio value.
256
256
  # => { max_drawdown: -0.136, peak_idx: 1, trough_idx: 3 }
257
257
  ```
258
258
  ??? info "Source Location"
259
- `lib/sqa/risk_manager.rb:224`
259
+ [`lib/sqa/risk_manager.rb:224`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L224)
260
260
 
261
261
  ---
262
262
 
@@ -286,7 +286,7 @@ Measures risk-adjusted return (excess return per unit of risk).
286
286
  sharpe = SQA::RiskManager.sharpe_ratio(returns, risk_free_rate: 0.02)
287
287
  ```
288
288
  ??? info "Source Location"
289
- `lib/sqa/risk_manager.rb:269`
289
+ [`lib/sqa/risk_manager.rb:269`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L269)
290
290
 
291
291
  ---
292
292
 
@@ -316,7 +316,7 @@ Like Sharpe ratio but only penalizes downside volatility.
316
316
  sortino = SQA::RiskManager.sortino_ratio(returns)
317
317
  ```
318
318
  ??? info "Source Location"
319
- `lib/sqa/risk_manager.rb:294`
319
+ [`lib/sqa/risk_manager.rb:294`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L294)
320
320
 
321
321
  ---
322
322
 
@@ -345,7 +345,7 @@ Ratio of annualized return to maximum drawdown.
345
345
  calmar = SQA::RiskManager.calmar_ratio(returns)
346
346
  ```
347
347
  ??? info "Source Location"
348
- `lib/sqa/risk_manager.rb:325`
348
+ [`lib/sqa/risk_manager.rb:325`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L325)
349
349
 
350
350
  ---
351
351
 
@@ -380,7 +380,7 @@ Monte Carlo simulation for portfolio value
380
380
  puts "95th percentile: $#{results[:percentile_95]}"
381
381
  ```
382
382
  ??? info "Source Location"
383
- `lib/sqa/risk_manager.rb:360`
383
+ [`lib/sqa/risk_manager.rb:360`](https://github.com/madbomber/sqa/blob/main/lib/sqa/risk_manager.rb#L360)
384
384
 
385
385
  ---
386
386
 
@@ -1,7 +1,7 @@
1
1
  # 🔧 SQA::SeasonalAnalyzer
2
2
 
3
3
  !!! abstract "Source Information"
4
- **Defined in:** `lib/sqa/seasonal_analyzer.rb:18`
4
+ **Defined in:** [`lib/sqa/seasonal_analyzer.rb:18`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L18)
5
5
 
6
6
  ## 🏭 Class Methods
7
7
 
@@ -23,7 +23,7 @@ Analyze seasonal performance patterns
23
23
  Seasonal performance metadata
24
24
 
25
25
  ??? info "Source Location"
26
- `lib/sqa/seasonal_analyzer.rb:25`
26
+ [`lib/sqa/seasonal_analyzer.rb:25`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L25)
27
27
 
28
28
  ---
29
29
 
@@ -46,7 +46,7 @@ Filter data by calendar months
46
46
  Filtered data
47
47
 
48
48
  ??? info "Source Location"
49
- `lib/sqa/seasonal_analyzer.rb:56`
49
+ [`lib/sqa/seasonal_analyzer.rb:56`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L56)
50
50
 
51
51
  ---
52
52
 
@@ -69,7 +69,7 @@ Filter data by quarters
69
69
  Filtered data
70
70
 
71
71
  ??? info "Source Location"
72
- `lib/sqa/seasonal_analyzer.rb:82`
72
+ [`lib/sqa/seasonal_analyzer.rb:82`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L82)
73
73
 
74
74
  ---
75
75
 
@@ -91,7 +91,7 @@ Detect if stock has seasonal pattern
91
91
  True if significant seasonal pattern exists
92
92
 
93
93
  ??? info "Source Location"
94
- `lib/sqa/seasonal_analyzer.rb:99`
94
+ [`lib/sqa/seasonal_analyzer.rb:99`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L99)
95
95
 
96
96
  ---
97
97
 
@@ -113,7 +113,7 @@ Get seasonal context for a specific date
113
113
  Seasonal context
114
114
 
115
115
  ??? info "Source Location"
116
- `lib/sqa/seasonal_analyzer.rb:116`
116
+ [`lib/sqa/seasonal_analyzer.rb:116`](https://github.com/madbomber/sqa/blob/main/lib/sqa/seasonal_analyzer.rb#L116)
117
117
 
118
118
  ---
119
119
 
@@ -1,7 +1,7 @@
1
1
  # 📦 SQA::SectorAnalyzer
2
2
 
3
3
  !!! abstract "Source Information"
4
- **Defined in:** `lib/sqa/sector_analyzer.rb:26`
4
+ **Defined in:** [`lib/sqa/sector_analyzer.rb:26`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L26)
5
5
 
6
6
  **Inherits from:** `Object`
7
7
 
@@ -15,7 +15,7 @@ Returns the value of attribute blackboards.
15
15
 
16
16
 
17
17
  ??? info "Source Location"
18
- `lib/sqa/sector_analyzer.rb:40`
18
+ [`lib/sqa/sector_analyzer.rb:40`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L40)
19
19
 
20
20
  ---
21
21
 
@@ -27,7 +27,7 @@ Returns the value of attribute stocks_by_sector.
27
27
 
28
28
 
29
29
  ??? info "Source Location"
30
- `lib/sqa/sector_analyzer.rb:40`
30
+ [`lib/sqa/sector_analyzer.rb:40`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L40)
31
31
 
32
32
  ---
33
33
 
@@ -43,7 +43,7 @@ Returns the value of attribute stocks_by_sector.
43
43
  a new instance of SectorAnalyzer
44
44
 
45
45
  ??? info "Source Location"
46
- `lib/sqa/sector_analyzer.rb:42`
46
+ [`lib/sqa/sector_analyzer.rb:42`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L42)
47
47
 
48
48
  ---
49
49
 
@@ -60,7 +60,7 @@ Add a stock to sector analysis
60
60
 
61
61
 
62
62
  ??? info "Source Location"
63
- `lib/sqa/sector_analyzer.rb:62`
63
+ [`lib/sqa/sector_analyzer.rb:62`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L62)
64
64
 
65
65
  ---
66
66
 
@@ -84,7 +84,7 @@ Discover patterns for an entire sector
84
84
  Sector-wide patterns
85
85
 
86
86
  ??? info "Source Location"
87
- `lib/sqa/sector_analyzer.rb:86`
87
+ [`lib/sqa/sector_analyzer.rb:86`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L86)
88
88
 
89
89
  ---
90
90
 
@@ -107,7 +107,7 @@ Detect sector regime
107
107
  Sector regime information
108
108
 
109
109
  ??? info "Source Location"
110
- `lib/sqa/sector_analyzer.rb:146`
110
+ [`lib/sqa/sector_analyzer.rb:146`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L146)
111
111
 
112
112
  ---
113
113
 
@@ -131,7 +131,7 @@ Query sector blackboard
131
131
  Matching facts
132
132
 
133
133
  ??? info "Source Location"
134
- `lib/sqa/sector_analyzer.rb:190`
134
+ [`lib/sqa/sector_analyzer.rb:190`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L190)
135
135
 
136
136
  ---
137
137
 
@@ -147,7 +147,7 @@ Print sector summary
147
147
 
148
148
 
149
149
  ??? info "Source Location"
150
- `lib/sqa/sector_analyzer.rb:202`
150
+ [`lib/sqa/sector_analyzer.rb:202`](https://github.com/madbomber/sqa/blob/main/lib/sqa/sector_analyzer.rb#L202)
151
151
 
152
152
  ---
153
153