Why aren't my pages caching?
In general, this is pretty hard to answer without going into details and knowing what you did with your site. But to give you a few starting points...


To ask the obvious, you are testing this as an anonymous user without a session, right?
If you do have a session, check what values you have in there and who sets them
One thing to grep for is \Drupal::service('page_cache_kill_switch')->trigger();, although it could also be injected, so just look for ->trigger(). That's the equivalent of drupal_page_is_cacheable(FALSE) although are other ways to plug into that too.
Typical modules that set this are captcha or poll
If all else fails, look at FinishResponseSubscriber, that's the one that  adds those headers, specifically look at the request policies that return if a page is cacheable or not (the kill switch is one of those, as is the check for a session)