Skip to content

🔧 SQA::FPOP

Source Information

Defined in: lib/sqa/fpop.rb:28

🏭 Class Methods

.fpl(price, fpop: = 14)

Calculate Future Period Loss/Profit for each point in price series

For each price point, looks ahead fpop periods and calculates: - Minimum percentage change (worst loss) - Maximum percentage change (best gain)

Parameters

Name Type Description
price Array<Numeric> Array of prices
fpop Integer Future Period of Performance (days to look ahead)

Returns

Type: Array<Array<Float, Float>>

Array of [min_delta, max_delta] pairs

Usage Examples

SQA::FPOP.fpl([100, 105, 95, 110], fpop: 2)
# => [[-5.0, 5.0], [-9.52, 4.76], [15.79, 15.79]]
Source Location

lib/sqa/fpop.rb:44


.fpl_analysis(price, fpop: = 14)

Perform comprehensive FPL analysis with risk metrics and classification

Parameters

Name Type Description
price Array<Numeric> Array of prices
fpop Integer Future Period of Performance

Returns

Type: Array<Hash>

Array of analysis hashes containing:

  • :min_delta - Worst percentage loss during fpop
  • :max_delta - Best percentage gain during fpop
  • :risk - Volatility range (max - min)
  • :direction - Movement classification (:UP, :DOWN, :UNCERTAIN, :FLAT)
  • :magnitude - Average expected movement
  • :interpretation - Human-readable summary

Usage Examples

analysis = SQA::FPOP.fpl_analysis([100, 110, 120], fpop: 2)
analysis.first
# => {
#   min_delta: 10.0,
#   max_delta: 20.0,
#   risk: 10.0,
#   direction: :UP,
#   magnitude: 15.0,
#   interpretation: "UP: 15.0% (±5.0% risk)"
# }
Source Location

lib/sqa/fpop.rb:85


.determine_direction(min_delta, max_delta)

Determine directional bias from min/max deltas

Parameters

Name Type Description
min_delta Float Minimum percentage change
max_delta Float Maximum percentage change

Returns

Type: Symbol

:UP, :DOWN, :UNCERTAIN, or :FLAT

Source Location

lib/sqa/fpop.rb:108


.calculate_magnitude(min_delta, max_delta)

Calculate average expected movement (magnitude)

Parameters

Name Type Description
min_delta Float Minimum percentage change
max_delta Float Maximum percentage change

Returns

Type: Float

Average of min and max deltas

Source Location

lib/sqa/fpop.rb:126


.build_interpretation(min_delta, max_delta)

Build human-readable interpretation string

Parameters

Name Type Description
min_delta Float Minimum percentage change
max_delta Float Maximum percentage change

Returns

Type: String

Formatted interpretation

Source Location

lib/sqa/fpop.rb:136


.filter_by_quality(analysis, min_magnitude: = nil, max_risk: = nil, directions: = [:UP, :DOWN, :UNCERTAIN, :FLAT])

Filter FPL analysis results by criteria

Useful for finding high-quality trading opportunities

Parameters

Name Type Description
analysis Array<Hash> FPL analysis results
min_magnitude Float Minimum average movement (default: nil)
max_risk Float Maximum acceptable risk (default: nil)
directions Array<Symbol> Acceptable directions (default: [:UP, :DOWN, :UNCERTAIN, :FLAT])

Returns

Type: Array<Integer>

Indices of points that meet criteria

Usage Examples

analysis = SQA::FPOP.fpl_analysis(prices, fpop: 10)
indices = SQA::FPOP.filter_by_quality(
  analysis,
  min_magnitude: 5.0,
  max_risk: 10.0,
  directions: [:UP]
)
Source Location

lib/sqa/fpop.rb:163


.risk_reward_ratios(analysis)

Calculate risk-reward ratio for each analysis point

Parameters

Name Type Description
analysis Array<Hash> FPL analysis results

Returns

Type: Array<Float>

Risk-reward ratios (magnitude / risk)

Source Location

lib/sqa/fpop.rb:182


📝 Attributes