From 59a34f02204a6c68587914bfcd52e9b3daf7d2b3 Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Thu, 14 Nov 2024 02:02:00 +0000 Subject: [PATCH] docs: update README with Jupyter setup instructions and add test notebook for data download --- README.md | 43 ++++--- notebooks/test-notebook.ipynb | 220 ++++++++++++++++++++++++++++++++++ 2 files changed, 247 insertions(+), 16 deletions(-) create mode 100644 notebooks/test-notebook.ipynb diff --git a/README.md b/README.md index 45f8373..5c6841a 100644 --- a/README.md +++ b/README.md @@ -2,26 +2,37 @@ A Rust implementation of the [Macrosynergy Python Package](https://github.com/macrosynergy/macrosynergy). +## Running Notebook + +```bash +cargo install evcxr_jupyter +evcxr_jupyter --install +pip install jupyterlab +jupyter lab +``` + +Or try following this guide here: [DataCrayon - Setup Jupyter with Rust](https://datacrayon.com/data-analysis-with-rust-notebooks/setup-anaconda-jupyter-and-rust/) + ## Status - - Download - - [x] Get Catalogue - - [x] Get Generic DQ Time Series - - [x] Get JPMaQS Indicators as Polars DataFrame - - [ ] Save to disk functionality - - [x] Hacky iterative method - - [ ] Non-hacky way to save to disk + + - [x] Get Catalogue + - [x] Get Generic DQ Time Series + - [x] Get JPMaQS Indicators as Polars DataFrame + - [ ] Save to disk functionality + - [x] Hacky iterative method + - [ ] Non-hacky way to save to disk - Utils - - [ ] Reduce DF - - [ ] Apply Blacklist - - [ ] Update DF + + - [ ] Reduce DF + - [ ] Apply Blacklist + - [ ] Update DF - Panel - - [ ] Historic Volatility - - [ ] Linear Composites - - [ ] Make Relative Value - - [ ] Imputers - - [ ] Panel Calculator !?! - + - [ ] Historic Volatility + - [ ] Linear Composites + - [ ] Make Relative Value + - [ ] Imputers + - [ ] Panel Calculator !?! diff --git a/notebooks/test-notebook.ipynb b/notebooks/test-notebook.ipynb new file mode 100644 index 0000000..7b4aab1 --- /dev/null +++ b/notebooks/test-notebook.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8d04a212-4025-41d7-809e-864649b08ab5", + "metadata": {}, + "source": [ + "## Setup kernel" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9edf8272-762c-48c6-a003-2b4f484471b1", + "metadata": {}, + "outputs": [], + "source": [ + ":dep msyrs = { path = \"../../msyrs\" }\n", + ":dep polars" + ] + }, + { + "cell_type": "markdown", + "id": "0c8ac34a-d0e5-458d-81a3-f7825ad50612", + "metadata": {}, + "source": [ + "## Download data" + ] + }, + { + "cell_type": "markdown", + "id": "3ba562d3-2f32-4da3-891e-451288077530", + "metadata": {}, + "source": [ + "### Import download functions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "137d6b3e-498d-48b1-8e3c-2f9fedfb64e2", + "metadata": {}, + "outputs": [], + "source": [ + "use msyrs::download::jpmaqsdownload::JPMaQSDownload;\n", + "use msyrs::download::jpmaqsdownload::JPMaQSDownloadGetIndicatorArgs;\n", + "use polars::prelude::*;" + ] + }, + { + "cell_type": "markdown", + "id": "677da413-44b1-4746-b723-c17b0ff0c8a8", + "metadata": {}, + "source": [ + "### Check connection" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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" + } + ], + "source": [ + "let mut jpamqs_download = JPMaQSDownload::default();\n", + "\n", + "match jpamqs_download.check_connection() {\n", + " Ok(_) => println!(\"Connection to DataQuery API successful\"),\n", + " Err(e) => println!(\"Error connecting to DataQuery API: {:?}\", e),\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "612e565f-4fa6-400b-a5ac-a4358dbc05ef", + "metadata": {}, + "source": [ + "### Get catalogue" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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" + ] + } + ], + "source": [ + "let tickers: Vec = jpamqs_download.get_catalogue().unwrap();\n", + "let some_tickers = tickers.iter().take(100).map(|s| s.to_string()).collect::>();\n", + "for ticker in some_tickers.clone() {\n", + " print!(\"{}, \", ticker);\n", + "}\n", + "println!(\"\");" + ] + }, + { + "cell_type": "markdown", + "id": "f3a0bb91-3b3a-4c7e-959e-37311827b884", + "metadata": {}, + "source": [ + "### Setup download args" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "45b1f5fa-d99b-4f24-9b0b-1e04f484efc2", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "// setup arguments\n", + "\n", + "let all_metrics: Vec = [\"value\", \"grading\", \"eop_lag\", \"mop_lag\"]\n", + " .iter()\n", + " .map(|x| x.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" + ] + }, + { + "cell_type": "markdown", + "id": "52d4ec91-a024-4f83-aaec-692f5d2645f9", + "metadata": {}, + "source": [ + "### Download data as a dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "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-12 ┆ ALM ┆ XINVSCORELME_SA_D3M3ML3 ┆ 0.100629 ┆ 1.0 ┆ 12.0 ┆ 103.0 │\n", + "│ 2024-11-13 ┆ ALM ┆ XINVSCORELME_SA_D3M3ML3 ┆ 0.100629 ┆ 1.0 ┆ 13.0 ┆ 104.0 │\n", + "│ 2024-11-11 ┆ ALM ┆ XINVSCORELME_SA_D6M6ML6 ┆ 0.467025 ┆ 1.0 ┆ 11.0 ┆ 193.0 │\n", + "│ 2024-11-12 ┆ ALM ┆ XINVSCORELME_SA_D6M6ML6 ┆ 0.467025 ┆ 1.0 ┆ 12.0 ┆ 194.0 │\n", + "│ 2024-11-13 ┆ ALM ┆ XINVSCORELME_SA_D6M6ML6 ┆ 0.467025 ┆ 1.0 ┆ 13.0 ┆ 195.0 │\n", + "└────────────┴─────┴─────────────────────────┴───────────┴─────────┴─────────┴─────────┘" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "let res_df: DataFrame = jpamqs_download.get_indicators_qdf(download_args).unwrap();\n", + "\n", + "res_df.head(Some(100))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Rust", + "language": "rust", + "name": "rust" + }, + "language_info": { + "codemirror_mode": "rust", + "file_extension": ".rs", + "mimetype": "text/rust", + "name": "Rust", + "pygment_lexer": "rust", + "version": "" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}