Support dynamic source factors in platform runtime

This commit is contained in:
boris
2026-04-22 00:00:43 -07:00
parent 5815379da2
commit e838629c58
5 changed files with 26 additions and 10 deletions

View File

@@ -176,6 +176,8 @@ pub struct DailyFactorSnapshot {
pub pe_ttm: f64,
pub turnover_ratio: Option<f64>,
pub effective_turnover_ratio: Option<f64>,
#[serde(default)]
pub extra_factors: BTreeMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -938,6 +940,12 @@ fn read_factors(path: &Path) -> Result<Vec<DailyFactorSnapshot>, DataSetError> {
pe_ttm: row.parse_f64(4)?,
turnover_ratio: row.parse_optional_f64(5),
effective_turnover_ratio: row.parse_optional_f64(6),
extra_factors: row
.fields
.get(7)
.filter(|value| !value.trim().is_empty())
.and_then(|value| serde_json::from_str::<BTreeMap<String, f64>>(value).ok())
.unwrap_or_default(),
});
}
Ok(snapshots)