The same input can belong to different dated regimes. Select the profile and information date explicitly; the package does not look up today’s rules online.
ctx <- Context("2025-01-17", "2026-09-23", "EUR",
"EU-S2-DOCUMENTS-2024-2025-v0.1")
names(rule_profiles()$profiles)
#> [1] "EU-S2-DOCUMENTS-2024-2025-v0.1" "EU-S2-DOCUMENTS-2027-v0.1"
result <- intangible_risk(100, context = ctx)
result
#> intangible_risk: 80 EUR [REFERENCE_COMPONENT]
result$sources
#> [[1]]
#> [1] "DR:article-203"The result is an ordinary list with an S3 class. Inspect
details for assumptions, scope and external qualification
flags. input_hash and profile_hash identify
the R calculation inputs and profile, not regulatory approval.
aggregate_risk(list(premium_reserve = 3, lapse = 4),
matrix_id = "health_nslt", context = ctx)$value
#> [1] 5nodes <- list(
intangible = list("function" = "intangible_risk", inputs = list(amount = 100))
)
# Reference cases provide the exact input names for any formula:
case <- Filter(function(x) x[["function"]] == "intangible_risk" &&
is.null(x$expected_error), reference_cases()$cases)[[1]]
nodes$intangible$inputs <- case$kwargs
runner <- Engine()
runner$run(nodes, context = ctx)$results$intangible$value
#> [1] 0
runner$run(nodes, context = ctx)$cache_hits
#> [[1]]
#> [1] "intangible"Use list("$ref" = "node_id") in a downstream input to
refer to another node’s value. Missing dependencies and cycles are
errors. Combined results retain PARTIAL status; a graph
does not certify that every obligation of an undertaking has been
represented.
curve <- DiscountCurve("synthetic-one-year", "2025-01-17", "EUR", "custom",
"invented example", list(list("2026-01-17", 0.97)))
discount_curve_factor(curve, "2026-01-17")
#> [1] 0.97
cashflows <- list("2026-01-17" = list(expected_inflows = 10,
expected_outflows = 100))
best_estimate_with_curve(cashflows, curve, runoff_complete = TRUE,
cashflow_reference = "synthetic complete runoff",
context = ctx)$value
#> [1] 87.3The CSV adapter expects exactly date,discount_factor;
JSON carries explicit curve identity, date, currency, kind and
provenance. Every payment date must have a supplied factor. Obtain
market inputs separately: no adapter downloads data or silently invents
interpolation or compounding conventions.
scenario <- ctx
scenario$overrides <- list(NumericOverride(
"profile.json", list("scalars", "intangible", "value"), 0.70,
"Synthetic analyst sensitivity"
))
intangible_risk(100, context = scenario)$status
#> [1] "ANALYST_SCENARIO"
parameter("scalars/intangible", scenario)$analyst_overrides
#> [[1]]
#> [[1]]$resource
#> [1] "profile.json"
#>
#> [[1]]$path
#> [[1]]$path[[1]]
#> [1] "scalars"
#>
#> [[1]]$path[[2]]
#> [1] "intangible"
#>
#> [[1]]$path[[3]]
#> [1] "value"
#>
#>
#> [[1]]$original
#> [1] 0.8
#>
#> [[1]]$value
#> [1] 0.7
#>
#> [[1]]$reason
#> [1] "Synthetic analyst sensitivity"
intangible_risk(100, context = ctx)$value
#> [1] 80Matrix paths use the source JSON’s zero-based indices. Overrides have explicit reasons and applicability guards. Editing a returned parameter list does not change either the installed resource or a later calculation.
bindings <- list(v1 = list(value = 1005, decimals = 0),
v2 = list(values = list(list(value = 1000, decimals = 0))))
reporting_bound_rule_check("BV1053-1", bindings, "2.8.2", "synthetic selection")$value
#> [1] FALSE
reporting_bound_rule_check("BV1053-1", bindings, "2.10.0", "synthetic selection")$value
#> [1] TRUEReporting technical releases are not inferred from the regulatory
Context. Tagged numbers, text, dates, QNames, Boolean
values and absence have distinct meanings. Exact rational arithmetic
preserves declared reporting precision. Archived activation evidence and
filing preconditions are separate from the rule’s numeric result.
reporting_instance() assembles a source-bound XML draft and
explicit findings, never a submission-ready filing certificate.
tryCatch(intangible_risk(Inf, context = ctx), CalculationError = function(error) {
list(code = error$code, field = error$field)
})
#> $code
#> [1] "INVALID_INPUT"
#>
#> $field
#> [1] "recognised_value"
length(reference_cases()$cases)
#> [1] 12382
length(reference_portfolios()$portfolios)
#> [1] 227
reference_datasets()
#> [1] "reference_reporting_balanced_scope.json"
#> [2] "reference_reporting_capital_cases.json"
#> [3] "reference_reporting_cases.json"
#> [4] "reference_reporting_fact_context_cases.json"
#> [5] "reference_reporting_metric_cases.json"
#> [6] "reference_reporting_portfolios.json"
#> [7] "reference_reporting_scope_cases.json"
#> [8] "reference_reporting_string_cases.json"
#> [9] "reference_reporting_typed_cases.json"
#> [10] "reference_reporting_validation_status.json"Fixed references include deliberately invalid inputs as well as
successful examples. Regulatory tables retain source references; company
inputs and market demonstrations are synthetic. Review the selected
function’s help page and the machine-readable coverage()
before interpreting a component result.