We can use 'could have' to talk about something somebody was capable of doing but didn't do.
I could have gone to Oxford University but I preferred Harvard.
She could have married him but she didn't want to.
They could have bought a house here 20 years ago but chose not to.
Often, there is a sense of criticism.
You could have phoned me to let me know.
They could have helped me instead of just sitting there.
I could have done more to help you. Sorry.
We can use 'couldn't have' to talk about something we were not capable of doing.
I couldn't have managed without you.
I couldn't have got the job. He was always going to appoint his nephew.
I couldn't have enjoyed myself more. Thank you for a lovely day.
We can use 'could have' to speculate about what has happened. (We can also use 'may have' or 'might have' in these situations.)
She could have taken the earlier train.
Simon could have told her.
They could have overheard what we said.
We can also use 'can have' to speculate about what has happened but only in questions and negative sentences and with words such as 'hardly', 'never' and 'only'.
Can she have forgotten about our meeting?
He can't have seen us.
They can hardly have thought that I was not interested in the job.
We can also use 'could have' to speculate about something that didn't happen.
You could have broken your neck, jumping out the window like that.
He could have hurt somebody, throwing a bottle out of the window like that.
I could have done well in my exam if I'd worked harder.
You can also use 'could have' to talk about possible present situations that have not happened.
I could have been earning a lot as an accountant but the work was just too boring.
He could have been Prime Minister now but he got involved in a big financial scandal.
They could have been the market leaders now if they had taken his advice.