From e9be07bd1eaa22c02b9a41126d288d4824de28cf Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Sun, 17 Nov 2024 05:33:50 +0000 Subject: [PATCH] updating nb --- notebooks/test-notebook.ipynb | 348 +++++++++++++++++++++++++--------- 1 file changed, 261 insertions(+), 87 deletions(-) diff --git a/notebooks/test-notebook.ipynb b/notebooks/test-notebook.ipynb index f67ef0c..af83a83 100644 --- a/notebooks/test-notebook.ipynb +++ b/notebooks/test-notebook.ipynb @@ -5,12 +5,12 @@ "id": "8d04a212-4025-41d7-809e-864649b08ab5", "metadata": {}, "source": [ - "## Setup kernel" + "## Setup kernel\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "9edf8272-762c-48c6-a003-2b4f484471b1", "metadata": {}, "outputs": [], @@ -24,7 +24,76 @@ "id": "0c8ac34a-d0e5-458d-81a3-f7825ad50612", "metadata": {}, "source": [ - "## Download data" + "## Download data\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57a15e6b", + "metadata": {}, + "outputs": [], + "source": [ + "let cids_dm = vec![\n", + " \"AUD\", \"CAD\", \"CHF\", \"EUR\", \"GBP\", \"JPY\", \"NOK\", \"NZD\", \"SEK\", \"USD\",\n", + "];\n", + "let cids_em = vec![\n", + " \"CLP\", \"COP\", \"CZK\", \"HUF\", \"IDR\", \"ILS\", \"INR\", \"KRW\", \"MXN\", \"PLN\", \"THB\", \"TRY\", \"TWD\",\n", + " \"ZAR\",\n", + "];\n", + "\n", + "// cids = cids_dm + cids_em\n", + "let cids: Vec = cids_dm\n", + " .iter()\n", + " .chain(cids_em.iter())\n", + " .map(|s| s.to_string())\n", + " .collect();\n", + "\n", + "let non_dux = [\"IDR\", \"NZD\"];\n", + "let cids_dux: Vec = cids\n", + " .iter()\n", + " .filter(|s| !non_dux.contains(&s.as_str()))\n", + " .map(|s| s.to_string())\n", + " .collect();\n", + "let ecos = vec![\n", + " \"CPIC_SA_P1M1ML12\",\n", + " \"CPIC_SJA_P3M3ML3AR\",\n", + " \"CPIC_SJA_P6M6ML6AR\",\n", + " \"CPIH_SA_P1M1ML12\",\n", + " \"CPIH_SJA_P3M3ML3AR\",\n", + " \"CPIH_SJA_P6M6ML6AR\",\n", + " \"INFTEFF_NSA\",\n", + " \"INTRGDP_NSA_P1M1ML12_3MMA\",\n", + " \"INTRGDPv5Y_NSA_P1M1ML12_3MMA\",\n", + " \"PCREDITGDP_SJA_D1M1ML12\",\n", + " \"RGDP_SA_P1Q1QL4_20QMA\",\n", + " \"RYLDIRS02Y_NSA\",\n", + " \"RYLDIRS05Y_NSA\",\n", + " \"PCREDITBN_SJA_P1M1ML12\",\n", + "];\n", + "let mkts = vec![\n", + " \"DU02YXR_NSA\",\n", + " \"DU05YXR_NSA\",\n", + " \"DU02YXR_VT10\",\n", + " \"DU05YXR_VT10\",\n", + " \"EQXR_NSA\",\n", + " \"EQXR_VT10\",\n", + " \"FXXR_NSA\",\n", + " \"FXXR_VT10\",\n", + " \"FXCRR_NSA\",\n", + " \"FXTARGETED_NSA\",\n", + " \"FXUNTRADABLE_NSA\",\n", + "];\n", + "\n", + "let xcats: Vec = ecos\n", + " .iter()\n", + " .chain(mkts.iter())\n", + " .map(|s| s.to_string())\n", + " .collect();\n", + "\n", + "let cids_str: Vec<&str> = cids.iter().map(AsRef::as_ref).collect();\n", + "let xcats_str: Vec<&str> = xcats.iter().map(AsRef::as_ref).collect();\n", + "let download_tickers = msyrs_utils::misc::create_interesecting_tickers(&cids_str, &xcats_str);" ] }, { @@ -32,18 +101,21 @@ "id": "3ba562d3-2f32-4da3-891e-451288077530", "metadata": {}, "source": [ - "### Import download functions" + "### Import download functions\n" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "137d6b3e-498d-48b1-8e3c-2f9fedfb64e2", "metadata": {}, "outputs": [], "source": [ - "use msyrs::download::jpmaqsdownload::JPMaQSDownload;\n", - "use msyrs::download::jpmaqsdownload::JPMaQSDownloadGetIndicatorArgs;\n", + "use msyrs::download::{JPMaQSDownload, JPMaQSDownloadGetIndicatorArgs};\n", + "\n", + "use msyrs::utils as msyrs_utils;\n", + "use msyrs::utils::qdf as msyrs_qdf;\n", + "\n", "use polars::prelude::*;" ] }, @@ -52,34 +124,15 @@ "id": "677da413-44b1-4746-b723-c17b0ff0c8a8", "metadata": {}, "source": [ - "### Check connection" + "### Check connection\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "6bcbfc0c-8249-4253-80b9-257115b50055", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Connection is successful: 200 OK\n", - "Connection to DataQuery API successful\n" - ] - }, - { - "data": { - "text/plain": [ - "()" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "let mut jpamqs_download = JPMaQSDownload::default();\n", "\n", @@ -94,23 +147,15 @@ "id": "612e565f-4fa6-400b-a5ac-a4358dbc05ef", "metadata": {}, "source": [ - "### Get catalogue" + "### Get catalogue\n" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "9ac7096a-fae8-43e9-9584-c5f055a9f14e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AED_FCBICRY_NSA, AED_FCBICRY_VT10, AED_FCBIR_NSA, AED_FCBIXR_NSA, AED_FCBIXR_VT10, AED_GGDGDPRATIO_NSA, AED_GGEGDPRATIO_NSA, AED_GGOBGDPRATIO_NSA, AED_GGPBGDPRATIO_NSA, AED_GGRGDPRATIO_NSA, AED_LTFCRATING_NSA, AED_LTLCRATING_NSA, ALM_COCRR_NSA, ALM_COCRR_SA, ALM_COCRR_SAVT10, ALM_COCRR_VT10, ALM_COCRY_NSA, ALM_COCRY_SA, ALM_COCRY_SAVT10, ALM_COCRY_VT10, ALM_COXR_NSA, ALM_COXR_VT10, ALM_COXRxEASD_NSA, ALM_COXRxLEV10_NSA, ALM_XINVCN_SA, ALM_XINVLME_SA, ALM_XINVSCORECN_SA, ALM_XINVSCORECN_SA_3MMA, ALM_XINVSCORECN_SA_3MMA_D1M1ML12, ALM_XINVSCORECN_SA_D1M1ML1, ALM_XINVSCORECN_SA_D3M3ML3, ALM_XINVSCORECN_SA_D6M6ML6, ALM_XINVSCORELME_SA, ALM_XINVSCORELME_SA_3MMA, ALM_XINVSCORELME_SA_3MMA_D1M1ML12, ALM_XINVSCORELME_SA_D1M1ML1, ALM_XINVSCORELME_SA_D3M3ML3, ALM_XINVSCORELME_SA_D6M6ML6, ALM_XINVSCOREUS_SA, ALM_XINVSCOREUS_SA_3MMA, ALM_XINVSCOREUS_SA_3MMA_D1M1ML12, ALM_XINVSCOREUS_SA_D1M1ML1, ALM_XINVSCOREUS_SA_D3M3ML3, ALM_XINVSCOREUS_SA_D6M6ML6, ALM_XINVUS_SA, ARS_GGOBGDPRATIO_NSA, ARS_GGPBGDPRATIO_NSA, ARS_IIPLIABGDP_NSA, ARS_IIPLIABGDP_NSA_D1M1ML12, ARS_IIPLIABGDP_NSA_D1Mv2YMA, ARS_IIPLIABGDP_NSA_D1Mv5YMA, ARS_LTFCRATING_NSA, ARS_LTLCRATING_NSA, ARS_NIIPGDP_NSA, ARS_NIIPGDP_NSA_D1M1ML12, ARS_NIIPGDP_NSA_D1Mv2YMA, ARS_NIIPGDP_NSA_D1Mv5YMA, AUD_ALLIFCDSGDP_NSA, AUD_BXBGDPRATIO_NSA_12MMA, AUD_BXBGDPRATIO_NSA_12MMA_D1M1ML3, AUD_BXBGDPRATIO_NSA_12MMAv120MMA, AUD_BXBGDPRATIO_NSA_12MMAv60MMA, AUD_CABGDPRATIO_NSA_12MMA, AUD_CABGDPRATIO_SA, AUD_CABGDPRATIO_SA_1QMA_D1Q1QL1, AUD_CABGDPRATIO_SA_1QMAv20QMA, AUD_CABGDPRATIO_SA_2QMA_D1Q1QL2, AUD_CCSCORE_SA, AUD_CCSCORE_SA_3MMA, AUD_CCSCORE_SA_3MMA_D1M1ML12, AUD_CCSCORE_SA_D1M1ML1, AUD_CCSCORE_SA_D3M3ML3, AUD_CCSCORE_SA_D6M6ML6, AUD_CDS02YCRYHvGDRB_NSA, AUD_CDS02YCRY_NSA, AUD_CDS02YCRY_VT10, AUD_CDS02YSPRD_NSA, AUD_CDS02YXRHvGDRB_NSA, AUD_CDS02YXR_NSA, AUD_CDS02YXR_VT10, AUD_CDS02YXRxEASD_NSA, AUD_CDS02YXRxLEV10_NSA, AUD_CDS05YCRYHvGDRB_NSA, AUD_CDS05YCRY_NSA, AUD_CDS05YCRY_VT10, AUD_CDS05YSPRD_NSA, AUD_CDS05YXRHvGDRB_NSA, AUD_CDS05YXR_NSA, AUD_CDS05YXR_VT10, AUD_CDS05YXRxEASD_NSA, AUD_CDS05YXRxLEV10_NSA, AUD_CDS10YCRYHvGDRB_NSA, AUD_CDS10YCRY_NSA, AUD_CDS10YCRY_VT10, AUD_CDS10YSPRD_NSA, AUD_CDS10YXRHvGDRB_NSA, AUD_CDS10YXR_NSA, AUD_CDS10YXR_VT10, AUD_CDS10YXRxEASD_NSA, AUD_CDS10YXRxLEV10_NSA, \n" - ] - } - ], + "outputs": [], "source": [ "let tickers: Vec = jpamqs_download.get_catalogue().unwrap();\n", "let some_tickers = tickers.iter().take(100).map(|s| s.to_string()).collect::>();\n", @@ -125,32 +170,87 @@ "id": "f3a0bb91-3b3a-4c7e-959e-37311827b884", "metadata": {}, "source": [ - "### Setup download args" + "### Setup download args\n" + ] + }, + { + "cell_type": "markdown", + "id": "e6a9506c", + "metadata": {}, + "source": [ + "#### Define tickers for download\n" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "45b1f5fa-d99b-4f24-9b0b-1e04f484efc2", + "execution_count": null, + "id": "bd10ce0d", "metadata": {}, "outputs": [], "source": [ + "// cids = cids_dm + cids_em\n", + "let cids: Vec = cids_dm\n", + " .iter()\n", + " .chain(cids_em.iter())\n", + " .map(|s| s.to_string())\n", + " .collect();\n", "\n", - "// setup arguments\n", + "let non_dux = [\"IDR\", \"NZD\"];\n", + "#[allow(unused_variables)]\n", + "let cids_dux: Vec = cids\n", + " .iter()\n", + " .filter(|s| !non_dux.contains(&s.as_str()))\n", + " .map(|s| s.to_string())\n", + " .collect();\n", + "let ecos = vec![\n", + " \"CPIC_SA_P1M1ML12\",\n", + " \"CPIC_SJA_P3M3ML3AR\",\n", + " \"CPIC_SJA_P6M6ML6AR\",\n", + " \"CPIH_SA_P1M1ML12\",\n", + " \"CPIH_SJA_P3M3ML3AR\",\n", + " \"CPIH_SJA_P6M6ML6AR\",\n", + " \"INFTEFF_NSA\",\n", + " \"INTRGDP_NSA_P1M1ML12_3MMA\",\n", + " \"INTRGDPv5Y_NSA_P1M1ML12_3MMA\",\n", + " \"PCREDITGDP_SJA_D1M1ML12\",\n", + " \"RGDP_SA_P1Q1QL4_20QMA\",\n", + " \"RYLDIRS02Y_NSA\",\n", + " \"RYLDIRS05Y_NSA\",\n", + " \"PCREDITBN_SJA_P1M1ML12\",\n", + "];\n", + "let mkts = vec![\n", + " \"DU02YXR_NSA\",\n", + " \"DU05YXR_NSA\",\n", + " \"DU02YXR_VT10\",\n", + " \"DU05YXR_VT10\",\n", + " \"EQXR_NSA\",\n", + " \"EQXR_VT10\",\n", + " \"FXXR_NSA\",\n", + " \"FXXR_VT10\",\n", + " \"FXCRR_NSA\",\n", + " \"FXTARGETED_NSA\",\n", + " \"FXUNTRADABLE_NSA\",\n", + "];\n", "\n", - "let all_metrics: Vec = [\"value\", \"grading\", \"eop_lag\", \"mop_lag\"]\n", - " .iter()\n", - " .map(|x| x.to_string())\n", - " .collect();\n", + "let xcats: Vec = ecos\n", + " .iter()\n", + " .chain(mkts.iter())\n", + " .map(|s| s.to_string())\n", + " .collect();\n", "\n", - "let download_args = JPMaQSDownloadGetIndicatorArgs {\n", - " tickers: some_tickers,\n", - " start_date: \"2024-11-11\".to_string(),\n", - " // metrics: all_metrics // defaults to all metrics\n", - " ..Default::default()\n", - "};\n" + "let cids_str: Vec<&str> = cids.iter().map(AsRef::as_ref).collect();\n", + "let xcats_str: Vec<&str> = xcats.iter().map(AsRef::as_ref).collect();\n", + "let download_tickers = msyrs_utils::misc::create_interesecting_tickers(&cids_str, &xcats_str);" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "45b1f5fa-d99b-4f24-9b0b-1e04f484efc2", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "52d4ec91-a024-4f83-aaec-692f5d2645f9", @@ -161,42 +261,116 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "12e7055b-c68f-4b6e-9bb3-43c1886dab97", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "shape: (100, 7)\n", - "┌────────────┬─────┬────────────────────────┬───────────┬─────────┬─────────┬─────────┐\n", - "│ real_date ┆ cid ┆ xcat ┆ value ┆ grading ┆ eop_lag ┆ mop_lag │\n", - "│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │\n", - "│ date ┆ str ┆ str ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", - "╞════════════╪═════╪════════════════════════╪═══════════╪═════════╪═════════╪═════════╡\n", - "│ 2024-11-11 ┆ AED ┆ FCBICRY_NSA ┆ 5.133382 ┆ 1.0 ┆ 0.0 ┆ 0.0 │\n", - "│ 2024-11-12 ┆ AED ┆ FCBICRY_NSA ┆ 5.170067 ┆ 1.0 ┆ 0.0 ┆ 0.0 │\n", - "│ 2024-11-13 ┆ AED ┆ FCBICRY_NSA ┆ 5.187262 ┆ 1.0 ┆ 0.0 ┆ 0.0 │\n", - "│ 2024-11-11 ┆ AED ┆ FCBICRY_VT10 ┆ 13.853753 ┆ 1.0 ┆ 0.0 ┆ 0.0 │\n", - "│ 2024-11-12 ┆ AED ┆ FCBICRY_VT10 ┆ 13.952759 ┆ 1.0 ┆ 0.0 ┆ 0.0 │\n", - "│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n", - "│ 2024-11-13 ┆ ALM ┆ XINVSCORECN_SA_D6M6ML6 ┆ 0.803339 ┆ 1.0 ┆ 13.0 ┆ 195.0 │\n", - "│ 2024-11-11 ┆ ALM ┆ XINVSCORELME_SA ┆ -1.000911 ┆ 1.0 ┆ 11.0 ┆ 26.0 │\n", - "│ 2024-11-12 ┆ ALM ┆ XINVSCORELME_SA ┆ -1.000911 ┆ 1.0 ┆ 12.0 ┆ 27.0 │\n", - "│ 2024-11-13 ┆ ALM ┆ XINVSCORELME_SA ┆ -1.000911 ┆ 1.0 ┆ 13.0 ┆ 28.0 │\n", - "│ 2024-11-11 ┆ ALM ┆ XINVSCORELME_SA_3MMA ┆ -1.017197 ┆ 1.0 ┆ 11.0 ┆ 56.0 │\n", - "└────────────┴─────┴────────────────────────┴───────────┴─────────┴─────────┴─────────┘" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "let res_df: DataFrame = jpamqs_download.get_indicators_qdf(download_args).unwrap();\n", + "let all_metrics: Vec = [\"value\", \"grading\", \"eop_lag\", \"mop_lag\"]\n", + " .iter()\n", + " .map(|x| x.to_string())\n", + " .collect();\n", "\n", - "res_df.head(Some(100))" + "let download_args = JPMaQSDownloadGetIndicatorArgs {\n", + " tickers: download_tickers,\n", + " metrics: all_metrics // defaults to all metrics if not set\n", + " ..Default::default()\n", + "};\n", + "\n", + "let mut jpmaqs_client = JPMaQSDownload::default();\n", + "let downloaded_df = jpmaqs_client\n", + " .get_indicators_qdf(JPMaQSDownloadGetIndicatorArgs {\n", + " tickers: download_tickers,\n", + " ..Default::default()\n", + " })\n", + " .unwrap();\n", + "\n", + "downloaded_df.head(Some(100))" + ] + }, + { + "cell_type": "markdown", + "id": "a0193ded", + "metadata": {}, + "source": [ + "## Utility functions" + ] + }, + { + "cell_type": "markdown", + "id": "6f6c6455", + "metadata": {}, + "source": [ + "### Reduce DF" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10b264fe", + "metadata": {}, + "outputs": [], + "source": [ + "let eq_df = msyrs_qdf::reduce_dataframe(\n", + " downloaded_df.clone(),\n", + " None,\n", + " Some(vec![\"EQXR_NSA\", \"EQXR_VT10\"]),\n", + " None,\n", + " // None,\n", + " None,\n", + " None,\n", + " false,\n", + ")\n", + ".unwrap();\n", + "\n", + "println!(\"{:?}\", eq_df.head(Some(10)));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3f3b0c6", + "metadata": {}, + "outputs": [], + "source": [ + "let fx_df = msyrs_qdf::reduce_dataframe(\n", + " downloaded_df,\n", + " None,\n", + " Some(vec![\n", + " \"FXXR_NSA\",\n", + " \"FXXR_VT10\",\n", + " \"FXCRR_NSA\",\n", + " \"FXTARGETED_NSA\",\n", + " \"FXUNTRADABLE_NSA\",\n", + " ]),\n", + " None,\n", + " None,\n", + " None,\n", + " true, // intersect = true \n", + ")\n", + ".unwrap();\n", + "\n", + "println!(\"{:?}\", eq_df.head(Some(10)));" + ] + }, + { + "cell_type": "markdown", + "id": "722063d1", + "metadata": {}, + "source": [ + "### Update DF" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00ecdb90", + "metadata": {}, + "outputs": [], + "source": [ + "let custom_df = msyrs_qdf::update_dataframe(&fx_df, &eq_df).unwrap();\n", + "\n", + "println!(\"{:?}\", custom_df.head(Some(10)));" ] } ], @@ -210,7 +384,7 @@ "codemirror_mode": "rust", "file_extension": ".rs", "mimetype": "text/rust", - "name": "Rust", + "name": "rust", "pygment_lexer": "rust", "version": "" }