sqa 0.0.32 → 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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +154 -1
  3. data/README.md +4 -0
  4. data/Rakefile +52 -10
  5. data/docs/advanced/index.md +1 -13
  6. data/docs/api/index.md +547 -61
  7. data/docs/api-reference/alphavantageapi.md +1057 -0
  8. data/docs/api-reference/apierror.md +31 -0
  9. data/docs/api-reference/index.md +221 -0
  10. data/docs/api-reference/notimplemented.md +27 -0
  11. data/docs/api-reference/sqa.md +267 -0
  12. data/docs/api-reference/sqa_backtest.md +171 -0
  13. data/docs/api-reference/sqa_backtest_results.md +530 -0
  14. data/docs/api-reference/sqa_badparametererror.md +13 -0
  15. data/docs/api-reference/sqa_config.md +538 -0
  16. data/docs/api-reference/sqa_configurationerror.md +13 -0
  17. data/docs/api-reference/sqa_datafetcherror.md +56 -0
  18. data/docs/api-reference/sqa_dataframe.md +779 -0
  19. data/docs/api-reference/sqa_dataframe_alphavantage.md +30 -0
  20. data/docs/api-reference/sqa_dataframe_data.md +325 -0
  21. data/docs/api-reference/sqa_dataframe_yahoofinance.md +25 -0
  22. data/docs/api-reference/sqa_ensemble.md +413 -0
  23. data/docs/api-reference/sqa_fpop.md +211 -0
  24. data/docs/api-reference/sqa_geneticprogram.md +325 -0
  25. data/docs/api-reference/sqa_geneticprogram_individual.md +114 -0
  26. data/docs/api-reference/sqa_marketregime.md +212 -0
  27. data/docs/api-reference/sqa_multitimeframe.md +227 -0
  28. data/docs/api-reference/sqa_patternmatcher.md +195 -0
  29. data/docs/api-reference/sqa_pluginmanager.md +55 -0
  30. data/docs/api-reference/sqa_portfolio.md +512 -0
  31. data/docs/api-reference/sqa_portfolio_position.md +220 -0
  32. data/docs/api-reference/sqa_portfolio_trade.md +332 -0
  33. data/docs/api-reference/sqa_portfoliooptimizer.md +248 -0
  34. data/docs/api-reference/sqa_riskmanager.md +388 -0
  35. data/docs/api-reference/sqa_seasonalanalyzer.md +121 -0
  36. data/docs/api-reference/sqa_sectoranalyzer.md +163 -0
  37. data/docs/api-reference/sqa_stock.md +661 -0
  38. data/docs/api-reference/sqa_strategy.md +178 -0
  39. data/docs/api-reference/sqa_strategy_bollingerbands.md +26 -0
  40. data/docs/api-reference/sqa_strategy_common.md +29 -0
  41. data/docs/api-reference/sqa_strategy_consensus.md +129 -0
  42. data/docs/api-reference/sqa_strategy_ema.md +41 -0
  43. data/docs/api-reference/sqa_strategy_kbs.md +154 -0
  44. data/docs/api-reference/sqa_strategy_macd.md +26 -0
  45. data/docs/api-reference/sqa_strategy_mp.md +41 -0
  46. data/docs/api-reference/sqa_strategy_mr.md +41 -0
  47. data/docs/api-reference/sqa_strategy_random.md +41 -0
  48. data/docs/api-reference/sqa_strategy_rsi.md +41 -0
  49. data/docs/api-reference/sqa_strategy_sma.md +41 -0
  50. data/docs/api-reference/sqa_strategy_stochastic.md +26 -0
  51. data/docs/api-reference/sqa_strategy_volumebreakout.md +26 -0
  52. data/docs/api-reference/sqa_strategygenerator.md +298 -0
  53. data/docs/api-reference/sqa_strategygenerator_pattern.md +264 -0
  54. data/docs/api-reference/sqa_strategygenerator_patterncontext.md +326 -0
  55. data/docs/api-reference/sqa_strategygenerator_profitablepoint.md +424 -0
  56. data/docs/api-reference/sqa_stream.md +256 -0
  57. data/docs/api-reference/sqa_ticker.md +175 -0
  58. data/docs/api-reference/string.md +135 -0
  59. data/docs/assets/images/advanced-workflow.svg +89 -0
  60. data/docs/assets/images/architecture.svg +107 -0
  61. data/docs/assets/images/data-flow.svg +138 -0
  62. data/docs/assets/images/getting-started-workflow.svg +88 -0
  63. data/docs/assets/images/strategy-flow.svg +78 -0
  64. data/docs/assets/images/system-architecture.svg +150 -0
  65. data/docs/concepts/index.md +292 -19
  66. data/docs/file_formats.md +250 -0
  67. data/docs/getting-started/index.md +1 -14
  68. data/docs/index.md +26 -23
  69. data/docs/llms.txt +109 -0
  70. data/docs/strategies/kbs.md +15 -14
  71. data/docs/strategy.md +381 -3
  72. data/docs/terms_of_use.md +1 -1
  73. data/examples/README.md +10 -0
  74. data/lib/api/alpha_vantage_api.rb +3 -7
  75. data/lib/sqa/backtest.rb +32 -0
  76. data/lib/sqa/config.rb +109 -28
  77. data/lib/sqa/data_frame/data.rb +13 -1
  78. data/lib/sqa/data_frame.rb +193 -26
  79. data/lib/sqa/errors.rb +79 -17
  80. data/lib/sqa/init.rb +70 -15
  81. data/lib/sqa/pattern_matcher.rb +4 -4
  82. data/lib/sqa/portfolio.rb +55 -1
  83. data/lib/sqa/sector_analyzer.rb +3 -11
  84. data/lib/sqa/stock.rb +180 -15
  85. data/lib/sqa/strategy.rb +62 -4
  86. data/lib/sqa/ticker.rb +106 -48
  87. data/lib/sqa/version.rb +1 -1
  88. data/lib/sqa.rb +4 -4
  89. data/mkdocs.yml +69 -81
  90. metadata +89 -21
  91. data/docs/README.md +0 -43
  92. data/examples/sinatra_app/Gemfile +0 -42
  93. data/examples/sinatra_app/Gemfile.lock +0 -268
  94. data/examples/sinatra_app/QUICKSTART.md +0 -169
  95. data/examples/sinatra_app/README.md +0 -471
  96. data/examples/sinatra_app/RUNNING_WITHOUT_TALIB.md +0 -90
  97. data/examples/sinatra_app/TROUBLESHOOTING.md +0 -95
  98. data/examples/sinatra_app/app.rb +0 -404
  99. data/examples/sinatra_app/config.ru +0 -5
  100. data/examples/sinatra_app/public/css/style.css +0 -723
  101. data/examples/sinatra_app/public/debug_macd.html +0 -82
  102. data/examples/sinatra_app/public/js/app.js +0 -107
  103. data/examples/sinatra_app/start.sh +0 -53
  104. data/examples/sinatra_app/views/analyze.erb +0 -306
  105. data/examples/sinatra_app/views/backtest.erb +0 -325
  106. data/examples/sinatra_app/views/dashboard.erb +0 -831
  107. data/examples/sinatra_app/views/error.erb +0 -58
  108. data/examples/sinatra_app/views/index.erb +0 -118
  109. data/examples/sinatra_app/views/layout.erb +0 -61
  110. data/examples/sinatra_app/views/portfolio.erb +0 -43
