mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-08-20 13:10:00 +00:00
docs: update README with Jupyter setup instructions and add test notebook for data download
This commit is contained in:
parent
abf699f38c
commit
59a34f0220
43
README.md
43
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 !?!
|
||||
|
220
notebooks/test-notebook.ipynb
Normal file
220
notebooks/test-notebook.ipynb
Normal file
@ -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<String> = jpamqs_download.get_catalogue().unwrap();\n",
|
||||
"let some_tickers = tickers.iter().take(100).map(|s| s.to_string()).collect::<Vec<String>>();\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<String> = [\"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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user