Since time can only be entered against Projects, Tasks, Issues, or as General Time, you could model one of those levels to represent each Portfolio / Program, such as:
create a General Time entry for each unique Portfolio and each Portfolio / Program of interest
create one Project for each Portfolio for Portfolio Time, and one Task for every Program for Program Time
create a Project to house all such time, with one Task for each Portfolio for Portfolio Time, and one Issue for every Program for Program Time