@@ -1,58 +0,0 @@
1
- <div class="error-page">
2
- <div class="error-container">
3
- <div class="error-icon">
4
- <i class="fas fa-exclamation-triangle"></i>
5
- </div>
6
- <h1>Oops! Something went wrong</h1>
7
- <p class="error-message"><%= @error %></p>
8
- <div class="error-actions">
9
- <a href="/" class="btn btn-primary">
10
- <i class="fas fa-home"></i> Back to Home
11
- </a>
12
- <button onclick="history.back()" class="btn btn-secondary">
13
- <i class="fas fa-arrow-left"></i> Go Back
14
- </button>
15
- </div>
16
- </div>
17
- </div>
18
-
19
- <style>
20
- .error-page {
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- min-height: 70vh;
25
- padding: 2rem;
26
- }
27
-
28
- .error-container {
29
- text-align: center;
30
- max-width: 600px;
31
- }
32
-
33
- .error-icon {
34
- font-size: 6rem;
35
- color: var(--danger-color);
36
- margin-bottom: 2rem;
37
- }
38
-
39
- .error-page h1 {
40
- font-size: 2.5rem;
41
- color: var(--text-primary);
42
- margin-bottom: 1rem;
43
- }
44
-
45
- .error-message {
46
- font-size: 1.25rem;
47
- color: var(--text-secondary);
48
- margin-bottom: 2rem;
49
- line-height: 1.6;
50
- }
51
-
52
- .error-actions {
53
- display: flex;
54
- gap: 1rem;
55
- justify-content: center;
56
- flex-wrap: wrap;
57
- }
58
- </style>
@@ -1,118 +0,0 @@
1
- <div class="hero">
2
- <div class="hero-content">
3
- <h1>
4
- <i class="fas fa-chart-line"></i>
5
- Stock Analysis Platform
6
- </h1>
7
- <p class="hero-subtitle">
8
- Advanced technical analysis powered by SQA library
9
- </p>
10
-
11
- <div class="ticker-search">
12
- <form onsubmit="return searchTicker(event)" class="search-form">
13
- <input
14
- type="text"
15
- id="mainTickerInput"
16
- placeholder="Enter stock ticker (e.g., AAPL, MSFT, GOOGL)"
17
- autocomplete="off"
18
- >
19
- <button type="submit" class="btn btn-primary btn-large">
20
- <i class="fas fa-search"></i> Analyze
21
- </button>
22
- </form>
23
- </div>
24
-
25
- <div class="quick-links">
26
- <h3>Quick Analysis</h3>
27
- <div class="ticker-buttons">
28
- <a href="/dashboard/AAPL" class="ticker-btn">AAPL</a>
29
- <a href="/dashboard/MSFT" class="ticker-btn">MSFT</a>
30
- <a href="/dashboard/GOOGL" class="ticker-btn">GOOGL</a>
31
- <a href="/dashboard/AMZN" class="ticker-btn">AMZN</a>
32
- <a href="/dashboard/TSLA" class="ticker-btn">TSLA</a>
33
- <a href="/dashboard/NVDA" class="ticker-btn">NVDA</a>
34
- </div>
35
- </div>
36
- </div>
37
- </div>
38
-
39
- <div class="features">
40
- <div class="container">
41
- <h2>Features</h2>
42
- <div class="feature-grid">
43
- <div class="feature-card">
44
- <div class="feature-icon">
45
- <i class="fas fa-chart-candlestick"></i>
46
- </div>
47
- <h3>Interactive Charts</h3>
48
- <p>Candlestick charts with technical indicators including RSI, MACD, Bollinger Bands, and moving averages.</p>
49
- </div>
50
-
51
- <div class="feature-card">
52
- <div class="feature-icon">
53
- <i class="fas fa-robot"></i>
54
- </div>
55
- <h3>Strategy Backtesting</h3>
56
- <p>Test trading strategies on historical data with detailed performance metrics and comparison tools.</p>
57
- </div>
58
-
59
- <div class="feature-card">
60
- <div class="feature-icon">
61
- <i class="fas fa-brain"></i>
62
- </div>
63
- <h3>Market Analysis</h3>
64
- <p>Detect market regimes, seasonal patterns, and future price projections with FPOP analysis.</p>
65
- </div>
66
-
67
- <div class="feature-card">
68
- <div class="feature-icon">
69
- <i class="fas fa-shield-alt"></i>
70
- </div>
71
- <h3>Risk Management</h3>
72
- <p>Value at Risk (VaR), Sharpe ratio, maximum drawdown, and other risk metrics for informed decisions.</p>
73
- </div>
74
-
75
- <div class="feature-card">
76
- <div class="feature-icon">
77
- <i class="fas fa-layer-group"></i>
78
- </div>
79
- <h3>Portfolio Optimization</h3>
80
- <p>Optimize allocation across multiple stocks using maximum Sharpe, minimum variance, or risk parity.</p>
81
- </div>
82
-
83
- <div class="feature-card">
84
- <div class="feature-icon">
85
- <i class="fas fa-search-dollar"></i>
86
- </div>
87
- <h3>Pattern Discovery</h3>
88
- <p>Discover profitable trading patterns by reverse-engineering historical data and indicator combinations.</p>
89
- </div>
90
- </div>
91
- </div>
92
- </div>
93
-
94
- <div class="info-section">
95
- <div class="container">
96
- <div class="info-content">
97
- <h2>About SQA</h2>
98
- <p>
99
- SQA (Simple Qualitative Analysis) is a comprehensive Ruby library for stock market
100
- technical analysis. This web interface provides an intuitive way to visualize and
101
- analyze stock data using advanced algorithms and machine learning techniques.
102
- </p>
103
- <ul class="info-list">
104
- <li><i class="fas fa-check-circle"></i> 150+ technical indicators via TA-Lib</li>
105
- <li><i class="fas fa-check-circle"></i> 12+ built-in trading strategies</li>
106
- <li><i class="fas fa-check-circle"></i> High-performance Polars DataFrame backend</li>
107
- <li><i class="fas fa-check-circle"></i> Real-time streaming support</li>
108
- <li><i class="fas fa-check-circle"></i> Genetic programming for parameter optimization</li>
109
- <li><i class="fas fa-check-circle"></i> Knowledge-based trading with RETE engine</li>
110
- </ul>
111
- </div>
112
- </div>
113
- </div>
114
-
115
- <script>
116
- // Focus on ticker input when page loads
117
- document.getElementById('mainTickerInput').focus();
118
- </script>
@@ -1,61 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>SQA - Stock Analysis Platform</title>
7
-
8
- <!-- ApexCharts for charts -->
9
- <script src="https://cdn.jsdelivr.net/npm/apexcharts@3.45.1/dist/apexcharts.min.js"></script>
10
-
11
- <!-- Custom CSS -->
12
- <link rel="stylesheet" href="/css/style.css">
13
-
14
- <!-- Font Awesome for icons -->
15
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
16
- </head>
17
- <body>
18
- <!-- Navigation -->
19
- <nav class="navbar">
20
- <div class="nav-container">
21
- <div class="nav-brand">
22
- <i class="fas fa-chart-line"></i>
23
- <span>SQA Analytics</span>
24
- </div>
25
- <ul class="nav-menu">
26
- <li><a href="/" class="nav-link"><i class="fas fa-home"></i> Home</a></li>
27
- <li><a href="#" class="nav-link" onclick="showTickerModal()"><i class="fas fa-search"></i> Analyze Stock</a></li>
28
- <li><a href="/portfolio" class="nav-link"><i class="fas fa-briefcase"></i> Portfolio</a></li>
29
- </ul>
30
- </div>
31
- </nav>
32
-
33
- <!-- Main Content -->
34
- <main class="main-content">
35
- <%= yield %>
36
- </main>
37
-
38
- <!-- Footer -->
39
- <footer class="footer">
40
- <div class="footer-content">
41
- <p>&copy; 2025 SQA - Simple Qualitative Analysis. Educational purposes only.</p>
42
- <p class="disclaimer">⚠️ Not financial advice. For educational use only.</p>
43
- </div>
44
- </footer>
45
-
46
- <!-- Ticker Search Modal -->
47
- <div id="tickerModal" class="modal">
48
- <div class="modal-content">
49
- <span class="close" onclick="closeTickerModal()">&times;</span>
50
- <h2>Enter Stock Ticker</h2>
51
- <form onsubmit="return searchTicker(event)">
52
- <input type="text" id="tickerInput" placeholder="e.g., AAPL" autocomplete="off" autofocus>
53
- <button type="submit" class="btn btn-primary">Analyze</button>
54
- </form>
55
- </div>
56
- </div>
57
-
58
- <!-- Custom JavaScript -->
59
- <script src="/js/app.js"></script>
60
- </body>
61
- </html>
@@ -1,43 +0,0 @@
1
- <div class="dashboard">
2
- <div class="dashboard-header">
3
- <div class="ticker-info">
4
- <h1><i class="fas fa-briefcase"></i> Portfolio Optimization</h1>
5
- <p style="color: var(--text-secondary); margin-top: 0.5rem;">
6
- Optimize allocation across multiple stocks for maximum risk-adjusted returns
7
- </p>
8
- </div>
9
- </div>
10
-
11
- <div class="chart-container">
12
- <div class="chart-header">
13
- <h2><i class="fas fa-layer-group"></i> Coming Soon</h2>
14
- </div>
15
- <div style="padding: 3rem 2rem; text-align: center;">
16
- <div style="font-size: 5rem; color: var(--primary-color); margin-bottom: 2rem;">
17
- <i class="fas fa-tools"></i>
18
- </div>
19
- <h3 style="font-size: 2rem; margin-bottom: 1rem; color: var(--text-primary);">
20
- Portfolio Optimization Feature
21
- </h3>
22
- <p style="font-size: 1.1rem; color: var(--text-secondary); max-width: 600px; margin: 0 auto 2rem; line-height: 1.8;">
23
- This feature will allow you to optimize portfolio allocation across multiple stocks
24
- using various methods including Maximum Sharpe ratio, Minimum Variance, and Risk Parity.
25
- </p>
26
- <div style="background: var(--light-bg); padding: 2rem; border-radius: 12px; max-width: 800px; margin: 0 auto;">
27
- <h4 style="margin-bottom: 1rem; color: var(--text-primary);">Planned Features:</h4>
28
- <ul style="text-align: left; max-width: 500px; margin: 0 auto; line-height: 2;">
29
- <li><i class="fas fa-check-circle" style="color: var(--success-color);"></i> Maximum Sharpe Ratio Optimization</li>
30
- <li><i class="fas fa-check-circle" style="color: var(--success-color);"></i> Minimum Variance Portfolio</li>
31
- <li><i class="fas fa-check-circle" style="color: var(--success-color);"></i> Risk Parity Allocation</li>
32
- <li><i class="fas fa-check-circle" style="color: var(--success-color);"></i> Efficient Frontier Visualization</li>
33
- <li><i class="fas fa-check-circle" style="color: var(--success-color);"></i> Multi-stock Correlation Analysis</li>
34
- </ul>
35
- </div>
36
- <div style="margin-top: 2rem;">
37
- <a href="/" class="btn btn-primary">
38
- <i class="fas fa-home"></i> Back to Home
39
- </a>
40
- </div>
41
- </div>
42
- </div>
43
- </div>