Your ant miner includes rejected shares and hardware errors. Additionally, the pool dashboard is an estimate based on accepted shares, while your local miner is actual hashing speed. The average on your Dashboard will always be +/- 5 to 10% of your actual hash rate (even further off if you have HW errors and/or lots of invalids). As for "always when the pool luck is extended bad run", this is called selective bias. You see the same fluctuation regardless of pool luck, but you're trying to associate completely independent events. tl;dr: Your brain lies to you.
My rejected and HW are very small (591 & 46 resp)
Have 0 stale but over 40,000 discarded versus more than 210,000 accepted (always around 20%)
Is there something I can do to improve the discarded ? What are they ? Where can I read up on it ?
Guess I do investigate more when luck is low ...
Discarded is a meaningless stat for Stratum & GBT. Ignore it completley.
EDIT to explain what it is: In getwork days, the pool provided you a single unit of work, you finished it, and asked for more. Discarded was a figure of how much work you had asked for that you never got to use due to longpolls making it obsolete. In GBT/Stratum, pools don't provide you with a unit of work, but they provide you with a template to make work locally.