Skip to content

Stochastic Artifacts

When exports.stochastic: true is set in config.json, Novomodelo writes the stochastic preprocessing artifacts to output/stochastic/ before training begins.

Export is off by default.


File pathExport conditionSchema source
stochastic/inflow_seasonal_stats.parquetAlwaysSame as input scenarios/inflow_seasonal_stats.parquet
stochastic/inflow_ar_coefficients.parquetAlwaysSame as input scenarios/inflow_ar_coefficients.parquet
stochastic/inflow_annual_component.parquetAlways5-column Parquet schema (see below)
stochastic/correlation.jsonAlwaysSame as input scenarios/correlation.json
stochastic/fitting_report.jsonEstimation ranJSON diagnostic report (see below)
stochastic/noise_openings.parquetAlwaysSame schema as scenarios/noise_openings.parquet
stochastic/load_seasonal_stats.parquetA load model has std_mw > 0Same as input scenarios/load_seasonal_stats.parquet

The five unconditional files hold the model the run used, whether Novomodelo estimated it from inflow_history.parquet or read it from scenarios/. fitting_report.json is written only when Novomodelo estimated part or all of the inflow model (its seasonal statistics, its AR coefficients or both) from inflow_history.parquet.

If a file cannot be written, Novomodelo prints a warning such as warning: stochastic export failed (noise_openings: <error>) and the run continues with the remaining files and training. --quiet suppresses the warning.

To reuse an exported model as input on a later run, follow Exporting Stochastic Artifacts → Round-trip workflow.


The opening tree used during the training run, written in the same schema as the input file scenarios/noise_openings.parquet. See the Scenario Files for the 4-column schema (stage_id, opening_index, entity_index, value). The exported stage_id is the 0-based stage position, while the input file requires the declared stage id, so a copy loads only when the declared stage ids are 0, 1, 2, ….

Methodology: Scenario Generation


stochastic/inflow_annual_component.parquet

Section titled “stochastic/inflow_annual_component.parquet”

The per-(hydro, stage) annual inflow component of the model the run used, whether Novomodelo fitted it or read it from scenarios/. The file has no rows unless an inflow model carries an annual component. The schema has 5 columns, all non-nullable.

Methodology: PAR(p) Inflow Model

NameTypeNullableUnitsDescription
hydro_idInt32No—Entity identifier of the hydro plant.
stage_idInt32No—Stage identifier the component applies to.
annual_coefficientFloat64No—Fitted annual-component coefficient for this hydro and stage.
annual_mean_m3sFloat64Nom³/sAnnual mean inflow for this hydro and stage, in m³/s.
annual_std_m3sFloat64Nom³/sAnnual inflow standard deviation for this hydro and stage, in m³/s.

A JSON diagnostic report for the PAR model fitting. This file is written only when Novomodelo performed estimation from inflow_history.parquet.

Methodology: PAR(p) Inflow Model

Structure:

{
"hydros": {
"<hydro_id>": {
"selected_order": 3,
"coefficients": [[0.42, -0.11, 0.07]],
"contribution_reductions": [
{
"season_id": 4,
"original_order": 3,
"reduced_order": 2,
"contributions": [0.42, -0.11, 0.07],
"reason": "negative_contribution"
}
]
}
}
}
NameTypeNullableUnitsDescription
hydros.<hydro_id>.selected_orderintegerNo—Selected AR order for this hydro plant.
hydros.<hydro_id>.coefficientsarrayNo—Array of arrays of numbers: one row per season; each row contains the AR coefficients for that season.
hydros.<hydro_id>.contribution_reductionsarrayYes—Order reductions applied during fitting, one entry per affected season. Optional; omitted when no reduction was needed.

contribution_reductions[] fields:

NameTypeNullableUnitsDescription
hydros.<hydro_id>.contribution_reductions[].season_idintegerNo—Season where the reduction occurred.
hydros.<hydro_id>.contribution_reductions[].original_orderintegerNo—AR order before reduction.
hydros.<hydro_id>.contribution_reductions[].reduced_orderintegerNo—AR order after reduction.
hydros.<hydro_id>.contribution_reductions[].contributionsarrayNo—Array of numbers: contribution values at the original order that triggered the reduction.
hydros.<hydro_id>.contribution_reductions[].reasonstringNo—Mechanism that triggered the reduction: "magnitude_bound", "phi1_negative", or "negative_contribution".

This file is diagnostic only. It is not consumed as input on subsequent runs.