Hi Peter
I took a look and can see what the problem is.
Look at the screenshot.
I edited the loop output sections of the views you use to output the ranks to add a line which shows the post id and title of the current item in the loop from which the ranking custom field data is being taken.
You'll see that it is the same in each of the 3 ranking sections.
That's not surprising because the View is identical in each case apart from the types field added to the loop output section.
The problem is that you are creating ranking posts to store the custom field data. See the second screenshot which shows the ranking posts for Shark Shield. You have a bunch of them.
Whether by luck of judgement your views which you use to display the ranking data for Shark Shield are set to retrieve the most recent ranking post (for which Shark Shield is the parent). The post from 22 December 2016 is currently the most recent post, so your ranking data for the first two views appear correctly on the front end, because that 22 Dec ranking post has the custom fields for wa-rank and wa-best-ever-rank populated.
Looking at the publication dates, before you published the 22 Dec ranking post there would have been a time when the 2016 annual rank post was the most recent, and that doesn't have entries for the wa-rank and wa-best-ever-rank custom fields, so they would have been missing on the front end.
Anyway, your new view for wa-annual-rank-2016 doesn't output anything because it is trying to output the value of the custom field wa-annual-rank-2016 which is set on the 2016 annual rank post but the post returned by the view is the most recent ranking post, i.e. the 22 Dec ranking post, which doesn't have the field set.
You need a way to filter the ranking posts so that it doesn't just come up with the most recent ranking post for which Shark Shield is the parent, but gets your annual ranking post.
You have two options, I think. One is to make a new post type for the annual ranking posts and filter by that.
Or you could add a taxonomy to the annual ranking posts to distinguish them and add a second filter for that.
By the way, as the views for current-rank and best-rank are identical aside from the field you output, you might want to amalgamate them to save yourself an additional query.