Pattern Matcher¶
Pattern recognition and similarity search for forecasting.
Find Similar Patterns¶
matcher = SQA::PatternMatcher.new(stock: stock)
# Find historical patterns similar to current
similar = matcher.find_similar(
lookback: 10, # 10-period pattern
num_matches: 5, # Find 5 best matches
method: :euclidean # Distance metric
)
similar.each do |match|
puts "Distance: #{match[:distance]}"
puts "Future return: #{match[:future_return]}%"
end
Distance Methods¶
:euclidean- Standard distance:dtw- Dynamic Time Warping (handles compression/stretching):correlation- Correlation-based similarity
Forecasting¶
forecast = matcher.forecast(
lookback: 10,
forecast_periods: 5,
method: :dtw
)
puts "Forecast price: #{forecast[:forecast_price]}"
puts "Expected return: #{forecast[:forecast_return]}%"
puts "95% CI: #{forecast[:confidence_interval_95]}"
Chart Pattern Detection¶
# Detect double top/bottom
patterns = matcher.detect_chart_pattern(:double_top)
# Detect head & shoulders
patterns = matcher.detect_chart_pattern(:head_and_shoulders)
# Detect triangles
patterns = matcher.detect_chart_pattern(:triangle)
patterns.each do |pattern|
puts "#{pattern[:type]} at index #{pattern[:index]}"
puts "Confidence: #{pattern[:confidence]}"
end