> For the complete documentation index, see [llms.txt](https://help.hydravision.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.hydravision.ai/products/asset-profiler/reference-states.md).

# Reference States

Reference page. Look up anything your report shows that you don't recognise.

### Verdict

The badge beside the symbol, and the tone of the opening paragraph.

| Value              | Badge reads      | Opening sentence reads       | Meaning                                                                                                                                                                 |
| ------------------ | ---------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TRADEABLE`        | TRADEABLE        | *Tradeable.*                 | A workable range exists and costs stay inside tolerance across it.                                                                                                      |
| `MARGINAL`         | MARGINAL         | *Marginal.*                  | A range exists but costs have taken part of it (band compression above 1%), or the calculation did not fully settle.                                                    |
| `COST_CONSTRAINED` | COST CONSTRAINED | *Not viable at these costs.* | Costs demand a wider step than the asset can retrace. No setting fixes it.                                                                                              |
| `NOT_VIABLE`       | NOT VIABLE       | *Not viable.*                | One of three things: the retrace never arrived in the sampled history; the p80 wait is longer than the carry runway; or costs exceed tolerance even at the widest step. |

Full discussion on [The Verdict](/products/asset-profiler/the-verdict.md).

### Binding constraint

What's actually limiting your range. Recorded in the JSON export; on screen the report shows the related information as **floor set by**, under the step range.

| Value        | Meaning                                                                                                                                                     |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `noise`      | The asset's own movement sets the floor. The healthy case: costs aren't your constraint.                                                                    |
| `volatility` | The retrace was never measured in the sampled history, so the asset's movement is the limit and costs never come into it. Goes with a *Not viable* verdict. |
| `spread`     | Costs set the floor, and spread is the larger half. Read [Band compression](/products/asset-profiler/band-compression.md).                                  |
| `commission` | Costs set the floor, and commission is the larger half. The lever here is your account terms, not your broker's pricing.                                    |
| `carry`      | Overnight cost is what binds: the wait, not the entry, is the problem.                                                                                      |

### Floor set by

Printed under the step range.

| Value        | Meaning                                                                                              |
| ------------ | ---------------------------------------------------------------------------------------------------- |
| `volatility` | The movement floor is higher than the cost floor. Costs took nothing off your range.                 |
| `cost`       | The cost floor is higher. The tight end of your range has been bought away by spread and commission. |

### Economic optimum

Whether the report names a step. Full discussion on [Recommended Step](/products/asset-profiler/recommended-step.md).

| Value           | Meaning                                                                                                            |
| --------------- | ------------------------------------------------------------------------------------------------------------------ |
| `interior`      | A real minimum inside the range. A recommended step is shown.                                                      |
| `monotone_edge` | The cost curve falls all the way to the widest step. No recommendation: the widest step is arithmetic, not advice. |
| `degenerate`    | The range collapsed to a single value. Nothing to sweep.                                                           |

### Band preset

Which multipliers built your range, from `step_band.preset`.

| Value    | Multipliers (× H4 ATR) | Chosen when                                                                                            |
| -------- | ---------------------- | ------------------------------------------------------------------------------------------------------ |
| `fx`     | 0.30 / 0.40 / 0.55     | Auto, on symbols with a 100k contract size, and from v1.23 on any symbol Hydra Vision treats as forex. |
| `non_fx` | 1.63 / 2.71 / 3.80     | Auto, on everything else: metals, commodities, indices, crypto.                                        |
| `custom` | Whatever you supplied  | You set all three multipliers yourself. Marked `band_calibrated: false`.                               |

### Swap

#### Swap verdict

| Value            | Meaning                                                                                                                           |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `BOTH_ZERO`      | No overnight cost either way. Runway is unlimited.                                                                                |
| `BOTH_NEGATIVE`  | Both directions pay to hold.                                                                                                      |
| `NEGATIVE_LONG`  | Long pays, short doesn't. Carry is one-sided.                                                                                     |
| `NEGATIVE_SHORT` | Short pays, long doesn't. Carry is one-sided.                                                                                     |
| `BOTH_POSITIVE`  | Both directions earn. The model still charges zero rather than counting the income as return.                                     |
| `REOPEN_MODE`    | Your broker rolls positions by closing and reopening them rather than charging a daily amount. There is no daily figure to model. |
| `MIXED`          | Something that fits none of the above — usually one side at exactly zero and the other positive. Read the raw figures.            |

#### Carry-free side

| Value            | Meaning                                                                                                                                           |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `both`           | Neither direction pays.                                                                                                                           |
| `none`           | Both directions pay.                                                                                                                              |
| `long` / `short` | The named side doesn't pay. The model still charges the other side, so if you trade the free side the report is being pessimistic on your behalf. |

#### Swap mode

How your broker calculates it. The label is taken from the symbol as MetaTrader reports it.

| Mode | Label              | Handled                                                                                      |
| ---- | ------------------ | -------------------------------------------------------------------------------------------- |
| 0    | `disabled`         | Treated as carry-free.                                                                       |
| 1    | `points`           | Exact.                                                                                       |
| 2    | `currency_symbol`  | Taken as reported, with no guaranteed conversion to your account currency — marked *approx*. |
| 3    | `interest_current` | Converted.                                                                                   |
| 4    | `interest_open`    | Converted.                                                                                   |
| 5    | `currency_margin`  | Approximated — marked *approx*.                                                              |
| 6    | `currency_deposit` | Used as reported; it is already in your account currency.                                    |
| 7    | `reopen_current`   | No daily charge exists in this mode; carry reads zero and the swap verdict is `REOPEN_MODE`. |
| 8    | `reopen_bid`       | As above.                                                                                    |
| —    | `unknown`          | A mode the terminal reports outside 0–8. Carry reads zero and the figure is marked *approx*. |

Anything marked *approx* means the figure is indicative rather than exact.

### Flags and warnings

Small markers that change how much weight a number deserves.

| Flag                    | Where it shows                                                                      | What it means                                                                                                                                                                                                         |
| ----------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `is_approximation`      | *approx* beside the swap mode                                                       | Swap calculation is estimated. Sanity-check against a real charge.                                                                                                                                                    |
| `zero_suspicious`       | Note in the carry panel                                                             | Both sides report exactly zero under an active swap mode — unusual for the instrument class. Worth confirming with your broker.                                                                                       |
| `disabled_but_nonzero`  | Note in the carry panel                                                             | Swap reported off while rates remain on the symbol. The mode is taken as authoritative. Worth confirming.                                                                                                             |
| `carry_side_asymmetric` | *"Carry here is one-sided"*                                                         | One direction pays, the other doesn't.                                                                                                                                                                                |
| `carry_is_worst_case`   | Implicit throughout                                                                 | The model always charges the expensive side and never counts swap income as return.                                                                                                                                   |
| `escalated_to_m1`       | *"Measured on M1"*                                                                  | Every step retraced inside one fifteen-minute bar, so timing was re-measured at one-minute resolution. Needs M1 history.                                                                                              |
| `sub_bar`               | Note in the retrace panel                                                           | The retrace distance is small relative to the bars used to measure it. Treat the median as a floor.                                                                                                                   |
| `thin`                  | Dimmed rows in the sweep table; counted in the chart header                         | Too few samples at that step for the measurement to be reliable.                                                                                                                                                      |
| Band collapsed          | *"band collapsed to a single step — nothing to sweep"* across the chart             | The range has no width. The portal detects this from the sweep; the export also carries `solution.band_degenerate`.                                                                                                   |
| `cost_constrained`      | Export only                                                                         | Recorded by the EA when the cost floor reaches the movement ceiling. On screen you see the consequence, as the verdict.                                                                                               |
| Older-export banner     | Amber bar at the top                                                                | The file predates the portal's schema. Panels needing newer fields are hidden. Re-run the EA.                                                                                                                         |
| *(estimated)*           | Beside the **as Minimum Step Size** value                                           | The profile was made before Asset Profiler v1.23, so the setting unit was worked out from the symbol name. A v1.23 profile records it. See [Ticks, pips and price](/products/asset-profiler/ticks-pips-and-price.md). |
| Re-run request          | *"re-run this profile with Asset Profiler v1.23 ..."* in place of the setting value | A pre-v1.23 profile where the symbol name isn't enough to work out the setting unit, or a currency pair that was profiled as non-FX because of a small contract size.                                                 |

### Data quality

| Value                    | Meaning                                                                                                                                                           |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `real_ticks`             | The tick value was calibrated against the terminal's own P\&L engine. What you want.                                                                              |
| `tick_value_approximate` | Calibration failed and the symbol's reported tick value was used instead. Every dollar figure in the report is less trustworthy; the tick figures are unaffected. |

If neither is possible (no usable tick value at all), the export is aborted rather than written, and the reason is printed to the journal.
