> 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/backtest-analysis/strategy-tester-journal-print.md).

# Strategy Tester Journal Print

How to read the performance summary Hydra Vision prints to the MT5 Journal at the end of a backtest.

## Reading the Journal Summary

When a backtest finishes, Hydra Vision prints a full performance summary to the **Strategy Tester → Journal** tab. It is the fastest way to see how a run behaved without opening any other tool.

{% hint style="info" %}
The summary is printed during shutdown. You will see it after the test completes, at the very bottom of the Journal. Scroll to the end and read upwards.
{% endhint %}

### When it appears (and when it doesn't)

| Situation                           | Summary printed?                                                   |
| ----------------------------------- | ------------------------------------------------------------------ |
| Normal backtest finishes            | Yes                                                                |
| You remove the EA from a live chart | Yes                                                                |
| Terminal closed / chart closed      | Yes                                                                |
| You changed an input (EA restarts)  | No — the EA is coming straight back                                |
| The EA failed to start              | No — you get a one-line "deinit after failed init" message instead |
| Optimisation pass                   | No                                                                 |

***

### Header

```
═══════════════════════════════════════════════════════════════
  HYDRA VISION PCL PERFORMANCE SUMMARY
  License: Fusion
  Strategy: Dynamic PCL
  Symbol: EURUSD | Period: 2025.01.01 - 2025.12.31 (364 days)
═══════════════════════════════════════════════════════════════
```

Confirms **what was actually tested**. Check this first — it is easy to run a different symbol or date range than you intended.

`days` is calendar days, not trading days. Every "per day" figure further down uses this number.

***

### Profit Performance

| Line              | What it means                            |
| ----------------- | ---------------------------------------- |
| **Total Profit**  | Net result after costs. The bottom line. |
| **Gross Profit**  | Everything the winners made, added up.   |
| **Gross Loss**    | Everything the losers cost, added up.    |
| **Profit Factor** | Gross Profit ÷ Gross Loss.               |

**How to read Profit Factor:** above `1.0` means the winners outweighed the losers. `1.5` means you made £1.50 for every £1.00 lost. Below `1.0` the run lost money. If the run had no losing trades at all it prints `No Losses` rather than a number.

{% hint style="warning" %}
A high Profit Factor on a grid strategy is normal and is **not** by itself a sign of quality. Grids win often and lose rarely but heavily. Always read it next to the drawdown section below.
{% endhint %}

***

### Risk Metrics

This is the most important block in the summary, and the one most often misread. There are **six drawdown figures and they measure different things.**

#### The two words that matter: Maximal vs Relative

* **Maximal** — the biggest drop in *money terms*.
* **Relative** — the biggest drop in *percentage terms*.

These are usually different moments. A £500 loss on a £10,000 account is a bigger *percentage* hit than a £700 loss on a £20,000 account. Each row shows its own value, its own percentage and its own timestamp, so the numbers on one line always belong together.

#### The two words that also matter: Equity vs Balance

* **Equity** — includes open, floating positions. This is your real exposure.
* **Balance** — closed trades only.

For a grid strategy **equity drawdown is the number that matters.** Balance drawdown can look calm while an open basket is deeply underwater.

#### The rows

<table data-search="false"><thead><tr><th>Row</th><th>Read it as</th></tr></thead><tbody><tr><td><strong>Equity Maximal Drawdown</strong></td><td>Worst money drop including open positions. <strong>The headline risk number.</strong></td></tr><tr><td><strong>Equity Relative Drawdown</strong></td><td>Worst percentage drop including open positions.</td></tr><tr><td><strong>Balance Maximal Drawdown</strong></td><td>Worst money drop on closed trades only.</td></tr><tr><td><strong>Balance Relative Drawdown</strong></td><td>Worst percentage drop on closed trades only.</td></tr><tr><td><strong>Equity Absolute Drawdown</strong></td><td>How far equity ever fell <em>below your starting deposit</em>.</td></tr><tr><td><strong>Balance Absolute Drawdown</strong></td><td>Same, measured on closed balance.</td></tr><tr><td><strong>Last Capital Op</strong></td><td>Only printed if money was deposited or withdrawn during the run: when the last deposit or withdrawal happened, and the total deposited and withdrawn. If you see it, the drawdown rows above were measured on an account whose capital changed mid-run.</td></tr><tr><td><strong>Grid Floating DD (worst)</strong></td><td>The worst unrealised loss carried by a <strong>single grid</strong>, on whichever side was worse.</td></tr><tr><td><strong>Recovery Factor</strong></td><td>Total Profit ÷ Equity Maximal Drawdown.</td></tr></tbody></table>

