mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-08-20 13:00:01 +00:00
wip, testing is_quantamental_dataframe
This commit is contained in:
parent
fee5ae4de8
commit
03b94fa462
72
src/main.rs
72
src/main.rs
@ -1,5 +1,5 @@
|
|||||||
use msyrs::download::jpmaqsdownload::{JPMaQSDownload, JPMaQSDownloadGetIndicatorArgs};
|
use msyrs::download::jpmaqsdownload::{JPMaQSDownload, JPMaQSDownloadGetIndicatorArgs};
|
||||||
|
use msyrs::utils::dftools::is_quantamental_dataframe;
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Authentication to DataQuery API");
|
println!("Authentication to DataQuery API");
|
||||||
let mut jpamqs_download = JPMaQSDownload::default();
|
let mut jpamqs_download = JPMaQSDownload::default();
|
||||||
@ -8,7 +8,7 @@ fn main() {
|
|||||||
jpamqs_download.check_connection().unwrap();
|
jpamqs_download.check_connection().unwrap();
|
||||||
|
|
||||||
println!("Retrieving catalogue of tickers");
|
println!("Retrieving catalogue of tickers");
|
||||||
let mut start = std::time::Instant::now();
|
let start = std::time::Instant::now();
|
||||||
let tickers = jpamqs_download.get_catalogue().unwrap();
|
let tickers = jpamqs_download.get_catalogue().unwrap();
|
||||||
println!(
|
println!(
|
||||||
"Retrieved catalogue with {} tickers in {:?}",
|
"Retrieved catalogue with {} tickers in {:?}",
|
||||||
@ -25,40 +25,46 @@ fn main() {
|
|||||||
// let mut df_deets = Vec::new();
|
// let mut df_deets = Vec::new();
|
||||||
|
|
||||||
println!("Retrieving indicators for {} tickers", sel_tickers.len());
|
println!("Retrieving indicators for {} tickers", sel_tickers.len());
|
||||||
start = std::time::Instant::now();
|
// start = std::time::Instant::now();
|
||||||
let all_metrics: Vec<String> = ["value", "grading", "eop_lag", "mop_lag"]
|
// let all_metrics: Vec<String> = ["value", "grading", "eop_lag", "mop_lag"]
|
||||||
.iter()
|
// .iter()
|
||||||
.map(|x| x.to_string())
|
// .map(|x| x.to_string())
|
||||||
.collect();
|
// .collect();
|
||||||
let res = jpamqs_download.save_indicators_as_csv(
|
// let res = jpamqs_download.save_indicators_as_csv(
|
||||||
JPMaQSDownloadGetIndicatorArgs {
|
// JPMaQSDownloadGetIndicatorArgs {
|
||||||
|
// tickers: sel_tickers.clone(),
|
||||||
|
// metrics: all_metrics,
|
||||||
|
// ..Default::default()
|
||||||
|
// },
|
||||||
|
// "./data/",
|
||||||
|
// );
|
||||||
|
|
||||||
|
// match res {
|
||||||
|
// Ok(_) => println!(
|
||||||
|
// "Saved indicators for {} tickers in {:?}",
|
||||||
|
// sel_tickers.len(),
|
||||||
|
// start.elapsed()
|
||||||
|
// ),
|
||||||
|
// Err(e) => println!("Error saving indicators: {:?}", e),
|
||||||
|
// }
|
||||||
|
|
||||||
|
let res_df = jpamqs_download
|
||||||
|
.get_indicators_qdf(JPMaQSDownloadGetIndicatorArgs {
|
||||||
tickers: sel_tickers.clone(),
|
tickers: sel_tickers.clone(),
|
||||||
metrics: all_metrics,
|
start_date: "2024-11-05".to_string(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
})
|
||||||
"./data/",
|
.unwrap();
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"Retrieved indicators for {} tickers in {:?}",
|
||||||
|
sel_tickers.len(),
|
||||||
|
start.elapsed()
|
||||||
);
|
);
|
||||||
|
|
||||||
match res {
|
if !is_quantamental_dataframe(&res_df) {
|
||||||
Ok(_) => println!(
|
println!("DataFrame is not a quantamental DataFrame");
|
||||||
"Saved indicators for {} tickers in {:?}",
|
} else {
|
||||||
sel_tickers.len(),
|
println!("DataFrame is a quantamental DataFrame");
|
||||||
start.elapsed()
|
|
||||||
),
|
|
||||||
Err(e) => println!("Error saving indicators: {:?}", e),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// let mut res_df: DataFrame = jpamqs_download
|
|
||||||
// .get_indicators_qdf(JPMaQSDownloadGetIndicatorArgs {
|
|
||||||
// tickers: sel_tickers.clone(),
|
|
||||||
// start_date: "2024-11-05".to_string(),
|
|
||||||
// ..Default::default()
|
|
||||||
// })
|
|
||||||
// .unwrap();
|
|
||||||
|
|
||||||
// println!(
|
|
||||||
// "Retrieved indicators for {} tickers in {:?}",
|
|
||||||
// sel_tickers.len(),
|
|
||||||
// start.elapsed()
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,49 @@ use polars::prelude::*;
|
|||||||
const QDF_IDX_COLUMNS: [&str; 3] = ["real_date", "cid", "xcat"];
|
const QDF_IDX_COLUMNS: [&str; 3] = ["real_date", "cid", "xcat"];
|
||||||
|
|
||||||
/// Check if a DataFrame is a quantamental DataFrame.
|
/// Check if a DataFrame is a quantamental DataFrame.
|
||||||
fn is_quantamental_dataframe(df: &DataFrame) -> bool {
|
pub fn is_quantamental_dataframe(df: &DataFrame) -> bool {
|
||||||
let columns = df
|
let columns = df
|
||||||
.get_column_names()
|
.get_column_names()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|s| s.as_str())
|
.map(|s| s.as_str())
|
||||||
.collect::<Vec<&str>>();
|
.collect::<Vec<&str>>();
|
||||||
let has_idx_columns = QDF_IDX_COLUMNS.iter().all(|col| columns.contains(col));
|
let has_idx_columns = QDF_IDX_COLUMNS.iter().all(|col| columns.contains(col));
|
||||||
|
if !has_idx_columns {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let real_date_col = df.select(["real_date"]);
|
||||||
|
match real_date_col {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(_) => return false,
|
||||||
|
};
|
||||||
|
|
||||||
// check if real_date is date-type
|
let is_date_dtype = real_date_col
|
||||||
let real_date = df.column("real_date").unwrap();
|
.unwrap()
|
||||||
|
.dtypes()
|
||||||
|
.iter()
|
||||||
|
.all(|dtype| dtype == &DataType::Date);
|
||||||
|
|
||||||
has_idx_columns
|
if !is_date_dtype {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cid_col = df.select(["cid"]);
|
||||||
|
match cid_col {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(_) => return false,
|
||||||
|
};
|
||||||
|
|
||||||
|
let xcat_col = df.select(["xcat"]);
|
||||||
|
match xcat_col {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(_) => return false,
|
||||||
|
};
|
||||||
|
|
||||||
|
// has atleast 1 more column
|
||||||
|
let has_other_columns = columns.len() > 3;
|
||||||
|
if !has_other_columns {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user