75 double coordinate_time,
76 double velocity)
noexcept;
81 [[nodiscard]]
static double gamma_factor(
double velocity)
noexcept;
109 void tick(
double new_vol,
double dt_days = 1.0)
noexcept;
123 return current_gamma_;
128 return current_beta_;
132 [[nodiscard]]
double max_vol() const noexcept {
return max_vol_; }
135 [[nodiscard]] std::size_t
tick_count() const noexcept {
return tick_count_; }
138 void reset() noexcept;
142 double elapsed_tau_ = 0.0;
143 double elapsed_t_ = 0.0;
144 double current_gamma_ = 1.0;
145 double current_beta_ = 0.0;
146 std::
size_t tick_count_ = 0;
180 double coordinate_age,
181 double portfolio_vol,
182 double sharpe)
const noexcept;
184 [[nodiscard]]
double max_vol() const noexcept {
return max_vol_; }
205 double threshold_tau = 5.0,
213 bool tick(
double new_vol,
double dt_days = 1.0)
noexcept;
217 return tau_since_rebalance_;
222 return rebalance_count_;
226 [[nodiscard]]
double threshold_tau() const noexcept {
return threshold_tau_; }
229 void reset_timer() noexcept;
232 double threshold_tau_;
234 double tau_since_rebalance_ = 0.0;
235 std::
size_t rebalance_count_ = 0;
double max_vol() const noexcept
double current_gamma() const noexcept
Current Lorentz factor (from the most recent tick).
void tick(double new_vol, double dt_days=1.0) noexcept
double elapsed_coordinate_time() const noexcept
Total elapsed coordinate (calendar) time in days.
double elapsed_proper_time() const noexcept
Total elapsed proper time in days.
double max_vol() const noexcept
Maximum volatility cap.
std::size_t tick_count() const noexcept
Number of ticks accumulated.
double current_velocity() const noexcept
Current normalised velocity β.
void reset() noexcept
Reset all accumulators.
double tau_since_rebalance() const noexcept
Accumulated proper time since the last rebalance.
std::size_t rebalance_count() const noexcept
Total number of rebalance events fired.
double threshold_tau() const noexcept
Threshold for rebalance trigger.
Physical and financial constants for the SRFM system.
constexpr double DEFAULT_MAX_VOL
Default maximum portfolio volatility (annualised), analogous to c.
Result of one aging computation.
double gamma
Lorentz factor.
double coordinate_age
Raw age in the same units as input.
double effective_age
coordinate_age * γ.
double adj_sharpe
sharpe / √(effective_age) or 0 if age <= 0.
Value type returned by ProperTime::compute.
double tau
Elapsed proper time.
double gamma
Lorentz factor γ = 1/√(1−β²)
double velocity
Normalised velocity β = vol / max_vol.
Stateless computation of proper-time quantities.
static double gamma_factor(double velocity) noexcept
static double to_velocity(double portfolio_vol, double max_vol=DEFAULT_MAX_VOL) noexcept
static ProperTimeValue compute(double coordinate_time, double velocity) noexcept