{% hint style="danger" %}
**Grid Floating DD is not the same measurement as the rows above it.** The account rows measure your whole account. Grid Floating DD measures one basket of positions. It is labelled separately for exactly this reason — do not compare the two numbers as if they were the same metric.
{% endhint %}

**How to read Recovery Factor:** how many times over the strategy earned back its own worst drawdown. `3.0` is comfortable. Below `1.0` means the run never made back what it risked at its worst point.

#### Compared with MT5's own backtest report

The account rows above measure the whole account — in a backtest, that is just this EA. **Total Profit matches MT5's report to the cent.** The drawdown rows are measured slightly differently from MT5's, so expect small gaps:

* **Equity drawdown** — Hydra usually reads a little **deeper**, typically by less than one percentage point. Hydra checks equity on every price tick it processes, including the instant after it opens a position, and catches low points MT5's report can miss. Hydra's is the more conservative figure.
* **Balance drawdown** — should match MT5's within a few cents. (The JSON report's per-EA `hydra_dd` figures can differ by a little more — see the JSON report guide for why.)

{% hint style="info" %}
If profit matches but MT5 shows the **deeper** equity drawdown, or the gap is well over a percentage point, that is worth reporting. The JSON report guide has a worked example with real numbers.
{% endhint %}

***

### Efficiency

| Line                | What it means                                    |
| ------------------- | ------------------------------------------------ |
| **Profit/Day**      | Average daily earnings across the whole period.  |
| **Profit/Grid**     | Average earnings per completed grid.             |
| **Profit/Position** | Average earnings per individual position opened. |

Use these to compare runs of **different lengths**. Total Profit rewards a longer test; Profit/Day does not.

***

### Grid Statistics

| Line                   | What it means                                                                                     |
| ---------------------- | ------------------------------------------------------------------------------------------------- |
| **Grids Completed**    | Total grid cycles, split BUY / SELL.                                                              |
| **Total Positions**    | Every position opened across the run.                                                             |
| **Avg Positions/Grid** | Typical grid size. Close to `1.0` means most grids never needed to build out.                     |
| **Avg Grid Duration**  | How long a typical grid stayed open.                                                              |
| **Max Grid Depth**     | The widest a grid ever spread, in market distance (pips/points as appropriate to the instrument). |
| **Avg Grid Depth**     | The typical spread of a grid.                                                                     |

{% hint style="info" %}
**Depth here is distance, not a position count.** "Max Grid Depth 180 pips" means price travelled 180 pips against the grid before it closed. A large gap between Max and Avg tells you the run was usually comfortable but was stretched badly at least once — go and find that event.

The JSON report's `grids.max_depth` is different: there, depth is the **number of positions** a grid held. Same word, different measurement.
{% endhint %}

***

### PCL Transactions

*(Printed for every licence.)*

| Line                 | What it means                                                  |
| -------------------- | -------------------------------------------------------------- |
| **Total PCL Closes** | How many times the Profit Close Logic engine closed something. |
| **Total PCL Profit** | Money made by those closes.                                    |
| **Avg Profit/PCL**   | Average per close.                                             |
| **PCL/Grid**         | Average PCL closes per grid.                                   |
| **PCL/Day**          | Average PCL closes per day.                                    |

#### By Engine

Each engine that actually fired gets a line:

```
  By Engine:
    Dynamic                 42 ( 68.9%)  GBP   1284.50  Avg: GBP 30.58
                            depth 4.2  dd 3.1%  vol 6.30  hunters 5
        By Candidate:
          Anchor + Worst     18 ( 29.5%)  GBP    612.20  Avg: GBP 34.01
                             depth 3.8  dd 2.7%  vol 2.40  hunters 2
    Whole Grid              19 ( 31.1%)  GBP    503.10  Avg: GBP 26.48
                            depth 5.6  dd 4.4%  vol 7.90  hunters 0
```

