PineForge unreleased
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
metrics_fold.hpp File Reference
#include <pineforge/pineforge.h>
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <limits>
#include <memory>
#include <string>
Include dependency graph for metrics_fold.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pineforge::metrics::MetricsExtentV1
 
struct  pineforge::metrics::MetricsExtentPlanV1
 
struct  pineforge::metrics::MetricsStopBoundaryV1
 
struct  pineforge::metrics::MetricsExtentReceiptV1
 
struct  pineforge::metrics::MetricsStreamingConfigV1
 
struct  pineforge::metrics::MetricsRatioTraceV1
 
struct  pineforge::metrics::MetricsRatioTraceSinkV1
 
struct  pineforge::metrics::MetricsStreamingResultV1
 
struct  pineforge::metrics::MetricsRatioCurveV1
 
class  pineforge::metrics::StreamingEquityRatiosV1
 
struct  pineforge::metrics::MetricsMonthlyResultV1
 
struct  pineforge::metrics::EquityReturnSummary
 
struct  pineforge::metrics::EquityFoldSnapshot
 
struct  pineforge::metrics::fold_detail::ReturnSequence
 
struct  pineforge::metrics::fold_detail::FirstPrefix
 
class  pineforge::metrics::EquityMetricsFold
 
struct  pineforge::metrics::EquityMetricInputs
 
struct  pineforge::metrics::EquityRatioResult
 
struct  pineforge::metrics::fold_detail::ReturnVariance
 
struct  pineforge::metrics::fold_detail::SecondPrefix
 
class  pineforge::metrics::EquityMetricsSecondPass
 

Namespaces

namespace  pineforge
 
namespace  pineforge::metrics
 
namespace  pineforge::metrics::fold_detail
 

Typedefs

using pineforge::metrics::MetricsNeedMaskV1 = std::uint64_t
 
using pineforge::metrics::MetricsRatioTraceCallbackV1 = void (*)(void*, const MetricsRatioTraceV1&)
 

Enumerations

enum class  pineforge::metrics::MetricsStreamingStatusV1 : std::int32_t {
  pineforge::metrics::Ok = 0 ,
  pineforge::metrics::NotImplemented = -1 ,
  pineforge::metrics::InvalidArgument = -2 ,
  pineforge::metrics::Busy = -3
}
 
enum class  pineforge::metrics::StreamingSharpeV1 : std::uint32_t {
  pineforge::metrics::Off = 0 ,
  pineforge::metrics::On = 1
}
 
enum class  pineforge::metrics::MetricsRatioRouteV1 : std::uint32_t {
  pineforge::metrics::Unavailable = 0 ,
  pineforge::metrics::Streaming = 1 ,
  pineforge::metrics::LegacyActualCurve = 2 ,
  pineforge::metrics::LegacyRerun = 3
}
 
enum class  pineforge::metrics::MetricsExtentWitnessV1 : std::uint32_t {
  pineforge::metrics::NotEvaluated = 0 ,
  pineforge::metrics::Match = 1 ,
  pineforge::metrics::Mismatch = 2
}
 
enum class  pineforge::metrics::MetricsRouteReasonV1 : std::uint32_t {
  pineforge::metrics::None = 0 ,
  pineforge::metrics::SharpeSwitchOff = 1 ,
  pineforge::metrics::ReturnsNeeded = 2 ,
  pineforge::metrics::CurveNeeded = 3 ,
  pineforge::metrics::PlainNo = 4 ,
  pineforge::metrics::NoExtentProof = 5 ,
  pineforge::metrics::NoRecoveryProof = 6 ,
  pineforge::metrics::NumericGuard = 7 ,
  pineforge::metrics::ExtentMismatch = 8 ,
  pineforge::metrics::LiveSnapshot = 9 ,
  pineforge::metrics::ExistingFailure = 10 ,
  pineforge::metrics::OrderedReplay = 11 ,
  pineforge::metrics::ScratchUnavailable = 12
}
 
enum class  pineforge::metrics::MetricsStopBoundaryKindV1 : std::uint32_t {
  pineforge::metrics::None = 0 ,
  pineforge::metrics::CompletedMark = 1 ,
  pineforge::metrics::IntraBar = 2 ,
  pineforge::metrics::MarginCallback = 3
}
 

Functions

std::int64_t pineforge::metrics::equity_month_key (std::int64_t time_ms, const std::string &chart_timezone)
 
bool pineforge::metrics::monthly_replay_time_supported_v1 (std::int64_t time_ms)
 
std::uint64_t pineforge::metrics::fold_detail::extent_mismatch_v1 (const MetricsExtentPlanV1 &plan, const MetricsStreamingConfigV1 &config, const MetricsExtentV1 &actual)
 
MetricsStreamingStatusV1 pineforge::metrics::make_streaming_equity_ratios_v1 (const MetricsStreamingConfigV1 &, const MetricsExtentPlanV1 &, MetricsRatioTraceSinkV1, std::unique_ptr< StreamingEquityRatiosV1 > &)
 
MetricsStreamingStatusV1 pineforge::metrics::enable_streaming_monthly_replay_v1 (StreamingEquityRatiosV1 &)
 
MetricsStreamingStatusV1 pineforge::metrics::streaming_monthly_result_v1 (const StreamingEquityRatiosV1 &, MetricsMonthlyResultV1 &)
 
double pineforge::metrics::fold_detail::defer_nonfinite (double value, const char *field, const char *&first)
 
void pineforge::metrics::fold_detail::witness_word (std::uint64_t &hash, std::uint64_t word)
 
void pineforge::metrics::fold_detail::witness_double (std::uint64_t &hash, double value)
 
pf_equity_stats_t pineforge::metrics::finalize_equity_metrics (const EquityFoldSnapshot &first, const EquityMetricInputs &inputs, const EquityRatioResult *ratios=nullptr)
 
pf_metrics_t pineforge::metrics::finalize_metrics (const EquityFoldSnapshot &first, const EquityMetricInputs &inputs, const pf_trade_stats_t &all, const pf_trade_stats_t &longs, const pf_trade_stats_t &shorts, const EquityRatioResult *ratios=nullptr)
 

Variables

constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedSharpeBarV1 = 1ULL << 0
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedSortinoBarV1 = 1ULL << 1
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedMonthlyRatiosV1 = 1ULL << 2
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedReturnsV1 = 1ULL << 3
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedEquitySummaryV1 = 1ULL << 4
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedTradeStatsV1 = 1ULL << 5
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedCurveV1 = 1ULL << 6
 
constexpr MetricsNeedMaskV1 pineforge::metrics::kMetricsNeedAllV1 = (1ULL << 7) - 1
 
constexpr std::size_t pineforge::metrics::kMetricsMonthEndLimitV1 = 4096
 
constexpr double pineforge::metrics::fold_detail::nan = std::numeric_limits<double>::quiet_NaN()