I believe that considering temporal aspect of reality captured in your data model should begin with very explicit distinction between valid time and transaction time dimensions; your example approach with CEO "at point in time" having "CEO" state accompanied by just one generic temporal dimension state "When" may be good enough as long as you do not consider multiple sources of your captured "facts" on fine grain time scales. Otherwise, if you turn to mentioned in your question matter of share prices and their relationships, like between value of S&P 500 index and prices of its constituents, you cannot get away from distinguishing these two dimensions and capturing them in your internal data state: the value of S&P 500 index have sense only with regard to some transaction time as you need to collect constituent prices at some valid time moment and perform (not instantaneous) weighting and calculations in order to come up with index value at some later transaction time moment, which, in fact, is value for the past moment of valid time.
Or, even staying within your example, imagine that you are required by some compliance regiment to audit anytime what was your response at some moment in the past. In other words, your time specificator
historicalDate(date: <time expression>)
is a particular variant of more generic case
historicalDate(date: <valid time expression>,
asOf: <transaction time expression>)
so historicalDate(Today() - 1yr)
is, in fact,
historicalDate(Today() - 1yr, Now())
, but, in principle, may be
historicalDate(Today() - 1yr, Now() - 20days)
Dealing with data bitemporally is not a matter simple enough to give a short one-fits-all recipe on taming it through specific language mechanisms like computation expressions. It definitely would be a good idea to do some reading. If being asked what a single book I may recommend on the subject, my answer would be Managing Time in Relational Databases, otherwise if you want exhaustive research you may also consider classic
Developing Time-Oriented Database Applications in SQL and Temporal Data & the Relational Model.
Maybe someone else can point you to approaches of handling temporal data state outside of relational-based persistence mechanism, but my own experience is limited only to the such.