Read the first line as: **fire count**, **share of all PCL closes**, **money contributed**, **average per fire**. The line under it gives the average number of positions in the grid and the average drawdown % at the moment that engine fired, the total volume it closed, and how many Position Hunter setups it created. An engine with a large share but a small average is doing a lot of small work; a small share with a large average is doing occasional heavy lifting.

**By Candidate** breaks the Dynamic engine down further, showing which combination of positions it chose to close. Engines and candidates that never fired are omitted entirely — an absent line means "never happened".

***

### Engine and feature blocks

Most of the following blocks share the same shape:

```
  MULTI-TRAILING
  ─────────────────────────────────────────────────
    Closes:                 12
    Profit:                 GBP 340.20
    Loss:                   GBP -85.10
    Net Contribution:       GBP 255.10 (8.4% of total)
```

| Field                | What it means                                                                |
| -------------------- | ---------------------------------------------------------------------------- |
| **Closes**           | How many times this feature closed positions.                                |
| **Profit**           | Total from its winning closes.                                               |
| **Loss**             | Total from its losing closes.                                                |
| **Net Contribution** | Profit minus Loss, and what share of the run's total result that represents. |

**Net Contribution is the field to compare across blocks.** It answers "how much of my result came from this feature?" The percentages across these blocks add up to roughly 100% once the PCL engines' share is included — the Journal shows the PCL share in money only (Total PCL Profit), not as a percentage.

Two blocks print a different set of lines before their Net Contribution:

* **Position Hunter** prints its own counters (see Position Hunter extras below), then **Hunter Profit** and **Hunter Loss** in place of Profit and Loss.
* **Injected Trailing SL** prints **Injections** (how many were placed), **Invalidations** (how many turned back into a grid instead), **Succeses** (how many finished on their trailing stop — the spelling is as printed) and a single **Profit** line, which is the net result. It has no Closes or Loss line.

The blocks you may see:

<table data-search="false"><thead><tr><th>Block</th><th>What it covers</th></tr></thead><tbody><tr><td><strong>Anchor Trailing SL</strong></td><td>Trades that never grew into a grid — a single position trailed out.</td></tr><tr><td><strong>Position Hunter</strong></td><td>Trailing stop management on a remaining position after a grid close.</td></tr><tr><td><strong>Injected Trailing SL</strong></td><td>Grid continuation after an injection.</td></tr><tr><td><strong>Multi-Trailing</strong></td><td>Multiple positions trailed together.</td></tr><tr><td><strong>Bounce</strong></td><td>Bounce strategy closes.</td></tr><tr><td><strong>Frontier</strong></td><td>Frontier (hedge) strategy closes.</td></tr><tr><td><strong>Risk – Max Loss</strong></td><td>Hard stop from your <strong>Max Drawdown before auto close (negative)</strong> setting.</td></tr><tr><td><strong>Risk – Step Gap</strong></td><td>Hard stop from your <strong>Maximum missing steps gap</strong> setting.</td></tr></tbody></table>

#### Position Hunter extras

| Line                   | What it means                                                    |
| ---------------------- | ---------------------------------------------------------------- |
| **Setups Created**     | How many times a hunter was armed.                               |
| **SL Placed**          | How many got a stop loss attached.                               |
| **Trail Activated**    | How many actually began trailing.                                |
| **Completed (via SL)** | How many finished by being stopped out — with a conversion rate. |
| **Converted to Grid**  | How many turned back into a grid instead.                        |

Conversion rate is `Completed ÷ Setups`. A low rate is not automatically bad — it means most setups turned into grids instead of trailing out.

#### Reading the Risk blocks

{% hint style="warning" %}
The two Risk blocks print a note reminding you: **a hard stop only ever realises a loss earlier than the alternative.** By design it has no winning trades. Judge it on the drawdown it avoided, not on its win rate. A Risk block showing pure losses is the feature working correctly.
{% endhint %}

***

### Safety Top-Up

Printed whenever the feature is enabled — **including when it never fired**, because "armed but never needed" is a meaningful result.

