PIT Target Policy¶
alphaforge.pit.target
¶
Target policy — release-selection logic for PIT series.
Provides :class:TargetPolicy and helpers for resolving target values
from point-in-time release streams. The functions are generic and work
with any :class:~alphaforge.pit.adapters.base.PITAdapter implementation.
TargetPolicy
dataclass
¶
Configuration for selecting a target value from available releases.
Attributes:
| Name | Type | Description |
|---|---|---|
mode |
Literal['latest_available', 'nth_release', 'next_release']
|
Selection strategy.
|
nth |
int | None
|
Required when mode is |
max_release_rank |
int | None
|
Optional cap on the number of releases considered. |
get_quarterly_release_observation_stream(adapter: PITAdapter, *, series_key: str, ref_quarter: str | pd.Period, asof_date: date, max_release_rank: int | None = None, obs_date_anchor: Literal['end', 'start'] = 'end') -> pd.DataFrame
¶
Return a time-ordered observation stream of quarterly releases.
list_quarterly_target_releases_asof(adapter: PITAdapter, *, series_key: str, ref_quarter: str | pd.Period, asof_date: date, obs_date_anchor: Literal['end', 'start'] = 'end') -> pd.DataFrame
¶
List available quarterly releases up to an as-of date.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
adapter
|
PITAdapter
|
PIT adapter that supports |
required |
series_key
|
str
|
PIT series key for the target series. |
required |
ref_quarter
|
str | Period
|
Quarterly reference in |
required |
asof_date
|
date
|
Vintage cut-off date (treated as end-of-day UTC). |
required |
obs_date_anchor
|
Literal['end', 'start']
|
Observation date anchor policy. |
'end'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame sorted by |
DataFrame
|
|
DataFrame
|
and |
list_quarterly_target_releases_asof_multi(adapter: PITAdapter, *, series_key: str, ref_quarters: Iterable[str | pd.Period], asof_date: date, obs_date_anchor: Literal['end', 'start'] = 'end') -> dict[str, pd.DataFrame]
¶
Batch release lookup for multiple quarterly references at the same as-of date.
quarter_end_date(ref_quarter: str | pd.Period | RefPeriod) -> date
¶
Return the quarter-end date for a reference quarter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ref_quarter
|
str | Period | RefPeriod
|
Quarterly reference in |
required |
Returns:
| Type | Description |
|---|---|
date
|
The calendar quarter-end date. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the reference quarter does not match |
quarter_obs_date(ref_quarter: str | pd.Period | RefPeriod, obs_date_anchor: Literal['end', 'start'] = 'end') -> date
¶
Return the quarter observation date under the configured anchor policy.
quarter_start_date(ref_quarter: str | pd.Period | RefPeriod) -> date
¶
Return the quarter-start date for a reference quarter.
resolve_quarterly_final_target(adapter: PITAdapter, *, series_key: str, ref_quarter: str | pd.Period, evaluation_asof_date: date, policy: TargetPolicy = TargetPolicy(mode='nth_release', nth=3, max_release_rank=3), obs_date_anchor: Literal['end', 'start'] = 'end') -> tuple[float | None, dict]
¶
Resolve a final target value for a quarterly reference.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
adapter
|
PITAdapter
|
PIT adapter that supports |
required |
series_key
|
str
|
PIT series key for the target series. |
required |
ref_quarter
|
str | Period
|
Quarterly reference in |
required |
evaluation_asof_date
|
date
|
As-of date used to resolve the final target proxy. |
required |
policy
|
TargetPolicy
|
Target selection policy (defaults to nth_release=3 capped to 3 releases). |
TargetPolicy(mode='nth_release', nth=3, max_release_rank=3)
|
obs_date_anchor
|
Literal['end', 'start']
|
Observation date anchor policy. |
'end'
|
Returns:
| Type | Description |
|---|---|
tuple[float | None, dict]
|
Tuple of (value, metadata) from |
resolve_target_from_releases(releases: pd.DataFrame, policy: TargetPolicy) -> tuple[float | None, dict]
¶
Resolve a target value from available releases.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
releases
|
DataFrame
|
DataFrame containing |
required |
policy
|
TargetPolicy
|
Target policy configuration. |
required |
Returns:
| Type | Description |
|---|---|
float | None
|
Tuple of (value, metadata). |
dict
|
a release. Metadata includes: |
tuple[float | None, dict]
|
|
tuple[float | None, dict]
|
|
tuple[float | None, dict]
|
and |
tuple[float | None, dict]
|
while |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the policy configuration is invalid. |
resolve_target_obs_date_anchor(target_obs_date_anchor: Literal['auto', 'end', 'start'], *, target_series_key: str, catalog: SeriesCatalog | None) -> Literal['end', 'start']
¶
Resolve the effective target observation anchor.
Resolution policy:
1. Explicit "start" or "end" is honored.
2. "auto" uses catalog metadata obs_date_anchor for the target series.
3. If metadata is missing/unknown, fallback is "end".