52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
"""Scope mappings for different game structures."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Dict, Iterable, Set
|
|
|
|
from .protocols import GameStructure
|
|
|
|
|
|
_GAME_SCOPE_MAP: Dict[GameStructure, Set[str]] = {
|
|
GameStructure.REPEATED: {
|
|
"daily.close",
|
|
"daily.open",
|
|
"daily.high",
|
|
"daily.low",
|
|
"daily_basic.turnover_rate",
|
|
"daily_basic.turnover_rate_f",
|
|
},
|
|
GameStructure.SIGNALING: {
|
|
"daily.close",
|
|
"daily.high",
|
|
"daily_basic.turnover_rate",
|
|
"daily_basic.volume_ratio",
|
|
"factors.sent_momentum",
|
|
"factors.sent_market",
|
|
},
|
|
GameStructure.BAYESIAN: {
|
|
"daily.close",
|
|
"daily_basic.turnover_rate",
|
|
"factors.mom_20",
|
|
"factors.mom_60",
|
|
"factors.val_multiscore",
|
|
"factors.sent_divergence",
|
|
},
|
|
GameStructure.CUSTOM: {
|
|
"factors.risk_penalty",
|
|
"factors.turn_20",
|
|
"factors.volat_20",
|
|
"daily_basic.turnover_rate",
|
|
},
|
|
}
|
|
|
|
|
|
def scope_for_structures(structures: Iterable[GameStructure]) -> Set[str]:
|
|
scope: Set[str] = set()
|
|
for structure in structures:
|
|
scope.update(_GAME_SCOPE_MAP.get(structure, set()))
|
|
return scope
|
|
|
|
|
|
def registered_structures() -> Dict[GameStructure, Set[str]]:
|
|
return {key: set(values) for key, values in _GAME_SCOPE_MAP.items()}
|