<table data-search="false"><thead><tr><th>Line</th><th>What it means</th></tr></thead><tbody><tr><td><strong>Buffer Configured</strong></td><td>The simulated capital you made available.</td></tr><tr><td><strong>Trigger Threshold</strong></td><td>The floating loss level that draws on it.</td></tr><tr><td><strong>Deposits / Total Deposited</strong></td><td>How often it was drawn, and how much.</td></tr><tr><td><strong>Withdrawals / Total Returned</strong></td><td>How often and how much went back.</td></tr><tr><td><strong>Peak Deployed</strong></td><td>The most that was in use at any one time.</td></tr><tr><td><strong>Still Deployed</strong></td><td>Amount still in use at the end of the test.</td></tr><tr><td><strong>Consumed (unreturned)</strong></td><td>Buffer money that was never paid back. This is a real cost.</td></tr><tr><td><strong>Buffer Remaining</strong></td><td>What was left.</td></tr></tbody></table>

{% hint style="danger" %}
If deposits occurred, the summary tells you so explicitly: **all profit and drawdown percentages above include injected capital.** They were measured against a capital base that grew mid-run, so they are **not comparable** to a run with top-up disabled. Compare like with like.
{% endhint %}

***

### New Position On Close

| Line                    | What it means                                                    |
| ----------------------- | ---------------------------------------------------------------- |
| **Attempts**            | Times the EA tried to open a replacement position after a close. |
| **Opened**              | How many succeeded, with a success rate.                         |
| **Blocked (Too Close)** | Rejected — price too near an existing position.                  |
| **Blocked (Dual Grid)** | Rejected — dual-grid rules.                                      |
| **Blocked (Count Low)** | Rejected — not enough positions to justify it.                   |

High block counts are not errors. They show the filters doing their job.

### Backfill

| Line               | What it means                              |
| ------------------ | ------------------------------------------ |
| **Evaluations**    | How many times backfill was considered.    |
| **Conditions Met** | How many times the setup qualified.        |
| **Signal Blocked** | Qualified, but the entry signal vetoed it. |
| **Fired**          | Actually placed, with a fire rate.         |

The gap between **Conditions Met** and **Fired** tells you how much your entry signal is filtering out.

***

### Trailing sections

After the main summary, further diagnostic reports print automatically:

<table data-search="false"><thead><tr><th>Report</th><th>What it shows</th></tr></thead><tbody><tr><td><strong>SmartEntry 3.0 Performance</strong></td><td>Signal-by-signal entry quality, both sides. Blocked counts are per checked tick, not per setup: SmartEntry checks on every tick while it waits for an entry, and one tick can count under several vetoes at once.</td></tr><tr><td><strong>Signal Co-Occurrence</strong></td><td>Which signals tend to fire together. Useful for preset tuning.</td></tr><tr><td><strong>Dormancy Report</strong></td><td>How much of the test the EA spent doing nothing.</td></tr><tr><td><strong>Grid Compression Analysis</strong></td><td>How tightly positions bunched inside grids.</td></tr><tr><td><strong>Drawdown Breach Analysis</strong></td><td>How often drawdown crossed your configured tiers.</td></tr><tr><td><strong>Open Positions</strong></td><td>Anything still open when the test ended.</td></tr><tr><td><strong>MT5 History Comparison</strong></td><td>Hydra's own accounting checked against MT5's.</td></tr></tbody></table>

{% hint style="info" %}
**MT5 History Comparison** is a self-check. If Hydra's totals and MT5's totals agree, the numbers above are trustworthy. A reported difference is worth investigating before you act on the run.
{% endhint %}

***

### A suggested reading order

1. **Header** — did I test what I meant to test?
2. **Equity Maximal Drawdown** — could I have survived this?
3. **Total Profit** and **Recovery Factor** — was I paid enough for that risk?
4. **Avg / Max Grid Depth** — how stretched did it get?
5. **Net Contribution** across the engine blocks — what actually made the money?
6. **MT5 History Comparison** — do the numbers reconcile?

{% hint style="warning" %}
One backtest is not evidence of profitability. Vary the period, the symbol and the modelling quality before drawing conclusions, and remember that past results do not predict future results.
{% endhint %}
