mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-08-20 04:10:00 +00:00
201 lines
5.2 KiB
Rust
Vendored
201 lines
5.2 KiB
Rust
Vendored
use msyrs::download::{JPMaQSDownload, JPMaQSDownloadGetIndicatorArgs};
|
|
// use msyrs::download::jpmaqsdownload::*;
|
|
// use msyrs::utils::qdf::load::*;
|
|
// use msyrs::utils::qdf::dftools::*;
|
|
// use msyrs::utils::qdf::core::*;
|
|
use msyrs::utils as msyrs_utils;
|
|
use msyrs::utils::qdf as msyrs_qdf;
|
|
use polars::frame::DataFrame;
|
|
|
|
#[allow(dead_code)]
|
|
fn download_stuff() {
|
|
println!("Authentication to DataQuery API");
|
|
let mut jpamqs_download = JPMaQSDownload::default();
|
|
|
|
println!("Checking connection to DataQuery API");
|
|
jpamqs_download.check_connection().unwrap();
|
|
|
|
println!("Retrieving catalogue of tickers");
|
|
let start = std::time::Instant::now();
|
|
let tickers = jpamqs_download.get_catalogue().unwrap();
|
|
println!(
|
|
"Retrieved catalogue with {} tickers in {:?}",
|
|
tickers.len(),
|
|
start.elapsed()
|
|
);
|
|
|
|
let num_ticks = 100;
|
|
let sel_tickers: Vec<String> = tickers
|
|
.iter()
|
|
.take(num_ticks)
|
|
.map(|s| s.to_string())
|
|
.collect();
|
|
// let mut df_deets = Vec::new();
|
|
|
|
println!("Retrieving indicators for {} tickers", sel_tickers.len());
|
|
|
|
let res_df = 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()
|
|
);
|
|
|
|
if !msyrs_qdf::is_quantamental_dataframe(&res_df) {
|
|
println!("DataFrame is not a quantamental DataFrame");
|
|
} else {
|
|
println!("DataFrame is a quantamental DataFrame");
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
fn load_mega_df() -> DataFrame {
|
|
let start = std::time::Instant::now();
|
|
let st_pth = "E:\\Work\\jpmaqs-data\\data";
|
|
|
|
let mega_df = msyrs_qdf::load::load_qdf_from_download_bank(
|
|
st_pth,
|
|
None,
|
|
None,
|
|
Some(vec![
|
|
"AUD_EQXR_NSA",
|
|
"USD_EQXR_NSA",
|
|
"GBP_EQXR_NSA",
|
|
"JPY_EQXR_NSA",
|
|
"AUD_RIR_NSA",
|
|
"USD_RIR_NSA",
|
|
"GBP_RIR_NSA",
|
|
"JPY_RIR_NSA",
|
|
]),
|
|
)
|
|
.unwrap();
|
|
|
|
let end = start.elapsed();
|
|
println!("Loaded Mega DataFrame in {:?}", end);
|
|
mega_df
|
|
}
|
|
|
|
fn main() {
|
|
nb();
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
fn nb() {
|
|
let cids_dm = vec![
|
|
"AUD", "CAD", "CHF", "EUR", "GBP", "JPY", "NOK", "NZD", "SEK", "USD",
|
|
];
|
|
let cids_em = vec![
|
|
"CLP", "COP", "CZK", "HUF", "IDR", "ILS", "INR", "KRW", "MXN", "PLN", "THB", "TRY", "TWD",
|
|
"ZAR",
|
|
];
|
|
|
|
// cids = cids_dm + cids_em
|
|
let cids: Vec<String> = cids_dm
|
|
.iter()
|
|
.chain(cids_em.iter())
|
|
.map(|s| s.to_string())
|
|
.collect();
|
|
|
|
let non_dux = ["IDR", "NZD"];
|
|
#[allow(unused_variables)]
|
|
let cids_dux: Vec<String> = cids
|
|
.iter()
|
|
.filter(|s| !non_dux.contains(&s.as_str()))
|
|
.map(|s| s.to_string())
|
|
.collect();
|
|
let ecos = vec![
|
|
"CPIC_SA_P1M1ML12",
|
|
"CPIC_SJA_P3M3ML3AR",
|
|
"CPIC_SJA_P6M6ML6AR",
|
|
"CPIH_SA_P1M1ML12",
|
|
"CPIH_SJA_P3M3ML3AR",
|
|
"CPIH_SJA_P6M6ML6AR",
|
|
"INFTEFF_NSA",
|
|
"INTRGDP_NSA_P1M1ML12_3MMA",
|
|
"INTRGDPv5Y_NSA_P1M1ML12_3MMA",
|
|
"PCREDITGDP_SJA_D1M1ML12",
|
|
"RGDP_SA_P1Q1QL4_20QMA",
|
|
"RYLDIRS02Y_NSA",
|
|
"RYLDIRS05Y_NSA",
|
|
"PCREDITBN_SJA_P1M1ML12",
|
|
];
|
|
let mkts = vec![
|
|
"DU02YXR_NSA",
|
|
"DU05YXR_NSA",
|
|
"DU02YXR_VT10",
|
|
"DU05YXR_VT10",
|
|
"EQXR_NSA",
|
|
"EQXR_VT10",
|
|
"FXXR_NSA",
|
|
"FXXR_VT10",
|
|
"FXCRR_NSA",
|
|
"FXTARGETED_NSA",
|
|
"FXUNTRADABLE_NSA",
|
|
];
|
|
|
|
let xcats: Vec<String> = ecos
|
|
.iter()
|
|
.chain(mkts.iter())
|
|
.map(|s| s.to_string())
|
|
.collect();
|
|
|
|
let cids_str: Vec<&str> = cids.iter().map(AsRef::as_ref).collect();
|
|
let xcats_str: Vec<&str> = xcats.iter().map(AsRef::as_ref).collect();
|
|
let download_tickers = msyrs_utils::misc::create_interesecting_tickers(&cids_str, &xcats_str);
|
|
|
|
let mut jpmaqs_client = JPMaQSDownload::default();
|
|
let downloaded_df = jpmaqs_client
|
|
.get_indicators_qdf(JPMaQSDownloadGetIndicatorArgs {
|
|
tickers: download_tickers,
|
|
..Default::default()
|
|
})
|
|
.unwrap();
|
|
|
|
println!("Downloaded DF:\n{:?}", downloaded_df.head(Some(10)));
|
|
|
|
let eq_df = msyrs_qdf::reduce_dataframe(
|
|
downloaded_df.clone(),
|
|
None,
|
|
Some(vec!["EQXR_NSA", "EQXR_VT10"]),
|
|
None,
|
|
// None,
|
|
Some("2024-11-12"),
|
|
None,
|
|
false,
|
|
)
|
|
.unwrap();
|
|
|
|
println!("{:?}", eq_df.head(Some(10)));
|
|
|
|
let fx_df = msyrs_qdf::reduce_dataframe(
|
|
downloaded_df,
|
|
None,
|
|
Some(vec![
|
|
"FXXR_NSA",
|
|
"FXXR_VT10",
|
|
"FXCRR_NSA",
|
|
"FXTARGETED_NSA",
|
|
"FXUNTRADABLE_NSA",
|
|
]),
|
|
None,
|
|
// None,
|
|
Some("2024-11-12"),
|
|
None,
|
|
true,
|
|
)
|
|
.unwrap();
|
|
|
|
println!("{:?}", fx_df.head(Some(10)));
|
|
|
|
let custom_df = msyrs_qdf::update_dataframe(&fx_df, &eq_df).unwrap();
|
|
|
|
println!("{:?}", custom_df.head(Some(20)));
|
|
}
|