I have right now a Fenix 6X and an Enduro. I observed that my Enduro has a tendency to read lower OHR /WHR than real. Certainly I swapped the watches between my wrists setting properly the wrist option (left or right) in their settings always. And I played a lot with the strap of Enduro, made it loose, made it tight, made it semi-tight.
Of course, before some of my comparison tests I cleaned both watches on the bottom just in case....
Note: I also compared the reading of OHR / WHR to the HR number coming from my Garmin HRM-3 strap, and used the latter as a reference apart from my own "HR opinion".
Let me not that both watches use the same, latest software versions.
Sub-cases, HR ranges:
1) I can say that during sleep the difference is tiny, just 1-2 bpm, 55 bpm, vs 56 bpm
2) if I stand up the difference can be 5-7 bpm immediately. like 75 bpm vs 81 bpm
Note: assuming that Enduro is slower than F6X in terms of CPU speed and/or has a less frequent data sampling I can justify this difference, but only for 15-30 seconds, not constantly.
3) doing upper body-related repeats (eg. leaning back and pushing back the chair-back with extra weights to be applied) in gym lasting 1-5 minutes results in an error of 10-15 bpm.
In other words if my real HR is above 110 my Enduro tends to be capped at the level of 100-110, while my Fenix 6X reads properly in the range of 110-130, although sometimes the latter also has a lag, but I consider it to be normal and acceptable..
4) the same is true as desctibed in point 3 when I walk either on flat or on climbing paved streets.
Some sort of conclusion is that the higher my real HR, the higher the error in absolute terms, and it is always on lower side.
Final note: I have not tested the OHR / WHR of Enduro while runnning, because I did not want to ruin the data of my activities.