Why does contract status show active even though the contract's end date is in the past period?

When the contract end date is reached or past period for an active contract,the contract status changes to expired only when you run the Update Contract Status process.

When you change the contract status to hold, the Update Contract Status process will ignore contracts or contract lines on hold and not change them to the Expired status.