Currency Carry Risk
Policy-rate carry CSV portfolio with margin, risk and calendar filters.
EURUSD · H1 · Original trading hours
Source + EX5 + selected preset + checksums. Strategy Tester research build.

Current EA identity and test status
Reviewed 23 September 2026. Separate legacy variant; profitability not established.
Approved-tick February 2024 functionality fixture: four 0.01-lot entries with USD 25000, then four explicit wrapper-cleanup exits. The USD 10000 case correctly rejected minimum-lot risk. Natural exits and historical performance are not validated. The EA does not validate the CSV retrieved_utc/source fields; external vintage evidence remains necessary.
Which rules and EA belong together?
This EA ranks seven currencies by supplied monthly carry_z scores and separately requires at least a 1-percentage-point policy-rate gap between its two long and two short currencies. It trades mapped spot pairs, with 4 ATR 20 daily emergency stops,0.15% equity risk per leg and 0.60% maximum portfolio risk. The configured CSV needs complete historical monthly vintages; the default release lag is 10 days and maximum age 50 days.
This is a policy-rate/score spot-basket variant. Library 29 ranks observed spot/forward quotes; the two data contracts are not interchangeable. Neither trades an actual forward contract in the current EA implementation.
Library strategy 29: Monthly Currency Carry has its own EA download and evidence. Use the download on this legacy page only with the legacy rules and preset described here.
The older reports below use incomplete broker ticks and fallback data. Their old classifications and returns are historical observations, not validation on the ten-year approved bid/ask release. A profitable sample, zero-trade report or functional diagnostic is not an after-cost profitability qualification.
Research result: did not pass both development and validation; rolling year net is not positive; rolling year profit factor below gate; rolling year has too few trades; rolling year loses under 25% commission/swap stress; full period net is not positive; full period profit factor below gate; full period has too few trades; full period loses under 25% commission/swap stress; historical signal vintages unavailable.
How this strategy works
- Read dated currency scores and policy rates from the configured common-files CSV. Apply a 10-day release lag and reject data older than 50 days.
- Rank a basket of two currencies on each side and require at least a 1 percentage-point policy-rate gap. Monthly changes, missing signals and execution gates control reallocation.
- Inputs limit risk to 0.15% per leg and 0.60% in aggregate, with 4 × D1 ATR20 emergency stops and a 10% margin-use ceiling. Daily, weekly, monthly and peak-drawdown limits apply.
- Historical signal vintages are unavailable for the selected period. The current snapshot is not a valid historical substitute; the download cannot substantiate a carry profitability claim.
The selected configuration uses EURUSD / H1, variant s0. All indicator and session values used by this build are listed in the preset editor.
Measured backtests


| Period / model | Net EUR | PF | Trades | Equity DD | Native report |
|---|---|---|---|---|---|
| Development 2019.01.01 → 2024.01.01 M1 OHLC screening | +0.00 | 0.00 | 0 | 0.00% | MT5 report |
| Validation 2024.01.01 → 2025.01.01 M1 OHLC screening | +0.00 | 0.00 | 0 | 0.00% | MT5 report |
| 12-month review 2025.09.01 → 2026.09.01 Real-tick mode + fallback | +0.00 | 0.00 | 0 | 0.00% | MT5 report |
| Long review 2019.01.01 → 2026.09.21 Real-tick mode + fallback | +0.00 | 0.00 | 0 | 0.00% | MT5 report |
Adjust the strategy preset
MT5 also validates parameter combinations and may reject incompatible inputs. Session modes use local London, New York and Tokyo hours. Broker-time conversion uses the configured winter UTC offset and DST rule. A session filter limits eligible entries; it does not change the underlying strategy signal or create trades where none qualify. Policy 2 also closes before the chosen session ends.
Install and reproduce the test
- Download and extract the ZIP. Copy
TF_Currency_Carry_Risk_Assistant_Sessions.ex5intoMQL5/Experts/TradeForexin the MT5 data folder. Keep MQ5 and all MQH headers together if compiling. - Open Strategy Tester, select the EA, EURUSD and H1. The build rejects normal chart execution.
- Load the included
selected-test.setor a preset downloaded above. Symbol, chart timeframe, dates, deposit and tick model are tester settings outside the .set file. - For confirmation choose “Every tick based on real ticks”, EUR 10,000, 1:30 leverage and 100 ms delay. Use 2025.09.01–2026.09.01 or 2019.01.01–2026.09.21; retain the generated report and Journal.
- Allow MT5 to obtain the available broker history. Compare actual date coverage, costs, trade count and history quality; a later download or different broker server can change the result.
Read the general MT5 installation guide; this package’s tester-only restriction takes precedence over normal chart-activation steps.
What these results can establish
- Historical point-in-time rate vintages are unavailable.
- CSV and calendar availability are required.
- These are retrospectively selected historical tests. Development, validation and review periods overlap previously inspected history; this is not a fresh independent holdout.
- The balance plots show realized outcomes. Equity drawdown includes floating positions and must not be inferred from the balance line alone.
- Available native ticks and fallback are accepted. Missing ticks, historical spread paths and cost assumptions limit confidence; profitable history does not guarantee future profitability.
- Point-in-time historical carry signal vintages are unavailable. Zero or sparse trades do not establish profitability; this package is incomplete for a historical carry claim.
Additional cost stress adds 25% of the absolute commission and swap amounts: 12-month stressed net EUR +0.00; long-period stressed net EUR +0.00. This is not a full spread or slippage stress.
Files and reproducibility
Each ZIP includes MQ5 source, required headers, EX5, README, selected-test.set, selection.json and SHA256SUMS.txt. Compiled builds and measured results are unchanged by this documentation update.
ZIP SHA-2565f110963e71719b08b4d1cd93030cde191a3d59a66d1cb677dbc472e4de6fdbc
Tested EX5 SHA-256cfc509d4f982e80324532a85b41586e8dee5313e6d145412905985191ada0b8a
Selection criteria and all strategy categories · Frozen selection record
