Out-of-sample only means something the first time. If you look at the result, adjust the rules, and test again, that data has become in-sample and you have quietly restarted the fitting process on a smaller sample.
That is why people keep several out-of-sample blocks, or use walk-forward-analysis, which automates the discipline: each test window is evaluated with parameters chosen strictly from data before it.
A common expectation is that live and out-of-sample results run roughly half the in-sample numbers. If your out-of-sample matches the in-sample exactly, be suspicious of leakage rather than pleased.
Related: in-sample, holdout-set, walk-forward-analysis, data-leakage