17std::optional<BetaVelocity>
19 if (!std::isfinite(value))
return std::nullopt;
26std::optional<EffectiveMass>
28 if (!std::isfinite(value) || value <= 0.0)
return std::nullopt;
32std::optional<EffectiveMass>
34 if (!std::isfinite(adv) || adv <= 0.0)
return std::nullopt;
35 if (!std::isfinite(adv_baseline) || adv_baseline <= 0.0)
return std::nullopt;
36 return make(adv / adv_baseline);
41std::optional<LorentzFactor>
43 const double b = beta.value();
44 const double gamma_val = 1.0 / std::sqrt(1.0 - b * b);
45 if (!std::isfinite(gamma_val))
return std::nullopt;
49std::optional<std::pair<double, LorentzFactor>>
54 if (!gamma_opt)
return std::nullopt;
55 const double adjusted = gamma_opt->value() * m_eff.value() * raw_signal;
56 return std::make_pair(adjusted, *gamma_opt);
59std::optional<BetaVelocity>
61 const double b1 = beta1.value();
62 const double b2 = beta2.value();
63 const double composed = (b1 + b2) / (1.0 + b1 * b2);
70 if (!gamma_opt)
return std::nullopt;
71 return dilated_value / gamma_opt->value();
76std::optional<std::vector<RelativisticSignal>>
78 std::span<const RawSignal> signals,
84 if (!gamma_opt)
return std::nullopt;
86 const double scale = gamma.
value() * m_eff.value();
88 std::vector<RelativisticSignal> out;
89 out.reserve(signals.size());
90 for (
const auto& sig : signals) {
100std::optional<RelativisticSignal>
107 if (!gamma_opt)
return std::nullopt;
108 const double adjusted = gamma_opt->value() * m_eff.value() * signal.value;
Normalised market velocity β = price_velocity / c_market.
static std::optional< BetaVelocity > make(double value) noexcept
Validate and construct a BetaVelocity.
ADV-based effective mass proxy.
static std::optional< EffectiveMass > from_adv(double adv, double adv_baseline) noexcept
Construct from raw ADV and a baseline ADV.
static std::optional< EffectiveMass > make(double value) noexcept
Validate and construct an EffectiveMass.
Pre-computed Lorentz factor γ = 1/√(1−β²). Always ≥ 1.0.
double value() const noexcept
Returns the raw γ value.
std::optional< RelativisticSignal > process_one(RawSignal signal, BetaVelocity beta, EffectiveMass m_eff) const noexcept
Process a single raw signal (convenience wrapper).
std::optional< std::vector< RelativisticSignal > > process(std::span< const RawSignal > signals, BetaVelocity beta, EffectiveMass m_eff) const noexcept
Process a batch of raw signals.
std::optional< double > inverse_transform(double dilated_value, BetaVelocity beta) noexcept
Recover the proper (un-dilated) value: proper = dilated / γ.
std::optional< std::pair< double, LorentzFactor > > apply_momentum_correction(double raw_signal, BetaVelocity beta, EffectiveMass m_eff) noexcept
Apply relativistic momentum correction: p_rel = γ · m_eff · raw.
std::optional< BetaVelocity > compose_velocities(BetaVelocity beta1, BetaVelocity beta2) noexcept
Relativistic velocity composition: β_result = (β₁+β₂)/(1+β₁β₂).
std::optional< LorentzFactor > lorentz_gamma(BetaVelocity beta) noexcept
Compute Lorentz factor γ = 1/√(1−β²).
constexpr double BETA_MAX_SAFE
Momentum-Velocity Signal Processor (AGT-03 / SRFM)
A raw (pre-correction) market signal value.
A gamma-corrected relativistic momentum signal.