Support dynamic source factors in platform runtime
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user