From 95fca15989336ff4b80525115985a355ce20b9e1 Mon Sep 17 00:00:00 2001 From: Filippos Papadopoulos Date: Tue, 29 Sep 2020 13:12:55 +0200 Subject: [PATCH] 0.4.7 version: PYT26038 example files; Logarithmic Sankey visualization; Expanded documentation --- CHANGELOG.rst | 13 +- README.md | 20 +- TODO.rst | 31 +- datasets/synthetic_data9.csv | 2618 +++++++++-------- description.rst | 57 +- docs/Makefile | 20 + docs/source/basic_operations.rst | 52 + docs/source/conf.py | 4 +- docs/source/credit_curves.rst | 16 + docs/source/data_formats.rst | 28 +- docs/source/examples.rst | 182 -- docs/source/further_examples.rst | 76 + docs/source/multi-period_transitions.rst | 29 + docs/source/predefined_rating_scales.rst | 40 +- docs/source/state_spaces.rst | 18 + docs/source/transitionMatrix.utils.rst | 2 +- docs/source/usage.rst | 12 +- docs/source/visualization.rst | 50 + examples/academy_course_PYT26038/step1.py | 75 + examples/academy_course_PYT26038/step2.py | 31 + examples/academy_course_PYT26038/step3.py | 41 + examples/academy_course_PYT26038/step4.py | 39 + examples/academy_course_PYT26038/step5.py | 50 + .../notebooks/Adjust_NotRated_State.ipynb | 2 +- examples/notebooks/Matrix_Operations.ipynb | 2 +- examples/python/adjust_nr_state.py | 2 +- examples/python/credit_curves.py | 2 +- .../python/empirical_transition_matrix.py | 2 +- examples/python/fix_multiperiod_matrix.py | 2 +- .../python/generate_full_multiperiod_set.py | 2 +- examples/python/generate_synthetic_data.py | 2 +- examples/python/generate_visuals.py | 54 +- examples/python/matrix_from_cohort_data.py | 2 +- examples/python/matrix_from_duration_data.py | 2 +- examples/python/matrix_lendingclub.py | 2 +- examples/python/matrix_operations.py | 2 +- examples/python/matrix_set_lendingclub.py | 2 +- examples/python/matrix_set_operations.py | 2 +- examples/python/state_space_operations.py | 2 +- examples/sankey.png | Bin 0 -> 24838 bytes requirements.txt | 43 +- run_examples.py | 2 +- setup.py | 4 +- test.py | 2 +- tests/test_datasets.py | 2 +- tests/test_estimators.py | 2 +- tests/test_model.py | 2 +- tests/test_utils.py | 2 +- transitionMatrix/__init__.py | 12 +- transitionMatrix/estimators/__init__.py | 2 +- .../estimators/aalen_johansen_estimator.py | 2 +- .../estimators/cohort_estimator.py | 2 +- .../estimators/kaplan_meier_estimator.py | 2 +- .../estimators/simple_estimator.py | 2 +- transitionMatrix/model.py | 30 +- transitionMatrix/predefined.py | 2 +- transitionMatrix/utils/__init__.py | 2 +- transitionMatrix/utils/converters.py | 2 +- transitionMatrix/utils/dataset_generators.py | 2 +- transitionMatrix/utils/preprocessing.py | 2 +- 60 files changed, 2088 insertions(+), 1621 deletions(-) create mode 100644 docs/Makefile create mode 100644 docs/source/basic_operations.rst create mode 100644 docs/source/credit_curves.rst delete mode 100644 docs/source/examples.rst create mode 100644 docs/source/further_examples.rst create mode 100644 docs/source/multi-period_transitions.rst create mode 100644 docs/source/state_spaces.rst create mode 100644 docs/source/visualization.rst create mode 100644 examples/academy_course_PYT26038/step1.py create mode 100644 examples/academy_course_PYT26038/step2.py create mode 100644 examples/academy_course_PYT26038/step3.py create mode 100644 examples/academy_course_PYT26038/step4.py create mode 100644 examples/academy_course_PYT26038/step5.py create mode 100644 examples/sankey.png diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2c3cbf0..2110ed8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,16 +1,23 @@ ChangeLog =========================== -PLEASE NOTE THAT THE API IS STILL UNSTABLE AS MORE USE CASES / FEATURES ARE ADDED REGULARLY +PLEASE NOTE THAT THE API OF TRANSITION MATRIX IS STILL UNSTABLE AS MORE USE CASES / FEATURES ARE ADDED REGULARLY -v0.4.6 (05-22-2019) +v0.4.7 (29-09-2020) +------------------- + +* Documentation: Expanded and updated description of classes +* Documentation: Including Open Risk Academy code examples +* Feature: logarithmic sankey visualization + +v0.4.6 (22-05-2019) ------------------- * Feature: Update of CQS Mappings, addition of new rating scales * Documentation: Documentation of rating scale structure and mappings * Training: Example of mapping portfolio data to CQS -v0.4.5 (04-21-2019) +v0.4.5 (21-04-2019) ------------------- * Training: Monthly_from_Annual.ipynb (a Jupyter notebook illustrating how to obtain interpolate transition rates on monthly intervals) diff --git a/README.md b/README.md index e9613a3..db9bca4 100644 --- a/README.md +++ b/README.md @@ -47,35 +47,39 @@ large number of examples, jupyter notebooks and more. Plotting individual transition trajectories -![image](examples/single_entity.png) +![single entity](examples/single_entity.png) Sampling transition data -![image](examples/sampled_histories.png) +![sampled histories](examples/sampled_histories.png) Estimation of transition matrices using cohort methods -![image](examples/estimation.png) +![estimation](examples/estimation.png) Estimation of transition matrices using duration methods -![image](examples/transition_probabilities.png) +![transition probabilities](examples/transition_probabilities.png) Visualization of a transition matrix -![image](examples/TransitionMatrix.png) +![transition matrix](examples/TransitionMatrix.png) + +Visualization using a Logarithmic Sankey diagram + +![logarithmic sankey](examples/sankey.png) Generating stochastic process transition thresholds -![image](../portfolioAnalytics/examples/Thresholds.png) +![thresholds](../portfolioAnalytics/examples/Thresholds.png) Stressing Transition Matrices -![image](../portfolioAnalytics/examples/stressed_density.png) +![stressing transition matrices](../portfolioAnalytics/examples/stressed_density.png) Computation and Visualization of Credit Curves -![image](examples/credit_curves.png) +![credit curves](examples/credit_curves.png) Working with credit states diff --git a/TODO.rst b/TODO.rst index 90cd7e9..284d45a 100644 --- a/TODO.rst +++ b/TODO.rst @@ -1,25 +1,40 @@ ToDO List ================== -transitionMatrix is an ongoing project. Several significant extensions are already in the pipeline. You are welcome -to contribute to the development of transitionMatrix by creating Issues or Pull Requests on the github repository +transitionMatrix is an ongoing project. Several significant extensions are already in the pipeline. You are welcome to contribute to the development of transitionMatrix by creating Issues or Pull Requests on the github repository Preprocessing ------------- -- Native handling of Wide Data Format -Statistical ------------ +- Native handling of Wide Data Formats + +Reference Data +-------------- + +- Additional rating scales (e.g short term) + +Core / Statistical Functionality +-------------------------------- - Further validation and characterisation of transition matrices - Fixing common problems encountered by empirically estimated transition matrices -- Generate random matrices subject to constraints - Duration based methods - Bootstrap based confidence intervals -- Absorbing state Identification, Competing risks +- Absorbing State Identification, Competing Risks + +Utilities +--------- + +- Generate random matrices subject to constraints Implementation -------------- -- Sphinx documentation +- Sphinx documentation (improve) - Introduce visualization objects / API + +Documentation +-------------- + +- Expand the notebook collection to (at least) match the standalone scripts + diff --git a/datasets/synthetic_data9.csv b/datasets/synthetic_data9.csv index 14d5550..b292043 100644 --- a/datasets/synthetic_data9.csv +++ b/datasets/synthetic_data9.csv @@ -1,1311 +1,1339 @@ ID,Time,From,To -7,2006-01-01,2,2 -9,2006-01-01,2,2 -13,2006-01-01,3,3 -16,2006-01-01,1,1 -19,2006-01-01,7,7 -32,2006-01-01,2,2 -36,2006-01-01,1,1 -40,2006-01-01,7,7 -41,2006-01-01,5,5 -45,2006-01-01,4,4 -48,2006-01-01,1,1 -51,2006-01-01,2,2 -55,2006-01-01,0,0 -56,2006-01-01,1,1 -59,2006-01-01,7,7 -61,2006-01-01,2,2 -62,2006-01-01,1,1 -63,2006-01-01,0,0 -65,2006-01-01,3,3 -67,2006-01-01,0,0 -68,2006-01-01,5,5 -69,2006-01-01,7,7 -73,2006-01-01,1,1 -81,2006-01-01,0,0 -84,2006-01-01,7,7 -85,2006-01-01,7,7 -86,2006-01-01,1,1 -88,2006-01-01,1,1 -91,2006-01-01,7,7 -93,2006-01-01,1,1 -98,2006-01-01,2,2 -100,2006-01-01,1,1 -101,2006-01-01,0,0 -102,2006-01-01,2,2 -106,2006-01-01,0,0 -108,2006-01-01,7,7 -110,2006-01-01,0,0 -112,2006-01-01,3,3 -116,2006-01-01,0,0 -117,2006-01-01,1,1 -121,2006-01-01,0,0 -122,2006-01-01,2,2 -126,2006-01-01,7,7 -131,2006-01-01,1,1 -132,2006-01-01,0,0 -134,2006-01-01,1,1 -135,2006-01-01,7,7 -137,2006-01-01,0,0 -139,2006-01-01,7,7 -140,2006-01-01,1,1 -147,2006-01-01,5,5 -152,2006-01-01,0,0 -154,2006-01-01,7,7 -160,2006-01-01,7,7 -167,2006-01-01,2,2 -169,2006-01-01,2,2 -170,2006-01-01,7,7 -174,2006-01-01,0,0 -175,2006-01-01,1,1 -178,2006-01-01,0,0 -182,2006-01-01,7,7 -183,2006-01-01,0,0 -184,2006-01-01,4,4 -186,2006-01-01,0,0 -200,2006-01-01,3,3 -205,2006-01-01,1,1 -207,2006-01-01,1,1 -209,2006-01-01,7,7 -216,2006-01-01,7,7 -227,2006-01-01,7,7 -229,2006-01-01,7,7 -233,2006-01-01,3,3 -234,2006-01-01,2,2 -235,2006-01-01,0,0 +0,2006-01-01,4,4 +5,2006-01-01,3,3 +6,2006-01-01,4,4 +17,2006-01-01,0,0 +22,2006-01-01,2,2 +23,2006-01-01,1,1 +24,2006-01-01,7,7 +25,2006-01-01,0,0 +27,2006-01-01,3,3 +30,2006-01-01,7,7 +31,2006-01-01,2,2 +35,2006-01-01,0,0 +36,2006-01-01,0,0 +38,2006-01-01,7,7 +39,2006-01-01,2,2 +40,2006-01-01,0,0 +45,2006-01-01,0,0 +52,2006-01-01,1,1 +53,2006-01-01,1,1 +54,2006-01-01,0,0 +55,2006-01-01,7,7 +61,2006-01-01,7,7 +62,2006-01-01,3,3 +63,2006-01-01,7,7 +64,2006-01-01,3,3 +67,2006-01-01,1,1 +68,2006-01-01,3,3 +77,2006-01-01,2,2 +79,2006-01-01,7,7 +81,2006-01-01,1,1 +87,2006-01-01,7,7 +90,2006-01-01,0,0 +96,2006-01-01,2,2 +97,2006-01-01,7,7 +105,2006-01-01,3,3 +106,2006-01-01,7,7 +107,2006-01-01,2,2 +114,2006-01-01,2,2 +119,2006-01-01,2,2 +120,2006-01-01,7,7 +125,2006-01-01,1,1 +128,2006-01-01,7,7 +130,2006-01-01,5,5 +135,2006-01-01,0,0 +137,2006-01-01,1,1 +138,2006-01-01,2,2 +140,2006-01-01,0,0 +142,2006-01-01,7,7 +148,2006-01-01,7,7 +157,2006-01-01,2,2 +159,2006-01-01,3,3 +166,2006-01-01,3,3 +169,2006-01-01,3,3 +172,2006-01-01,3,3 +175,2006-01-01,3,3 +189,2006-01-01,0,0 +195,2006-01-01,1,1 +200,2006-01-01,7,7 +201,2006-01-01,0,0 +203,2006-01-01,4,4 +204,2006-01-01,3,3 +208,2006-01-01,0,0 +209,2006-01-01,3,3 +212,2006-01-01,7,7 +215,2006-01-01,7,7 +218,2006-01-01,1,1 +220,2006-01-01,7,7 +229,2006-01-01,4,4 +233,2006-01-01,2,2 +234,2006-01-01,7,7 +235,2006-01-01,3,3 237,2006-01-01,0,0 -238,2006-01-01,7,7 -240,2006-01-01,0,0 -242,2006-01-01,3,3 -243,2006-01-01,1,1 -250,2006-01-01,7,7 -252,2006-01-01,7,7 -260,2006-01-01,2,2 -261,2006-01-01,0,0 -262,2006-01-01,7,7 -264,2006-01-01,2,2 -266,2006-01-01,7,7 -267,2006-01-01,3,3 -269,2006-01-01,7,7 +242,2006-01-01,0,0 +248,2006-01-01,0,0 +250,2006-01-01,0,0 +255,2006-01-01,7,7 +260,2006-01-01,5,5 +262,2006-01-01,2,2 +263,2006-01-01,7,7 +264,2006-01-01,3,3 270,2006-01-01,7,7 -272,2006-01-01,7,7 -273,2006-01-01,7,7 -278,2006-01-01,5,5 -279,2006-01-01,0,0 -280,2006-01-01,7,7 -281,2006-01-01,5,5 -284,2006-01-01,2,2 -286,2006-01-01,1,1 -287,2006-01-01,3,3 -288,2006-01-01,3,3 -295,2006-01-01,7,7 -296,2006-01-01,0,0 -298,2006-01-01,7,7 -299,2006-01-01,1,1 -300,2006-01-01,0,0 -302,2006-01-01,7,7 -303,2006-01-01,1,1 -304,2006-01-01,7,7 -305,2006-01-01,2,2 -306,2006-01-01,2,2 -307,2006-01-01,7,7 -310,2006-01-01,7,7 -313,2006-01-01,5,5 -314,2006-01-01,3,3 -315,2006-01-01,7,7 -316,2006-01-01,2,2 -317,2006-01-01,5,5 +278,2006-01-01,7,7 +280,2006-01-01,0,0 +283,2006-01-01,4,4 +285,2006-01-01,1,1 +287,2006-01-01,2,2 +289,2006-01-01,3,3 +290,2006-01-01,4,4 +292,2006-01-01,1,1 +293,2006-01-01,2,2 +294,2006-01-01,1,1 +296,2006-01-01,7,7 +298,2006-01-01,3,3 +299,2006-01-01,5,5 +300,2006-01-01,2,2 +301,2006-01-01,7,7 +302,2006-01-01,3,3 +303,2006-01-01,3,3 +305,2006-01-01,3,3 +309,2006-01-01,2,2 +313,2006-01-01,3,3 +317,2006-01-01,1,1 +319,2006-01-01,7,7 320,2006-01-01,7,7 -322,2006-01-01,3,3 -329,2006-01-01,7,7 -332,2006-01-01,5,5 -334,2006-01-01,1,1 -338,2006-01-01,1,1 -348,2006-01-01,7,7 -349,2006-01-01,3,3 -350,2006-01-01,1,1 -354,2006-01-01,0,0 -355,2006-01-01,7,7 +321,2006-01-01,5,5 +323,2006-01-01,1,1 +325,2006-01-01,3,3 +327,2006-01-01,7,7 +332,2006-01-01,0,0 +336,2006-01-01,7,7 +339,2006-01-01,1,1 +342,2006-01-01,7,7 +344,2006-01-01,7,7 +345,2006-01-01,1,1 +346,2006-01-01,0,0 +351,2006-01-01,1,1 +355,2006-01-01,2,2 +356,2006-01-01,1,1 +357,2006-01-01,4,4 359,2006-01-01,7,7 -360,2006-01-01,1,1 -362,2006-01-01,2,2 +360,2006-01-01,7,7 363,2006-01-01,7,7 -364,2006-01-01,0,0 -367,2006-01-01,7,7 -368,2006-01-01,4,4 -373,2006-01-01,5,5 -376,2006-01-01,3,3 -384,2006-01-01,7,7 -386,2006-01-01,1,1 -392,2006-01-01,0,0 -393,2006-01-01,7,7 -394,2006-01-01,2,2 -395,2006-01-01,7,7 -397,2006-01-01,0,0 -398,2006-01-01,1,1 -399,2006-01-01,7,7 -400,2006-01-01,7,7 -401,2006-01-01,0,0 -407,2006-01-01,1,1 -413,2006-01-01,1,1 -414,2006-01-01,4,4 -415,2006-01-01,3,3 -420,2006-01-01,5,5 -422,2006-01-01,3,3 -423,2006-01-01,1,1 +365,2006-01-01,3,3 +369,2006-01-01,0,0 +370,2006-01-01,0,0 +373,2006-01-01,7,7 +374,2006-01-01,1,1 +378,2006-01-01,7,7 +379,2006-01-01,1,1 +380,2006-01-01,7,7 +381,2006-01-01,7,7 +383,2006-01-01,2,2 +388,2006-01-01,7,7 +390,2006-01-01,7,7 +394,2006-01-01,5,5 +399,2006-01-01,2,2 +402,2006-01-01,3,3 +403,2006-01-01,2,2 +404,2006-01-01,0,0 +405,2006-01-01,3,3 +415,2006-01-01,2,2 +418,2006-01-01,1,1 +419,2006-01-01,2,2 +421,2006-01-01,5,5 424,2006-01-01,7,7 -425,2006-01-01,7,7 -429,2006-01-01,1,1 -430,2006-01-01,2,2 -431,2006-01-01,0,0 -433,2006-01-01,7,7 -437,2006-01-01,7,7 -441,2006-01-01,0,0 -443,2006-01-01,7,7 -445,2006-01-01,2,2 -447,2006-01-01,2,2 -449,2006-01-01,0,0 -450,2006-01-01,3,3 -451,2006-01-01,7,7 -452,2006-01-01,7,7 -455,2006-01-01,3,3 -458,2006-01-01,2,2 -459,2006-01-01,2,2 -465,2006-01-01,1,1 -466,2006-01-01,1,1 -469,2006-01-01,0,0 -470,2006-01-01,7,7 -471,2006-01-01,4,4 -475,2006-01-01,7,7 -476,2006-01-01,4,4 -479,2006-01-01,0,0 -484,2006-01-01,2,2 -490,2006-01-01,0,0 -492,2006-01-01,3,3 -493,2006-01-01,0,0 -494,2006-01-01,7,7 -495,2006-01-01,3,3 -496,2006-01-01,2,2 -498,2006-01-01,3,3 -504,2006-01-01,0,0 -505,2006-01-01,7,7 -508,2006-01-01,2,2 +426,2006-01-01,7,7 +427,2006-01-01,3,3 +431,2006-01-01,7,7 +433,2006-01-01,0,0 +438,2006-01-01,2,2 +439,2006-01-01,0,0 +448,2006-01-01,7,7 +451,2006-01-01,1,1 +456,2006-01-01,3,3 +458,2006-01-01,0,0 +459,2006-01-01,7,7 +461,2006-01-01,7,7 +463,2006-01-01,3,3 +465,2006-01-01,0,0 +467,2006-01-01,7,7 +471,2006-01-01,2,2 +472,2006-01-01,4,4 +474,2006-01-01,1,1 +478,2006-01-01,7,7 +479,2006-01-01,7,7 +480,2006-01-01,7,7 +483,2006-01-01,5,5 +486,2006-01-01,7,7 +488,2006-01-01,4,4 +489,2006-01-01,0,0 +490,2006-01-01,3,3 +492,2006-01-01,7,7 +494,2006-01-01,0,0 +500,2006-01-01,7,7 +507,2006-01-01,2,2 509,2006-01-01,0,0 -518,2006-01-01,7,7 -519,2006-01-01,2,2 -522,2006-01-01,0,0 -523,2006-01-01,7,7 -526,2006-01-01,7,7 -527,2006-01-01,1,1 -528,2006-01-01,7,7 -531,2006-01-01,2,2 -534,2006-01-01,1,1 -539,2006-01-01,0,0 -541,2006-01-01,0,0 -545,2006-01-01,7,7 -549,2006-01-01,2,2 -556,2006-01-01,1,1 -558,2006-01-01,0,0 -562,2006-01-01,2,2 -565,2006-01-01,3,3 -566,2006-01-01,7,7 -567,2006-01-01,7,7 -568,2006-01-01,7,7 -569,2006-01-01,7,7 -570,2006-01-01,1,1 -571,2006-01-01,2,2 -576,2006-01-01,2,2 -579,2006-01-01,4,4 -586,2006-01-01,7,7 -587,2006-01-01,0,0 -591,2006-01-01,1,1 -593,2006-01-01,1,1 -596,2006-01-01,7,7 -601,2006-01-01,3,3 -603,2006-01-01,7,7 -610,2006-01-01,3,3 -611,2006-01-01,0,0 -612,2006-01-01,0,0 -613,2006-01-01,7,7 -620,2006-01-01,3,3 +511,2006-01-01,7,7 +512,2006-01-01,1,1 +514,2006-01-01,0,0 +516,2006-01-01,0,0 +517,2006-01-01,0,0 +518,2006-01-01,0,0 +519,2006-01-01,7,7 +520,2006-01-01,2,2 +526,2006-01-01,0,0 +532,2006-01-01,0,0 +534,2006-01-01,3,3 +540,2006-01-01,3,3 +542,2006-01-01,1,1 +545,2006-01-01,2,2 +546,2006-01-01,1,1 +548,2006-01-01,2,2 +549,2006-01-01,1,1 +550,2006-01-01,1,1 +553,2006-01-01,0,0 +559,2006-01-01,7,7 +562,2006-01-01,7,7 +563,2006-01-01,1,1 +564,2006-01-01,2,2 +568,2006-01-01,0,0 +570,2006-01-01,7,7 +571,2006-01-01,3,3 +575,2006-01-01,0,0 +579,2006-01-01,2,2 +580,2006-01-01,3,3 +589,2006-01-01,0,0 +591,2006-01-01,7,7 +592,2006-01-01,1,1 +596,2006-01-01,1,1 +597,2006-01-01,0,0 +598,2006-01-01,7,7 +600,2006-01-01,1,1 +603,2006-01-01,0,0 +606,2006-01-01,7,7 +607,2006-01-01,7,7 +608,2006-01-01,1,1 +609,2006-01-01,2,2 +611,2006-01-01,2,2 +614,2006-01-01,1,1 +616,2006-01-01,6,6 +618,2006-01-01,7,7 +620,2006-01-01,2,2 621,2006-01-01,0,0 -622,2006-01-01,3,3 -623,2006-01-01,7,7 -624,2006-01-01,2,2 -627,2006-01-01,2,2 -630,2006-01-01,7,7 -632,2006-01-01,1,1 -633,2006-01-01,3,3 -634,2006-01-01,1,1 -635,2006-01-01,1,1 -637,2006-01-01,2,2 -638,2006-01-01,0,0 -639,2006-01-01,3,3 -645,2006-01-01,4,4 -649,2006-01-01,7,7 -651,2006-01-01,2,2 -652,2006-01-01,3,3 -655,2006-01-01,1,1 -657,2006-01-01,4,4 -659,2006-01-01,2,2 -660,2006-01-01,1,1 -662,2006-01-01,2,2 -666,2006-01-01,3,3 -675,2006-01-01,1,1 -680,2006-01-01,7,7 -682,2006-01-01,4,4 -683,2006-01-01,7,7 -691,2006-01-01,7,7 -697,2006-01-01,1,1 +622,2006-01-01,1,1 +623,2006-01-01,2,2 +625,2006-01-01,4,4 +626,2006-01-01,1,1 +627,2006-01-01,1,1 +629,2006-01-01,0,0 +631,2006-01-01,3,3 +644,2006-01-01,0,0 +645,2006-01-01,1,1 +647,2006-01-01,7,7 +648,2006-01-01,3,3 +649,2006-01-01,2,2 +651,2006-01-01,7,7 +655,2006-01-01,2,2 +658,2006-01-01,4,4 +659,2006-01-01,1,1 +660,2006-01-01,3,3 +663,2006-01-01,3,3 +665,2006-01-01,3,3 +666,2006-01-01,1,1 +669,2006-01-01,7,7 +676,2006-01-01,3,3 +677,2006-01-01,0,0 +681,2006-01-01,0,0 +685,2006-01-01,2,2 +692,2006-01-01,7,7 699,2006-01-01,7,7 -701,2006-01-01,7,7 -706,2006-01-01,7,7 -710,2006-01-01,1,1 -712,2006-01-01,2,2 -714,2006-01-01,7,7 -716,2006-01-01,3,3 -717,2006-01-01,0,0 -720,2006-01-01,4,4 -721,2006-01-01,3,3 -722,2006-01-01,1,1 -723,2006-01-01,7,7 -726,2006-01-01,7,7 -731,2006-01-01,7,7 -736,2006-01-01,2,2 -744,2006-01-01,7,7 -748,2006-01-01,7,7 -749,2006-01-01,0,0 -754,2006-01-01,0,0 -759,2006-01-01,5,5 +705,2006-01-01,0,0 +707,2006-01-01,7,7 +709,2006-01-01,2,2 +719,2006-01-01,7,7 +720,2006-01-01,3,3 +721,2006-01-01,7,7 +722,2006-01-01,5,5 +730,2006-01-01,0,0 +733,2006-01-01,7,7 +735,2006-01-01,4,4 +736,2006-01-01,3,3 +738,2006-01-01,2,2 +740,2006-01-01,7,7 +741,2006-01-01,7,7 +750,2006-01-01,3,3 +755,2006-01-01,0,0 +759,2006-01-01,1,1 760,2006-01-01,0,0 -761,2006-01-01,1,1 -764,2006-01-01,7,7 -767,2006-01-01,0,0 -771,2006-01-01,6,6 -774,2006-01-01,3,3 -777,2006-01-01,2,2 -781,2006-01-01,5,5 +763,2006-01-01,1,1 +764,2006-01-01,1,1 +768,2006-01-01,2,2 +772,2006-01-01,2,2 +774,2006-01-01,1,1 +776,2006-01-01,3,3 +777,2006-01-01,4,4 +781,2006-01-01,1,1 +782,2006-01-01,2,2 784,2006-01-01,7,7 -785,2006-01-01,3,3 -788,2006-01-01,0,0 +786,2006-01-01,0,0 +787,2006-01-01,1,1 789,2006-01-01,3,3 -790,2006-01-01,3,3 -792,2006-01-01,0,0 -797,2006-01-01,2,2 -802,2006-01-01,7,7 -803,2006-01-01,0,0 -810,2006-01-01,5,5 -819,2006-01-01,7,7 -820,2006-01-01,4,4 -823,2006-01-01,0,0 -824,2006-01-01,2,2 -825,2006-01-01,3,3 -826,2006-01-01,1,1 -827,2006-01-01,0,0 -828,2006-01-01,2,2 -830,2006-01-01,2,2 -832,2006-01-01,1,1 -833,2006-01-01,2,2 -834,2006-01-01,1,1 -836,2006-01-01,7,7 -837,2006-01-01,7,7 -838,2006-01-01,3,3 -839,2006-01-01,0,0 -840,2006-01-01,7,7 -841,2006-01-01,1,1 -842,2006-01-01,3,3 +790,2006-01-01,1,1 +796,2006-01-01,1,1 +802,2006-01-01,1,1 +803,2006-01-01,7,7 +804,2006-01-01,2,2 +805,2006-01-01,7,7 +807,2006-01-01,0,0 +809,2006-01-01,0,0 +812,2006-01-01,4,4 +817,2006-01-01,7,7 +819,2006-01-01,4,4 +820,2006-01-01,1,1 +825,2006-01-01,2,2 +828,2006-01-01,7,7 +831,2006-01-01,5,5 +842,2006-01-01,2,2 843,2006-01-01,2,2 -844,2006-01-01,7,7 -849,2006-01-01,0,0 -851,2006-01-01,7,7 -852,2006-01-01,1,1 -855,2006-01-01,7,7 -856,2006-01-01,1,1 -857,2006-01-01,2,2 -860,2006-01-01,7,7 -863,2006-01-01,7,7 -864,2006-01-01,4,4 -868,2006-01-01,7,7 -870,2006-01-01,7,7 -872,2006-01-01,3,3 -873,2006-01-01,1,1 -875,2006-01-01,7,7 -876,2006-01-01,5,5 -878,2006-01-01,3,3 -879,2006-01-01,7,7 -882,2006-01-01,7,7 -883,2006-01-01,0,0 -884,2006-01-01,7,7 -885,2006-01-01,7,7 +845,2006-01-01,3,3 +846,2006-01-01,1,1 +848,2006-01-01,2,2 +849,2006-01-01,7,7 +851,2006-01-01,2,2 +853,2006-01-01,2,2 +854,2006-01-01,0,0 +856,2006-01-01,0,0 +859,2006-01-01,7,7 +861,2006-01-01,3,3 +862,2006-01-01,1,1 +864,2006-01-01,3,3 +867,2006-01-01,2,2 +869,2006-01-01,1,1 +876,2006-01-01,1,1 +879,2006-01-01,0,0 +883,2006-01-01,1,1 +886,2006-01-01,7,7 888,2006-01-01,3,3 -889,2006-01-01,3,3 -900,2006-01-01,7,7 -901,2006-01-01,7,7 -905,2006-01-01,0,0 -906,2006-01-01,7,7 -907,2006-01-01,1,1 -908,2006-01-01,7,7 -910,2006-01-01,2,2 -911,2006-01-01,7,7 -912,2006-01-01,2,2 -916,2006-01-01,7,7 -919,2006-01-01,2,2 -920,2006-01-01,3,3 -921,2006-01-01,2,2 -926,2006-01-01,0,0 -929,2006-01-01,7,7 -930,2006-01-01,7,7 +891,2006-01-01,3,3 +892,2006-01-01,2,2 +893,2006-01-01,0,0 +896,2006-01-01,0,0 +897,2006-01-01,7,7 +903,2006-01-01,0,0 +908,2006-01-01,0,0 +909,2006-01-01,7,7 +911,2006-01-01,1,1 +918,2006-01-01,7,7 +923,2006-01-01,4,4 +924,2006-01-01,7,7 +925,2006-01-01,2,2 +927,2006-01-01,3,3 +931,2006-01-01,3,3 933,2006-01-01,7,7 -937,2006-01-01,3,3 -939,2006-01-01,5,5 -942,2006-01-01,7,7 -944,2006-01-01,2,2 -946,2006-01-01,0,0 -954,2006-01-01,2,2 -957,2006-01-01,1,1 -959,2006-01-01,0,0 -963,2006-01-01,2,2 -964,2006-01-01,2,2 -968,2006-01-01,1,1 -970,2006-01-01,1,1 -971,2006-01-01,7,7 -973,2006-01-01,1,1 -974,2006-01-01,5,5 -986,2006-01-01,3,3 -987,2006-01-01,7,7 -988,2006-01-01,7,7 -991,2006-01-01,0,0 -993,2006-01-01,4,4 -997,2006-01-01,2,2 -998,2006-01-01,1,1 -999,2006-01-01,0,0 -180,2006-01-02,3,4 -138,2006-01-07,1,2 -133,2006-01-07,6,4 -308,2006-01-11,4,6 -217,2006-01-12,2,3 -343,2006-01-15,1,2 -444,2006-01-21,6,5 -809,2006-01-22,6,7 -309,2006-01-24,4,3 -253,2006-01-24,6,7 -506,2006-01-26,6,7 -77,2006-01-28,6,5 -340,2006-01-29,4,5 -768,2006-01-30,3,2 -457,2006-02-01,6,7 -741,2006-02-03,4,5 -502,2006-02-09,5,7 -552,2006-02-13,2,3 -560,2006-02-16,1,2 -333,2006-02-20,2,1 -460,2006-02-21,3,2 -891,2006-02-21,6,7 -464,2006-02-25,6,7 -540,2006-02-27,2,3 -756,2006-02-28,6,7 -380,2006-03-06,1,2 -763,2006-03-06,6,7 -543,2006-03-09,4,5 -743,2006-03-17,6,5 -553,2006-03-17,5,4 -729,2006-03-19,1,2 -28,2006-03-20,1,2 -715,2006-03-21,6,7 -421,2006-03-25,0,3 -164,2006-03-25,6,7 -58,2006-03-25,6,7 -339,2006-03-28,6,7 -877,2006-03-30,0,1 -25,2006-04-02,5,7 -353,2006-04-05,6,7 -326,2006-04-06,2,3 -246,2006-04-06,6,5 -931,2006-04-06,4,5 -976,2006-04-09,6,5 -38,2006-04-10,6,7 -111,2006-04-11,2,3 -869,2006-04-17,0,1 -861,2006-04-20,6,7 -696,2006-04-20,6,7 -779,2006-04-25,6,7 -379,2006-04-28,3,2 -39,2006-04-28,3,4 -669,2006-04-29,6,7 -952,2006-04-29,6,7 -143,2006-04-30,4,6 -277,2006-05-03,4,3 -656,2006-05-07,0,1 -378,2006-05-08,4,6 -572,2006-05-08,6,7 -890,2006-05-10,6,7 -733,2006-05-11,4,3 -582,2006-05-12,6,3 -953,2006-05-13,6,7 -22,2006-05-16,4,5 -644,2006-05-20,6,7 -347,2006-05-23,6,7 -914,2006-05-30,4,7 -453,2006-06-03,4,3 -372,2006-06-07,3,2 -654,2006-06-08,0,1 -163,2006-06-15,5,6 -690,2006-06-16,6,7 -607,2006-06-18,5,7 -483,2006-06-21,5,6 -546,2006-06-24,3,4 -213,2006-06-25,0,1 -44,2006-06-26,5,4 -704,2006-06-26,2,3 -985,2006-07-01,1,2 -410,2006-07-13,0,1 -5,2006-07-14,4,5 -478,2006-07-14,5,3 -409,2006-07-16,3,4 -187,2006-07-21,2,3 -831,2006-07-21,6,7 -751,2006-07-21,2,3 -345,2006-07-24,4,1 -381,2006-07-24,5,3 -71,2006-07-25,4,5 -745,2006-07-31,5,6 -165,2006-07-31,4,5 -854,2006-08-01,6,7 -383,2006-08-01,4,5 -17,2006-08-01,6,7 -194,2006-08-02,6,5 -625,2006-08-06,6,7 -772,2006-08-08,6,7 -434,2006-08-12,3,2 -641,2006-08-15,6,7 -481,2006-08-16,6,5 -642,2006-08-17,4,5 -199,2006-08-18,5,3 -606,2006-08-24,4,5 -488,2006-08-25,6,5 -203,2006-08-25,5,4 -64,2006-08-28,4,3 -880,2006-08-29,6,7 -210,2006-08-30,6,7 -941,2006-09-03,6,7 -511,2006-09-06,4,5 -847,2006-09-06,1,2 -258,2006-09-07,2,1 -474,2006-09-13,3,4 -438,2006-09-13,5,6 -525,2006-09-15,3,2 -124,2006-09-18,4,2 -189,2006-09-18,1,2 -561,2006-09-19,6,7 -150,2006-09-25,3,4 -92,2006-09-27,6,7 -328,2006-09-29,4,3 -171,2006-09-30,3,4 -938,2006-10-01,5,4 -226,2006-10-02,6,5 -618,2006-10-03,6,7 -982,2006-10-04,3,4 -82,2006-10-04,3,4 -446,2006-10-06,5,0 -118,2006-10-07,6,7 -255,2006-10-08,3,4 -580,2006-10-08,1,2 -331,2006-10-08,2,3 -96,2006-10-10,4,5 -500,2006-10-10,6,7 -776,2006-10-10,6,5 -695,2006-10-13,6,7 -750,2006-10-14,1,2 -344,2006-10-15,2,3 -107,2006-10-16,5,6 -127,2006-10-16,4,3 -588,2006-10-18,6,7 -555,2006-10-26,6,7 -753,2006-10-27,5,3 -614,2006-10-28,6,7 -943,2006-10-28,4,5 -711,2006-10-29,6,7 -327,2006-10-31,4,3 -871,2006-11-09,1,2 -156,2006-11-11,6,5 -512,2006-11-15,5,7 -598,2006-11-16,0,2 -752,2006-11-17,2,1 -221,2006-11-19,5,3 -391,2006-11-19,2,3 -923,2006-11-21,5,4 -798,2006-11-23,6,7 -631,2006-11-28,6,7 -206,2006-11-30,4,3 -932,2006-12-04,6,7 -990,2006-12-05,6,7 -301,2006-12-07,6,7 -123,2006-12-08,5,6 -251,2006-12-10,4,3 -145,2006-12-11,1,2 -521,2006-12-13,6,5 -271,2006-12-15,4,5 -619,2006-12-18,4,3 -544,2006-12-18,4,5 -517,2006-12-20,6,7 -142,2006-12-22,3,2 -324,2006-12-24,5,6 -719,2006-12-27,6,5 -793,2006-12-29,5,7 -967,2006-12-30,0,1 -23,2007-01-01,1,2 -214,2007-01-18,6,7 -190,2007-01-19,1,2 -408,2007-01-20,6,4 -107,2007-01-20,6,5 -385,2007-01-22,5,4 -616,2007-01-24,5,4 -370,2007-01-27,0,1 -584,2007-01-28,6,3 -254,2007-01-30,3,4 -64,2007-01-30,3,4 -50,2007-02-12,4,3 -647,2007-02-14,0,1 -728,2007-02-15,4,5 -343,2007-02-16,2,1 -698,2007-02-21,4,5 -418,2007-02-21,6,7 -109,2007-02-26,4,5 -817,2007-03-02,4,5 -615,2007-03-04,3,2 -96,2007-03-07,5,4 -796,2007-03-12,5,4 -123,2007-03-13,6,5 -337,2007-03-16,3,4 -387,2007-03-26,2,3 -255,2007-04-02,4,7 -978,2007-04-03,6,5 -115,2007-04-04,0,1 -176,2007-04-07,4,5 -980,2007-04-07,5,3 -248,2007-04-10,4,7 -419,2007-04-11,3,2 -791,2007-04-20,5,6 -581,2007-04-21,3,2 -904,2007-04-24,3,4 -33,2007-05-01,6,7 -862,2007-05-02,1,2 -995,2007-05-04,3,4 -913,2007-05-06,6,7 -730,2007-05-10,6,7 -940,2007-05-14,4,5 -477,2007-05-17,1,2 -39,2007-05-21,4,5 -275,2007-05-21,2,3 -228,2007-05-22,4,3 -981,2007-05-23,6,7 -185,2007-05-24,6,7 -702,2007-05-25,0,1 -979,2007-05-26,4,5 -462,2007-05-27,5,4 -727,2007-06-01,4,3 -375,2007-06-02,6,5 -816,2007-06-02,4,7 -163,2007-06-09,6,7 -949,2007-06-15,6,7 -77,2007-06-17,5,6 -119,2007-06-19,1,2 -989,2007-06-21,3,4 -218,2007-06-23,2,3 -383,2007-06-27,5,4 -503,2007-06-28,5,7 -35,2007-07-07,3,4 -292,2007-07-08,0,1 -686,2007-07-14,3,2 -886,2007-07-17,2,3 -589,2007-07-18,6,5 -208,2007-07-21,6,7 -282,2007-07-21,6,5 -742,2007-07-24,4,5 -245,2007-07-25,3,4 -223,2007-07-26,1,2 -60,2007-07-28,4,6 -846,2007-08-02,2,3 -283,2007-08-03,3,2 -473,2007-08-05,6,7 -75,2007-08-07,6,5 -274,2007-08-07,6,7 -236,2007-08-12,2,3 -396,2007-08-17,3,4 -800,2007-08-18,5,7 -546,2007-08-20,4,2 -263,2007-08-22,4,6 -693,2007-08-28,0,1 -412,2007-08-29,4,3 -982,2007-08-30,4,7 -550,2007-09-03,5,7 -57,2007-09-08,5,6 -87,2007-09-08,3,2 -319,2007-09-08,3,4 -467,2007-09-10,4,3 -409,2007-09-12,4,7 -497,2007-09-18,2,1 -737,2007-09-18,6,7 -738,2007-09-24,0,1 -725,2007-10-02,2,1 -899,2007-10-02,5,6 -251,2007-10-20,3,2 -595,2007-10-20,0,1 -747,2007-10-22,6,7 -667,2007-10-26,5,4 -365,2007-10-29,6,7 -626,2007-10-31,4,6 -646,2007-11-24,1,3 -516,2007-11-28,6,7 -700,2007-11-28,0,1 -344,2007-11-30,3,5 -778,2007-12-02,6,7 -454,2007-12-03,4,5 -285,2007-12-05,6,7 -231,2007-12-07,4,5 -225,2007-12-08,6,7 -378,2007-12-10,6,4 -599,2007-12-12,0,4 -590,2007-12-20,4,5 -961,2007-12-24,6,7 -537,2007-12-30,6,4 -969,2008-01-02,5,4 -536,2008-01-04,5,4 -922,2008-01-09,1,2 -377,2008-01-12,3,2 -263,2008-01-14,6,7 -869,2008-01-16,1,2 -925,2008-01-16,3,4 -156,2008-01-28,5,7 -403,2008-02-01,2,3 -896,2008-02-03,5,3 -554,2008-02-07,4,3 -965,2008-02-09,6,7 -783,2008-02-12,4,5 -608,2008-02-15,2,4 -133,2008-02-16,4,2 -241,2008-02-18,1,2 -109,2008-02-25,5,4 -220,2008-02-26,4,2 -551,2008-02-26,5,4 -626,2008-03-02,6,4 -438,2008-03-02,6,5 -366,2008-03-03,0,1 -1,2008-03-08,6,7 -615,2008-03-14,2,3 -77,2008-03-17,6,7 -976,2008-03-27,5,3 -848,2008-03-28,3,2 -918,2008-04-03,5,7 -972,2008-04-05,3,4 -718,2008-04-11,0,1 -791,2008-04-13,6,7 -786,2008-04-25,5,7 -64,2008-04-27,4,2 -239,2008-04-30,2,3 -53,2008-05-06,3,2 -104,2008-05-09,0,1 -148,2008-05-17,2,3 -143,2008-05-22,6,4 -606,2008-05-24,5,4 -758,2008-05-24,6,7 -515,2008-05-26,1,2 -899,2008-05-30,6,5 -256,2008-05-30,6,7 -580,2008-06-11,2,3 -383,2008-07-04,4,5 -894,2008-07-06,5,6 -794,2008-07-06,6,7 -188,2008-07-11,1,4 -390,2008-07-23,5,6 -642,2008-07-23,5,7 -312,2008-07-25,6,7 -342,2008-07-27,3,1 -679,2008-08-03,6,7 -421,2008-08-04,3,4 -217,2008-08-06,3,2 -667,2008-08-09,4,5 -60,2008-08-10,6,7 -0,2008-08-12,3,2 -909,2008-08-18,6,7 -90,2008-08-29,6,7 -308,2008-08-31,6,7 -82,2008-08-31,4,3 -265,2008-09-14,2,3 -219,2008-09-17,3,4 -813,2008-09-23,6,7 -818,2008-09-25,4,5 -71,2008-09-30,5,4 -678,2008-10-17,2,3 -257,2008-10-27,6,7 -453,2008-10-29,3,5 -489,2008-11-03,4,3 -935,2008-11-07,6,7 -382,2008-11-08,6,2 -194,2008-11-08,5,3 -57,2008-11-13,6,7 -268,2008-11-14,6,5 -74,2008-11-15,1,2 -435,2008-11-17,3,4 -600,2008-11-22,6,7 -336,2008-11-26,2,3 -487,2008-11-27,6,7 -115,2008-12-02,1,2 -66,2008-12-04,1,2 -552,2008-12-05,3,4 -735,2008-12-09,3,4 -388,2008-12-13,5,4 -103,2008-12-20,6,7 -333,2008-12-21,1,2 -201,2008-12-22,6,7 -709,2008-12-23,6,7 -21,2008-12-27,0,1 -340,2008-12-27,5,6 -95,2008-12-27,5,4 -330,2008-12-27,3,2 -664,2009-01-04,4,3 -719,2009-01-13,5,7 -463,2009-01-18,1,2 -892,2009-01-21,3,4 -159,2009-02-01,3,4 -795,2009-02-02,0,1 -589,2009-02-03,5,6 -166,2009-02-07,5,4 -95,2009-02-11,4,2 -583,2009-02-12,0,1 -442,2009-02-12,6,5 -246,2009-02-14,5,7 -128,2009-02-16,3,4 -222,2009-02-21,5,4 -402,2009-02-21,5,6 -689,2009-02-27,3,2 -340,2009-02-28,6,7 -254,2009-03-17,4,2 -559,2009-03-18,2,3 -956,2009-03-25,2,1 -904,2009-03-26,4,5 -708,2009-04-01,3,2 -511,2009-04-01,5,6 -327,2009-04-03,3,2 -231,2009-04-06,5,7 -608,2009-04-10,4,5 -357,2009-04-10,5,3 -70,2009-04-12,4,5 -945,2009-04-20,2,1 -271,2009-04-27,5,7 -352,2009-04-27,6,5 -171,2009-04-27,4,5 -538,2009-04-27,4,2 -780,2009-05-03,2,3 -529,2009-05-05,5,6 -153,2009-05-17,5,4 -72,2009-05-18,0,2 -14,2009-05-24,4,3 -390,2009-05-25,6,5 -850,2009-05-29,0,1 -52,2009-05-30,2,3 -12,2009-06-04,4,2 -733,2009-06-05,3,4 -444,2009-06-13,5,3 -943,2009-06-26,5,7 -162,2009-06-30,4,5 -251,2009-06-30,2,3 -245,2009-07-08,4,5 -501,2009-07-11,1,3 -656,2009-07-13,1,2 -318,2009-07-16,4,3 -643,2009-07-18,5,7 -685,2009-07-21,3,2 -692,2009-07-22,5,4 -871,2009-07-25,2,3 -265,2009-07-30,3,2 -79,2009-08-01,2,3 -521,2009-08-03,5,4 -212,2009-08-06,0,1 -176,2009-08-07,5,6 -544,2009-08-07,5,1 -411,2009-08-12,1,2 -428,2009-08-12,5,6 -835,2009-08-14,3,4 -99,2009-08-16,4,3 -197,2009-08-31,1,2 -76,2009-09-03,4,3 -590,2009-09-04,5,4 -172,2009-09-04,0,1 -141,2009-09-05,1,2 -661,2009-09-06,1,0 -42,2009-09-11,5,4 -64,2009-09-16,2,3 -4,2009-09-16,1,0 -609,2009-09-21,4,5 -821,2009-09-22,2,3 -192,2009-09-24,6,5 -532,2009-09-28,2,1 -173,2009-09-30,4,5 -276,2009-09-30,3,6 -432,2009-10-06,4,5 -294,2009-10-06,5,6 -922,2009-10-08,2,3 -782,2009-10-20,6,7 -705,2009-10-21,4,5 -592,2009-10-29,0,1 -808,2009-10-31,6,7 -513,2009-10-31,2,3 -462,2009-11-08,4,5 -886,2009-11-11,3,4 -650,2009-11-16,4,5 -950,2009-11-16,4,5 -640,2009-11-23,3,7 -249,2009-11-25,4,3 -230,2009-11-26,6,7 -24,2009-11-27,4,7 -193,2009-11-29,2,3 -491,2009-12-09,0,1 -486,2009-12-15,4,5 -388,2009-12-17,4,5 -984,2009-12-21,0,1 -468,2009-12-21,5,4 -144,2009-12-25,4,3 -133,2009-12-29,2,3 -247,2010-01-02,5,6 -705,2010-01-03,5,4 -751,2010-01-05,3,4 -195,2010-01-22,4,5 -915,2010-01-30,4,3 -47,2010-01-30,2,3 -191,2010-02-01,6,7 -829,2010-02-02,6,5 -224,2010-02-08,2,1 -787,2010-02-13,5,4 -688,2010-02-14,2,3 -26,2010-02-21,4,3 -486,2010-02-22,5,7 -733,2010-02-26,4,3 -927,2010-03-11,3,5 -390,2010-03-12,5,4 -196,2010-03-16,5,6 -650,2010-03-19,5,0 -724,2010-03-19,3,4 -703,2010-03-22,4,3 -977,2010-03-23,1,2 -525,2010-03-27,2,3 -663,2010-03-30,5,7 -188,2010-04-05,4,5 -858,2010-04-08,3,2 -378,2010-04-11,4,2 -950,2010-04-16,5,4 -454,2010-04-22,5,6 -894,2010-04-23,6,7 -290,2010-04-25,0,1 -130,2010-05-02,3,2 -853,2010-05-04,6,7 -704,2010-05-13,3,2 -44,2010-05-13,4,3 -499,2010-05-14,5,7 -799,2010-06-03,3,2 -369,2010-06-03,0,2 -75,2010-06-04,5,7 -984,2010-06-05,1,2 -980,2010-06-11,3,4 -125,2010-06-13,4,5 -444,2010-06-15,3,4 -232,2010-06-22,3,4 -617,2010-06-28,2,3 -780,2010-06-29,3,2 -865,2010-07-10,5,4 -594,2010-07-20,0,1 -604,2010-08-05,4,5 -337,2010-08-07,4,2 -687,2010-08-09,0,1 -228,2010-08-14,3,5 -371,2010-08-14,5,3 -753,2010-08-15,3,4 -39,2010-08-23,5,7 -989,2010-08-27,4,3 -923,2010-09-02,4,5 -817,2010-09-06,5,7 -358,2010-09-11,6,7 -536,2010-09-16,4,6 -404,2010-09-21,1,2 -776,2010-09-22,5,7 -162,2010-09-23,5,4 -123,2010-09-26,5,3 -462,2010-09-27,5,6 -529,2010-09-28,6,5 -741,2010-09-29,5,4 -769,2010-09-30,3,2 -289,2010-10-05,0,1 -511,2010-10-06,6,5 -775,2010-10-08,5,7 -96,2010-10-10,4,5 -898,2010-10-14,2,1 -381,2010-10-16,3,2 -866,2010-10-17,4,7 -678,2010-10-20,3,4 -448,2010-10-21,5,6 -293,2010-10-23,2,1 -553,2010-10-26,4,6 -877,2010-11-05,1,2 -924,2010-11-05,4,6 -54,2010-11-06,3,7 -461,2010-11-07,6,7 -34,2010-11-16,2,5 -992,2010-11-17,4,3 -818,2010-11-19,5,6 -589,2010-11-25,6,5 -142,2010-12-03,2,3 -166,2010-12-03,4,1 -577,2010-12-08,6,7 -745,2010-12-11,6,7 -821,2010-12-20,3,4 -543,2010-12-26,5,6 -948,2010-12-28,1,2 -548,2010-12-28,4,3 -956,2010-12-31,1,2 -796,2011-01-06,4,5 -605,2011-01-06,2,3 -962,2011-01-15,0,5 -481,2011-01-22,5,7 -707,2011-01-30,5,7 -402,2011-02-04,6,7 -113,2011-02-05,2,3 -388,2011-02-11,5,6 -859,2011-02-12,5,7 -507,2011-02-16,2,3 -536,2011-02-20,6,7 -377,2011-02-22,2,1 -177,2011-02-23,2,3 -553,2011-02-26,6,7 -829,2011-02-26,5,7 -456,2011-02-28,6,5 -734,2011-03-03,5,6 -6,2011-03-04,3,4 -416,2011-03-11,5,4 -602,2011-03-14,1,2 -958,2011-03-18,3,2 -326,2011-03-22,3,2 -681,2011-03-23,0,1 -903,2011-03-24,0,1 -83,2011-03-26,5,7 -294,2011-03-27,6,2 -543,2011-03-30,6,7 -966,2011-03-30,0,1 -181,2011-04-02,2,3 -30,2011-04-06,2,3 -983,2011-04-07,2,1 -985,2011-04-08,2,3 -275,2011-04-10,3,4 -510,2011-04-13,3,2 -47,2011-04-14,3,4 -94,2011-04-14,4,2 -472,2011-04-17,0,1 -609,2011-04-20,5,4 -589,2011-04-21,5,4 -97,2011-04-23,1,2 -406,2011-04-25,1,2 -606,2011-04-25,4,5 -762,2011-05-06,5,4 -773,2011-05-13,3,2 -204,2011-05-14,2,1 -535,2011-05-19,1,2 -925,2011-05-20,4,5 -105,2011-05-23,5,6 -597,2011-05-26,0,1 -822,2011-05-28,5,6 -454,2011-06-05,6,7 -3,2011-06-07,1,2 -812,2011-06-09,0,1 -881,2011-06-17,0,1 -20,2011-06-21,4,2 -293,2011-06-22,1,2 -818,2011-06-27,6,4 -917,2011-06-27,3,2 -468,2011-06-28,4,5 -608,2011-07-01,5,7 -729,2011-07-19,2,1 -969,2011-07-21,4,3 -520,2011-07-21,5,3 -928,2011-07-29,0,1 -979,2011-08-02,5,4 -628,2011-08-07,3,4 -109,2011-08-09,4,5 -297,2011-08-12,5,7 -144,2011-08-16,3,4 -592,2011-08-16,1,2 -323,2011-08-20,6,7 -357,2011-09-06,3,4 -514,2011-09-10,5,7 -934,2011-09-13,5,4 -533,2011-09-14,1,2 -673,2011-09-21,5,6 -815,2011-09-25,0,1 -564,2011-10-02,5,7 -74,2011-10-02,2,1 -11,2011-10-06,1,3 -232,2011-10-10,4,3 -924,2011-10-16,6,3 -575,2011-10-21,5,3 -218,2011-10-22,3,2 -994,2011-10-29,0,1 -688,2011-11-02,3,2 -765,2011-11-04,1,0 -448,2011-11-16,6,7 -15,2011-11-21,0,1 -547,2011-11-23,5,4 -474,2011-11-27,4,3 -489,2011-11-29,3,4 -436,2011-11-30,0,2 -361,2011-12-04,4,5 -578,2011-12-18,3,4 -740,2011-12-24,4,7 -440,2011-12-27,1,5 -552,2011-12-27,4,3 -70,2012-01-03,5,3 -439,2012-01-04,2,4 -89,2012-01-10,5,6 -34,2012-01-15,5,3 -770,2012-01-19,5,7 -741,2012-01-23,4,2 -822,2012-01-27,6,7 -757,2012-02-03,1,2 -887,2012-02-08,4,2 -130,2012-02-08,2,3 -196,2012-02-10,6,3 -236,2012-02-13,3,4 -704,2012-02-24,2,3 -37,2012-03-18,1,2 -129,2012-03-19,3,4 -992,2012-03-23,3,4 -483,2012-03-24,6,7 -713,2012-03-27,5,7 -293,2012-04-01,2,1 -3,2012-04-06,2,3 -673,2012-04-08,6,5 -324,2012-04-09,6,7 -198,2012-04-13,1,2 -629,2012-04-20,0,1 -148,2012-04-22,3,2 -462,2012-04-25,6,5 -192,2012-05-06,5,4 -244,2012-05-09,5,7 -619,2012-05-12,3,7 -955,2012-05-12,0,1 -676,2012-06-03,1,2 -636,2012-06-04,1,2 -21,2012-06-18,1,2 -43,2012-06-20,2,3 -168,2012-06-20,1,2 -176,2012-06-27,6,7 -325,2012-06-27,1,2 -173,2012-06-30,5,4 -858,2012-07-01,2,3 -521,2012-07-02,4,7 -369,2012-07-10,2,3 -247,2012-07-12,6,7 -665,2012-07-15,3,4 -428,2012-07-15,6,5 -42,2012-07-22,4,3 -79,2012-07-23,3,4 -595,2012-08-02,1,2 -746,2012-08-06,0,2 -151,2012-08-11,0,2 -337,2012-08-14,2,3 -734,2012-08-16,6,5 -801,2012-08-19,3,5 -867,2012-08-20,4,5 -674,2012-08-23,2,3 -120,2012-08-24,0,1 -346,2012-08-24,0,1 -379,2012-08-27,2,1 -111,2012-08-30,3,4 -222,2012-09-02,4,5 -249,2012-09-07,3,4 -482,2012-09-09,1,2 -391,2012-09-11,3,4 -708,2012-09-13,2,5 -342,2012-09-15,1,2 -427,2012-09-18,4,7 -444,2012-09-22,4,5 -739,2012-09-25,4,5 -980,2012-09-25,4,5 -804,2012-09-27,3,4 -845,2012-09-28,0,1 -752,2012-10-01,1,2 -146,2012-10-06,6,7 -766,2012-10-14,5,6 -2,2012-10-18,5,4 -686,2012-10-23,2,4 -27,2012-11-02,4,7 -436,2012-11-03,2,3 -874,2012-11-03,6,7 -585,2012-11-06,4,5 -626,2012-11-09,4,5 -551,2012-11-17,4,3 -947,2012-11-23,2,1 -166,2012-12-04,1,2 -485,2012-12-06,5,4 -78,2012-12-08,3,5 -157,2012-12-08,5,6 -107,2012-12-12,5,6 -648,2012-12-12,3,4 -10,2012-12-12,3,4 -405,2012-12-15,0,1 -985,2012-12-18,3,4 -18,2012-12-28,5,6 -705,2012-12-30,4,5 -557,2013-01-02,1,2 -228,2013-01-06,5,7 -799,2013-01-10,2,5 -480,2013-01-16,1,2 -996,2013-02-12,3,4 -677,2013-02-13,5,4 -78,2013-02-14,5,2 -153,2013-02-15,4,5 -70,2013-02-16,3,4 -684,2013-02-17,0,1 -762,2013-02-17,4,3 -467,2013-03-09,3,4 -157,2013-03-12,6,7 -807,2013-03-13,2,3 -595,2013-03-14,2,3 -989,2013-03-15,3,4 -215,2013-03-15,4,5 -374,2013-04-06,3,4 -396,2013-04-09,4,3 -202,2013-04-17,3,2 -893,2013-04-19,0,1 -388,2013-05-07,6,7 -654,2013-05-07,1,2 -35,2013-05-26,4,2 -96,2013-05-30,5,4 -46,2013-06-07,4,7 -111,2013-06-11,4,3 -276,2013-06-12,6,5 -321,2013-06-15,5,4 -277,2013-06-15,3,4 -755,2013-06-16,5,7 -795,2013-06-18,1,2 -390,2013-06-20,4,3 -594,2013-06-21,1,2 -814,2013-06-23,3,4 -138,2013-06-27,2,3 -161,2013-06-27,5,4 -417,2013-07-04,4,5 -488,2013-07-09,5,3 -99,2013-07-15,3,4 -66,2013-07-16,2,3 -311,2013-07-21,3,4 -995,2013-08-07,4,6 -211,2013-08-11,6,7 -64,2013-08-13,3,4 -546,2013-08-13,2,3 -573,2013-08-14,1,2 -727,2013-08-17,3,4 -702,2013-08-18,1,2 -589,2013-08-22,4,3 -806,2013-08-22,5,6 -897,2013-08-26,1,2 -497,2013-08-26,1,2 -787,2013-09-15,4,3 -732,2013-09-29,1,3 -426,2013-10-11,2,1 -31,2013-10-13,5,6 -895,2013-10-21,3,2 -670,2013-11-01,2,3 -604,2013-11-04,5,7 -750,2013-11-08,2,3 -951,2013-11-10,4,7 -343,2013-11-15,1,2 -698,2013-11-22,5,3 -168,2013-11-30,2,1 -18,2013-12-02,6,7 -341,2013-12-04,0,2 -537,2013-12-08,4,3 -351,2013-12-21,1,2 -489,2013-12-29,4,3 -497,2014-01-12,2,3 -684,2014-01-13,1,0 -780,2014-01-14,2,3 -389,2014-01-18,3,4 -626,2014-01-18,5,7 -650,2014-01-24,0,1 -49,2014-01-25,3,2 -148,2014-01-27,2,3 -563,2014-01-27,2,3 -375,2014-01-29,5,7 -694,2014-02-03,3,4 -136,2014-02-09,5,7 -8,2014-02-16,3,2 -629,2014-02-17,1,2 -766,2014-03-09,6,5 -477,2014-03-09,2,4 -750,2014-03-12,3,2 -4,2014-03-12,0,2 -115,2014-03-12,2,3 -996,2014-03-14,4,5 -805,2014-03-19,5,7 -114,2014-03-19,3,4 -491,2014-03-20,1,2 -29,2014-03-23,1,2 -80,2014-03-26,4,5 -542,2014-03-28,0,1 -927,2014-04-09,5,2 -557,2014-04-13,2,3 -180,2014-04-28,4,3 -902,2014-04-29,2,3 -960,2014-05-06,1,2 -979,2014-05-06,4,2 -574,2014-05-10,2,1 -361,2014-05-10,5,4 -74,2014-05-11,1,3 -31,2014-05-20,6,7 -936,2014-05-21,0,1 -617,2014-05-27,3,4 -992,2014-05-30,4,5 -64,2014-06-14,4,2 -899,2014-06-21,5,7 -609,2014-06-25,4,7 -653,2014-06-29,2,3 -356,2014-07-01,5,7 -142,2014-07-05,3,4 -969,2014-07-05,3,4 -811,2014-07-10,4,3 -155,2014-07-13,5,6 -646,2014-07-17,3,2 -658,2014-07-17,5,4 -151,2014-07-25,2,3 -975,2014-07-25,0,1 -671,2014-07-26,0,1 -277,2014-07-28,4,3 -672,2014-08-07,3,4 -325,2014-08-07,2,3 -595,2014-09-01,3,5 -664,2014-09-06,3,2 -335,2014-09-16,4,3 -289,2014-09-21,1,2 -291,2014-09-25,3,4 -259,2014-09-26,2,3 -158,2014-10-05,1,2 -96,2014-10-09,4,7 -877,2014-10-12,2,3 -149,2014-10-13,5,4 -434,2014-10-17,2,3 -667,2014-10-22,5,7 -352,2014-10-29,5,6 -734,2014-11-05,5,4 -524,2014-11-09,3,2 -703,2014-11-10,3,2 -309,2014-11-12,3,2 -787,2014-11-16,3,1 -113,2014-11-26,3,2 -383,2014-11-27,5,7 -530,2014-12-01,1,2 -668,2014-12-02,5,7 -428,2014-12-04,5,6 -801,2014-12-08,5,3 -319,2014-12-12,4,5 -751,2014-12-18,4,3 -380,2014-12-18,2,3 -923,2014-12-20,5,7 -105,2014-12-23,6,7 -179,2014-12-28,0,1 +937,2006-01-01,1,1 +938,2006-01-01,7,7 +944,2006-01-01,1,1 +946,2006-01-01,7,7 +947,2006-01-01,1,1 +948,2006-01-01,3,3 +949,2006-01-01,0,0 +951,2006-01-01,0,0 +956,2006-01-01,0,0 +957,2006-01-01,7,7 +962,2006-01-01,1,1 +963,2006-01-01,7,7 +966,2006-01-01,7,7 +969,2006-01-01,7,7 +972,2006-01-01,3,3 +975,2006-01-01,2,2 +977,2006-01-01,7,7 +979,2006-01-01,7,7 +981,2006-01-01,2,2 +984,2006-01-01,7,7 +985,2006-01-01,2,2 +986,2006-01-01,7,7 +990,2006-01-01,7,7 +993,2006-01-01,7,7 +994,2006-01-01,0,0 +996,2006-01-01,3,3 +997,2006-01-01,0,0 +998,2006-01-01,7,7 +368,2006-01-01,6,7 +3,2006-01-01,4,3 +476,2006-01-05,6,7 +281,2006-01-07,6,7 +146,2006-01-08,4,5 +464,2006-01-13,6,7 +158,2006-01-17,6,7 +454,2006-01-18,5,7 +78,2006-01-18,5,7 +529,2006-01-22,5,7 +697,2006-01-23,4,3 +462,2006-01-27,1,2 +48,2006-01-27,0,1 +151,2006-01-29,5,4 +783,2006-02-04,3,4 +756,2006-02-05,4,5 +528,2006-02-06,6,5 +799,2006-02-06,4,5 +917,2006-02-09,5,7 +950,2006-02-10,1,3 +556,2006-02-15,4,3 +102,2006-02-16,6,7 +713,2006-02-17,5,4 +152,2006-02-17,2,1 +276,2006-02-20,4,5 +833,2006-03-02,6,7 +19,2006-03-03,4,5 +727,2006-03-05,2,1 +877,2006-03-07,4,3 +183,2006-03-10,2,3 +718,2006-03-12,6,5 +731,2006-03-13,6,7 +414,2006-03-13,1,2 +149,2006-03-15,6,7 +714,2006-03-20,6,7 +362,2006-03-21,6,7 +940,2006-03-22,4,2 +198,2006-03-23,3,2 +223,2006-03-28,1,2 +863,2006-04-04,6,5 +723,2006-04-05,0,1 +691,2006-04-11,2,4 +310,2006-04-12,6,7 +992,2006-04-13,5,7 +766,2006-04-16,3,2 +894,2006-04-17,6,7 +328,2006-04-19,6,7 +115,2006-04-23,3,4 +11,2006-04-23,5,6 +552,2006-04-25,6,7 +541,2006-04-26,2,3 +872,2006-04-29,6,7 +185,2006-05-05,4,3 +999,2006-05-07,6,7 +252,2006-05-09,6,7 +358,2006-05-14,6,7 +207,2006-05-15,6,3 +939,2006-05-17,2,1 +734,2006-05-20,3,2 +124,2006-05-22,4,5 +836,2006-05-22,5,2 +416,2006-05-22,4,5 +331,2006-05-22,6,3 +773,2006-05-28,0,1 +8,2006-05-28,1,3 +671,2006-05-29,4,5 +316,2006-05-29,4,5 +50,2006-05-31,0,1 +174,2006-06-08,6,7 +646,2006-06-09,6,7 +291,2006-06-09,5,7 +205,2006-06-13,5,4 +890,2006-06-16,5,6 +810,2006-06-18,4,5 +916,2006-06-20,6,7 +268,2006-06-21,6,7 +778,2006-06-24,6,4 +12,2006-06-26,5,7 +73,2006-06-28,5,6 +628,2006-07-04,5,7 +604,2006-07-04,2,4 +46,2006-07-06,0,1 +163,2006-07-14,6,7 +866,2006-07-14,2,3 +800,2006-07-15,5,3 +761,2006-07-21,6,7 +955,2006-07-22,1,2 +624,2006-07-24,1,2 +686,2006-07-25,1,2 +18,2006-07-29,5,7 +505,2006-07-30,6,7 +870,2006-07-30,1,2 +286,2006-07-31,6,7 +184,2006-07-31,2,3 +594,2006-08-03,6,7 +400,2006-08-05,6,7 +926,2006-08-05,3,4 +109,2006-08-07,5,6 +164,2006-08-10,6,7 +322,2006-08-11,4,3 +80,2006-08-11,4,5 +880,2006-08-19,6,4 +153,2006-08-23,5,7 +838,2006-08-24,6,7 +921,2006-09-03,4,3 +132,2006-09-09,3,4 +506,2006-09-10,6,7 +769,2006-09-10,4,3 +238,2006-09-13,6,7 +440,2006-09-14,5,7 +382,2006-09-15,3,7 +793,2006-09-17,1,2 +222,2006-09-23,4,1 +101,2006-09-26,3,2 +816,2006-09-28,6,5 +577,2006-09-30,6,7 +702,2006-09-30,6,5 +221,2006-09-30,6,7 +2,2006-10-01,5,6 +243,2006-10-01,2,3 +696,2006-10-01,4,5 +241,2006-10-05,2,3 +275,2006-10-07,6,7 +811,2006-10-09,6,7 +450,2006-10-12,6,7 +662,2006-10-12,6,7 +935,2006-10-14,6,7 +225,2006-10-15,6,7 +91,2006-10-17,6,7 +206,2006-10-17,1,2 +364,2006-10-23,6,7 +952,2006-10-24,1,2 +905,2006-10-25,4,5 +641,2006-10-25,3,4 +131,2006-10-30,4,7 +742,2006-11-02,5,3 +154,2006-11-03,4,5 +832,2006-11-04,6,7 +188,2006-11-05,6,7 +698,2006-11-05,5,4 +875,2006-11-06,6,5 +527,2006-11-07,6,7 +830,2006-11-09,6,7 +970,2006-11-11,6,7 +449,2006-11-11,5,6 +693,2006-11-14,6,5 +844,2006-11-23,4,3 +823,2006-11-23,6,7 +815,2006-11-23,2,3 +361,2006-12-02,4,5 +745,2006-12-04,6,3 +795,2006-12-07,0,1 +340,2006-12-07,6,7 +708,2006-12-11,4,6 +190,2006-12-13,5,6 +16,2006-12-13,5,4 +44,2006-12-13,6,7 +219,2006-12-16,2,3 +143,2006-12-16,6,7 +572,2006-12-19,4,6 +274,2006-12-24,3,4 +974,2006-12-27,2,3 +28,2006-12-27,6,7 +495,2006-12-30,3,4 +447,2006-12-31,6,7 +308,2007-01-04,4,3 +642,2007-01-05,5,7 +361,2007-01-13,5,4 +515,2007-01-14,5,6 +311,2007-01-17,5,6 +74,2007-01-23,6,7 +835,2007-02-03,2,3 +333,2007-02-03,3,2 +93,2007-02-04,4,3 +866,2007-02-04,3,4 +504,2007-02-05,5,3 +288,2007-02-07,0,1 +110,2007-02-11,4,5 +850,2007-02-12,4,3 +636,2007-02-17,6,7 +683,2007-02-21,3,2 +757,2007-02-22,5,7 +671,2007-02-26,5,6 +445,2007-03-05,0,1 +206,2007-03-07,2,3 +124,2007-03-08,5,7 +179,2007-03-11,6,7 +806,2007-03-12,5,6 +844,2007-03-13,3,2 +913,2007-03-19,5,1 +905,2007-03-29,5,7 +139,2007-04-08,3,2 +316,2007-04-11,5,6 +640,2007-04-12,5,4 +704,2007-04-13,3,4 +574,2007-04-15,1,2 +899,2007-04-19,6,7 +350,2007-05-02,1,2 +688,2007-05-03,4,3 +257,2007-05-12,6,7 +134,2007-05-13,0,1 +244,2007-05-16,1,0 +14,2007-05-16,4,5 +958,2007-05-17,5,7 +717,2007-05-18,4,5 +964,2007-05-24,2,3 +193,2007-05-25,5,4 +2,2007-05-25,6,5 +468,2007-05-26,5,4 +108,2007-05-28,6,5 +337,2007-05-28,2,1 +187,2007-06-02,2,3 +408,2007-06-06,3,1 +605,2007-06-07,3,2 +205,2007-06-08,4,2 +449,2007-06-12,6,7 +144,2007-06-13,6,7 +413,2007-06-14,6,5 +392,2007-06-16,3,4 +182,2007-06-20,6,5 +146,2007-06-23,5,6 +442,2007-06-24,2,3 +708,2007-06-25,6,7 +457,2007-06-27,5,4 +274,2007-07-02,4,5 +162,2007-07-03,4,3 +94,2007-07-05,1,2 +672,2007-07-05,4,6 +657,2007-07-07,6,7 +689,2007-07-09,2,1 +8,2007-07-14,3,2 +583,2007-07-17,5,7 +258,2007-07-22,1,2 +397,2007-07-23,0,3 +190,2007-07-23,6,7 +411,2007-07-25,1,2 +326,2007-07-25,4,6 +197,2007-07-26,3,0 +569,2007-07-27,4,6 +533,2007-07-27,2,3 +186,2007-07-29,5,6 +780,2007-08-03,3,2 +982,2007-08-06,4,5 +522,2007-08-06,2,3 +547,2007-08-09,3,2 +875,2007-08-16,5,3 +412,2007-08-16,6,7 +700,2007-08-31,6,7 +386,2007-09-03,1,2 +430,2007-09-04,6,7 +9,2007-09-05,6,7 +632,2007-09-08,6,5 +100,2007-09-10,0,1 +920,2007-09-11,1,2 +73,2007-09-12,6,7 +121,2007-09-13,6,7 +420,2007-09-15,6,7 +602,2007-09-15,4,7 +466,2007-09-16,6,7 +524,2007-09-16,2,4 +180,2007-09-18,3,4 +537,2007-09-21,4,5 +673,2007-09-23,6,7 +503,2007-10-01,4,5 +129,2007-10-04,4,7 +226,2007-10-07,4,7 +668,2007-10-08,5,6 +754,2007-10-10,5,2 +297,2007-10-12,6,7 +581,2007-10-12,6,7 +814,2007-10-21,1,0 +728,2007-10-21,5,6 +635,2007-10-26,5,7 +654,2007-11-03,6,7 +109,2007-11-05,6,5 +113,2007-11-05,6,5 +973,2007-11-06,6,5 +915,2007-11-06,4,3 +860,2007-11-12,5,7 +406,2007-11-21,5,1 +168,2007-11-24,3,4 +968,2007-11-24,2,3 +650,2007-11-25,2,3 +112,2007-12-05,5,6 +791,2007-12-15,6,7 +902,2007-12-25,1,2 +936,2007-12-28,3,2 +284,2007-12-29,6,7 +664,2008-01-01,3,2 +734,2008-01-10,2,1 +815,2008-01-27,3,7 +688,2008-01-31,3,2 +397,2008-01-31,3,2 +11,2008-02-01,6,7 +576,2008-02-02,1,2 +497,2008-02-03,0,1 +109,2008-02-04,5,4 +240,2008-02-16,2,3 +241,2008-02-26,3,2 +395,2008-02-27,6,7 +316,2008-03-02,6,5 +86,2008-03-06,4,2 +953,2008-03-07,2,6 +181,2008-03-08,2,3 +13,2008-03-12,3,2 +338,2008-03-15,4,3 +146,2008-03-17,6,5 +162,2008-03-17,3,5 +251,2008-03-18,6,5 +634,2008-03-19,5,7 +432,2008-03-26,1,2 +870,2008-03-26,2,3 +473,2008-04-09,5,4 +900,2008-04-15,4,3 +737,2008-04-17,0,1 +653,2008-04-25,6,7 +816,2008-04-25,5,3 +693,2008-04-25,5,4 +401,2008-04-29,6,7 +795,2008-05-01,1,2 +337,2008-05-01,1,2 +922,2008-05-06,5,7 +890,2008-05-09,6,7 +942,2008-05-17,1,2 +176,2008-05-20,5,7 +330,2008-05-20,1,2 +800,2008-05-25,3,4 +590,2008-05-28,0,1 +801,2008-05-29,6,7 +207,2008-06-06,3,4 +857,2008-06-07,4,5 +995,2008-06-07,2,3 +211,2008-06-12,4,3 +184,2008-06-18,3,4 +417,2008-06-21,3,4 +66,2008-06-23,5,7 +272,2008-06-25,5,4 +711,2008-06-30,2,3 +410,2008-07-02,2,3 +907,2008-07-03,2,3 +792,2008-07-08,5,6 +318,2008-07-11,1,0 +43,2008-07-12,3,5 +806,2008-07-13,6,5 +587,2008-07-13,4,7 +533,2008-07-15,3,2 +619,2008-07-25,6,7 +885,2008-07-26,3,4 +41,2008-08-01,6,4 +920,2008-08-01,2,3 +199,2008-08-02,5,7 +539,2008-08-07,5,4 +123,2008-08-10,0,1 +808,2008-08-16,2,3 +47,2008-08-29,2,1 +765,2008-09-03,5,6 +967,2008-09-09,5,7 +638,2008-09-10,2,1 +835,2008-09-12,3,4 +913,2008-09-18,1,2 +633,2008-09-18,2,3 +785,2008-09-20,2,5 +988,2008-09-22,0,1 +798,2008-09-22,0,1 +392,2008-09-23,4,6 +671,2008-09-25,6,5 +672,2008-10-01,6,7 +680,2008-10-03,2,4 +863,2008-10-11,5,6 +150,2008-10-14,5,4 +723,2008-10-18,1,2 +261,2008-10-18,2,1 +834,2008-10-21,2,3 +827,2008-10-22,3,7 +528,2008-10-31,5,4 +887,2008-11-05,2,3 +538,2008-11-05,3,4 +522,2008-11-17,3,4 +470,2008-11-20,5,4 +824,2008-11-23,5,6 +826,2008-11-26,4,7 +858,2008-12-03,3,4 +89,2008-12-04,2,3 +630,2008-12-04,5,3 +141,2008-12-06,5,7 +501,2008-12-08,1,2 +133,2008-12-20,6,7 +72,2008-12-30,4,5 +953,2008-12-31,6,7 +928,2009-01-02,6,7 +765,2009-01-07,6,7 +155,2009-01-10,0,1 +329,2009-01-12,0,1 +311,2009-01-14,6,7 +1,2009-01-21,3,4 +732,2009-01-22,3,4 +2,2009-01-25,5,6 +510,2009-02-04,3,2 +417,2009-02-08,4,5 +573,2009-02-09,0,1 +887,2009-02-14,3,2 +269,2009-02-20,0,1 +868,2009-02-26,4,5 +824,2009-03-03,6,4 +57,2009-03-05,3,2 +544,2009-03-05,4,5 +315,2009-03-09,3,4 +113,2009-03-11,5,7 +717,2009-03-15,5,7 +788,2009-03-18,5,4 +103,2009-03-19,5,7 +475,2009-03-22,0,1 +160,2009-03-23,3,7 +865,2009-03-31,5,7 +703,2009-03-31,0,2 +749,2009-04-01,3,2 +398,2009-04-01,5,4 +978,2009-04-01,3,7 +637,2009-04-02,4,3 +895,2009-04-08,1,2 +866,2009-04-11,4,3 +971,2009-04-13,5,7 +123,2009-04-14,1,6 +929,2009-04-16,6,7 +197,2009-04-19,0,1 +641,2009-04-20,4,5 +15,2009-04-25,5,7 +82,2009-04-28,4,3 +230,2009-05-10,6,7 +170,2009-05-13,1,0 +425,2009-05-13,3,4 +675,2009-05-16,0,1 +348,2009-05-21,4,6 +384,2009-05-21,1,2 +253,2009-05-25,3,1 +617,2009-06-04,5,6 +192,2009-06-04,3,2 +706,2009-06-08,0,2 +104,2009-06-12,2,3 +522,2009-06-13,4,5 +71,2009-06-15,3,5 +934,2009-07-03,5,6 +367,2009-07-07,2,3 +259,2009-07-09,2,3 +980,2009-07-12,4,5 +989,2009-07-15,1,3 +241,2009-07-23,2,1 +656,2009-07-28,4,5 +304,2009-08-06,2,3 +959,2009-08-11,4,5 +554,2009-08-25,0,1 +371,2009-08-25,2,4 +493,2009-08-26,4,7 +271,2009-08-30,4,5 +595,2009-08-31,4,2 +481,2009-08-31,1,3 +503,2009-09-01,5,7 +561,2009-09-10,0,1 +326,2009-09-12,6,7 +863,2009-09-12,6,5 +21,2009-09-12,6,7 +349,2009-09-12,3,4 +547,2009-09-13,2,3 +537,2009-09-13,5,4 +316,2009-09-14,5,7 +926,2009-09-17,4,3 +162,2009-09-24,5,7 +324,2009-09-26,1,2 +75,2009-10-04,2,3 +84,2009-10-05,1,2 +747,2009-10-12,5,7 +684,2009-10-13,4,5 +586,2009-10-14,4,3 +974,2009-10-15,3,5 +470,2009-10-16,4,5 +921,2009-10-18,3,1 +837,2009-10-18,5,3 +572,2009-10-30,6,5 +674,2009-11-03,2,3 +758,2009-11-06,3,5 +245,2009-11-08,2,3 +232,2009-11-16,4,3 +919,2009-11-28,0,1 +261,2009-12-08,1,2 +182,2009-12-09,5,7 +808,2009-12-14,3,4 +744,2009-12-24,4,3 +194,2009-12-29,1,2 +873,2009-12-30,2,3 +508,2010-01-05,2,3 +744,2010-01-05,3,5 +136,2010-01-06,4,5 +521,2010-01-09,4,7 +10,2010-01-11,4,6 +191,2010-01-13,6,7 +265,2010-01-14,4,5 +555,2010-01-15,2,1 +387,2010-01-16,3,4 +132,2010-01-16,4,6 +939,2010-01-16,1,3 +693,2010-01-20,4,7 +556,2010-01-22,3,5 +775,2010-01-23,1,2 +778,2010-01-28,4,2 +245,2010-01-30,3,2 +780,2010-02-01,2,1 +690,2010-02-01,4,5 +348,2010-02-02,6,5 +16,2010-02-05,4,5 +808,2010-02-07,4,7 +214,2010-02-09,6,5 +613,2010-02-10,2,3 +743,2010-02-13,5,7 +477,2010-02-14,2,3 +34,2010-02-16,2,3 +840,2010-02-22,2,3 +794,2010-02-24,0,1 +98,2010-02-27,0,1 +58,2010-03-03,5,3 +748,2010-03-05,5,7 +156,2010-03-07,4,5 +728,2010-03-11,6,7 +678,2010-03-16,1,2 +484,2010-03-16,4,5 +389,2010-03-18,4,5 +574,2010-03-26,2,3 +184,2010-03-29,4,2 +639,2010-04-05,0,1 +14,2010-04-05,5,4 +544,2010-04-08,5,7 +258,2010-04-09,2,7 +57,2010-04-11,2,4 +875,2010-04-15,3,2 +930,2010-04-15,0,1 +682,2010-04-19,1,2 +818,2010-04-23,3,4 +469,2010-04-24,0,1 +334,2010-05-02,2,3 +584,2010-05-07,2,4 +42,2010-05-11,2,4 +437,2010-05-15,4,5 +111,2010-05-16,6,4 +572,2010-05-23,5,4 +99,2010-05-25,5,4 +127,2010-05-28,3,2 +206,2010-05-30,3,4 +732,2010-06-04,4,2 +566,2010-06-07,3,2 +751,2010-06-12,2,3 +871,2010-06-16,4,5 +724,2010-06-25,4,3 +375,2010-07-08,6,7 +20,2010-07-14,0,1 +530,2010-07-15,6,7 +712,2010-07-19,1,2 +498,2010-07-22,4,5 +246,2010-07-26,0,1 +434,2010-07-27,1,2 +880,2010-08-02,4,5 +950,2010-08-03,3,5 +436,2010-08-09,2,3 +393,2010-08-11,4,2 +557,2010-08-16,1,2 +2,2010-08-23,6,5 +742,2010-08-24,3,2 +496,2010-08-25,6,7 +372,2010-08-27,5,6 +196,2010-08-27,6,7 +347,2010-08-28,2,5 +701,2010-09-04,4,5 +482,2010-09-12,0,6 +745,2010-09-13,3,2 +32,2010-09-13,0,1 +612,2010-09-16,1,2 +481,2010-09-21,3,4 +752,2010-09-24,5,6 +569,2010-10-11,6,7 +913,2010-10-13,2,1 +198,2010-10-19,2,3 +322,2010-10-28,3,4 +661,2010-10-30,0,1 +877,2010-11-01,3,4 +413,2010-11-11,5,7 +870,2010-11-11,3,4 +180,2010-11-13,4,6 +197,2010-11-25,1,2 +386,2010-11-30,2,3 +56,2010-12-05,0,1 +118,2010-12-07,2,3 +729,2010-12-09,4,3 +249,2010-12-10,3,2 +210,2010-12-13,6,7 +744,2011-01-03,5,7 +32,2011-01-03,1,0 +515,2011-01-06,6,5 +273,2011-01-09,0,1 +76,2011-01-10,5,6 +206,2011-01-10,4,5 +739,2011-01-16,1,3 +632,2011-01-17,5,3 +100,2011-01-22,1,2 +14,2011-01-23,4,5 +690,2011-01-24,5,6 +267,2011-01-27,0,2 +767,2011-01-27,1,2 +146,2011-01-28,5,7 +117,2011-01-28,1,2 +19,2011-02-01,5,6 +868,2011-02-19,5,7 +470,2011-02-21,5,4 +372,2011-02-23,6,7 +538,2011-02-24,4,6 +537,2011-02-28,4,5 +484,2011-03-08,5,3 +154,2011-03-09,5,2 +385,2011-03-10,2,3 +361,2011-03-11,4,5 +847,2011-03-12,4,5 +667,2011-03-17,2,3 +428,2011-03-19,2,0 +543,2011-03-27,3,2 +695,2011-04-06,1,2 +698,2011-04-09,4,3 +315,2011-04-12,4,5 +732,2011-04-14,2,3 +213,2011-04-28,5,7 +272,2011-05-10,4,3 +841,2011-05-12,5,6 +904,2011-05-17,1,2 +2,2011-05-19,5,6 +547,2011-05-22,3,2 +475,2011-05-22,1,2 +818,2011-05-24,4,5 +482,2011-05-24,6,7 +934,2011-05-25,6,7 +26,2011-05-30,3,4 +528,2011-06-04,4,6 +799,2011-06-07,5,6 +34,2011-06-11,3,2 +920,2011-06-11,3,2 +599,2011-06-16,1,2 +56,2011-06-25,1,2 +136,2011-06-27,5,7 +792,2011-06-29,6,5 +822,2011-07-06,0,1 +912,2011-07-18,5,7 +329,2011-07-21,1,2 +821,2011-07-21,3,7 +29,2011-07-28,4,5 +715,2011-07-29,2,3 +513,2011-07-30,1,3 +227,2011-08-02,6,5 +725,2011-08-06,2,1 +306,2011-08-06,4,5 +762,2011-08-10,5,7 +437,2011-08-16,5,3 +504,2011-08-19,3,4 +491,2011-08-21,3,4 +641,2011-08-21,5,7 +988,2011-09-19,1,2 +241,2011-09-26,1,2 +42,2011-09-27,4,3 +282,2011-09-30,4,3 +578,2011-10-06,3,2 +180,2011-10-07,6,4 +168,2011-10-08,4,5 +780,2011-10-12,1,2 +884,2011-10-13,2,3 +398,2011-10-16,4,5 +601,2011-10-19,5,7 +852,2011-10-24,2,3 +83,2011-11-02,4,2 +147,2011-11-04,5,7 +881,2011-11-05,1,2 +335,2011-11-16,2,3 +793,2011-11-17,2,3 +416,2011-11-21,5,7 +186,2011-12-07,6,7 +37,2011-12-11,5,6 +183,2011-12-14,3,6 +863,2011-12-15,5,6 +487,2011-12-20,5,7 +256,2011-12-23,4,5 +839,2011-12-25,4,5 +930,2011-12-26,1,2 +810,2011-12-26,5,3 +231,2011-12-27,3,4 +410,2011-12-28,3,4 +428,2012-01-04,0,3 +46,2012-01-05,1,2 +205,2012-01-16,2,1 +794,2012-01-19,1,2 +409,2012-01-21,4,3 +343,2012-01-23,4,3 +396,2012-01-25,2,1 +33,2012-01-28,5,6 +429,2012-02-01,3,2 +982,2012-02-07,5,6 +307,2012-02-09,2,1 +392,2012-02-12,6,7 +538,2012-02-18,6,5 +266,2012-02-19,4,7 +945,2012-02-21,3,2 +453,2012-02-26,2,4 +610,2012-02-26,1,2 +92,2012-03-01,5,7 +371,2012-03-06,4,5 +165,2012-03-08,3,7 +335,2012-03-08,3,4 +185,2012-03-08,3,4 +279,2012-03-10,3,4 +797,2012-03-17,4,3 +806,2012-03-17,5,6 +852,2012-03-20,3,4 +49,2012-03-21,4,5 +126,2012-04-15,2,3 +615,2012-04-17,2,3 +824,2012-04-19,4,5 +555,2012-04-28,1,2 +799,2012-04-29,6,4 +770,2012-05-04,5,7 +822,2012-05-06,1,2 +425,2012-05-08,4,5 +385,2012-05-09,3,4 +751,2012-05-13,3,4 +793,2012-05-18,3,2 +837,2012-05-24,3,5 +656,2012-05-25,5,7 +976,2012-05-27,0,1 +565,2012-05-28,4,5 +961,2012-06-01,2,3 +771,2012-06-02,4,5 +116,2012-06-08,1,2 +109,2012-06-10,4,7 +389,2012-06-14,5,6 +484,2012-06-14,3,2 +573,2012-06-19,1,2 +502,2012-06-26,5,7 +987,2012-07-02,2,3 +499,2012-07-05,3,2 +640,2012-07-06,4,2 +414,2012-07-08,2,3 +314,2012-07-13,0,1 +452,2012-07-23,0,1 +376,2012-07-30,1,2 +82,2012-08-08,3,2 +460,2012-08-11,3,4 +960,2012-08-17,5,4 +2,2012-08-24,6,7 +354,2012-08-24,2,3 +7,2012-08-26,5,4 +504,2012-09-07,4,5 +841,2012-09-09,6,7 +726,2012-09-12,5,4 +485,2012-09-13,2,3 +51,2012-09-15,5,4 +687,2012-09-15,1,2 +247,2012-09-15,5,4 +991,2012-09-16,2,3 +391,2012-09-18,5,6 +885,2012-09-21,4,3 +377,2012-09-26,0,1 +679,2012-09-27,1,2 +915,2012-09-28,3,4 +753,2012-09-28,0,1 +58,2012-10-03,3,4 +161,2012-10-10,2,4 +65,2012-10-13,4,3 +895,2012-10-15,2,1 +232,2012-10-17,3,4 +76,2012-10-21,6,7 +855,2012-10-22,4,6 +171,2012-10-28,3,4 +231,2012-11-01,4,5 +652,2012-11-03,3,4 +671,2012-11-10,5,7 +312,2012-11-12,2,1 +183,2012-11-13,6,5 +156,2012-11-19,5,4 +850,2012-11-22,3,4 +664,2012-11-23,2,1 +265,2012-11-23,5,7 +683,2012-11-27,2,3 +813,2012-12-02,3,4 +4,2012-12-04,5,4 +71,2012-12-05,5,7 +871,2012-12-05,5,7 +535,2012-12-14,2,3 +295,2012-12-20,4,5 +150,2012-12-22,4,5 +523,2012-12-27,1,2 +668,2012-12-28,6,7 +779,2012-12-29,4,5 +954,2013-01-04,3,4 +308,2013-01-09,3,2 +588,2013-01-11,4,3 +443,2013-01-12,0,1 +409,2013-01-17,3,5 +889,2013-01-18,2,1 +441,2013-01-21,3,4 +333,2013-01-23,2,3 +232,2013-01-24,4,3 +267,2013-01-29,2,3 +716,2013-02-09,4,3 +341,2013-02-09,5,6 +593,2013-02-28,1,2 +617,2013-03-01,6,7 +58,2013-03-15,4,7 +353,2013-03-20,2,3 +417,2013-03-21,5,4 +643,2013-04-01,5,4 +50,2013-04-04,1,3 +531,2013-04-07,5,4 +111,2013-04-08,4,3 +177,2013-04-11,5,4 +65,2013-04-13,3,4 +178,2013-04-20,1,0 +3,2013-04-20,3,2 +638,2013-04-22,1,2 +800,2013-04-23,4,5 +33,2013-04-26,6,5 +352,2013-04-26,5,6 +239,2013-05-11,3,4 +435,2013-05-11,4,3 +566,2013-05-19,2,3 +779,2013-05-23,5,6 +537,2013-05-24,5,6 +538,2013-05-25,5,4 +112,2013-05-27,6,7 +982,2013-05-28,6,7 +783,2013-06-08,4,2 +406,2013-06-09,1,2 +279,2013-06-16,4,5 +863,2013-06-17,6,5 +729,2013-06-19,3,2 +524,2013-06-19,4,3 +366,2013-06-20,5,4 +536,2013-06-21,5,6 +277,2013-06-21,2,3 +558,2013-06-24,4,3 +132,2013-07-07,6,4 +247,2013-07-08,4,5 +16,2013-07-14,5,4 +932,2013-07-22,3,4 +857,2013-07-27,5,7 +964,2013-07-27,3,6 +206,2013-07-30,5,6 +694,2013-07-31,1,3 +855,2013-08-06,6,5 +223,2013-08-07,2,3 +771,2013-08-14,5,4 +60,2013-08-15,1,2 +504,2013-08-16,5,4 +251,2013-08-16,5,7 +7,2013-08-17,4,3 +572,2013-08-29,4,2 +85,2013-08-30,0,1 +49,2013-09-02,5,6 +98,2013-09-05,1,2 +725,2013-09-10,1,2 +13,2013-09-22,2,3 +824,2013-09-23,5,7 +528,2013-09-27,6,7 +57,2013-09-30,4,5 +217,2013-10-04,4,6 +37,2013-10-08,6,5 +882,2013-10-09,3,2 +236,2013-10-10,2,3 +746,2013-10-11,4,5 +926,2013-10-14,3,5 +72,2013-10-17,5,4 +584,2013-10-23,4,5 +19,2013-10-28,6,7 +874,2013-10-31,0,1 +941,2013-11-07,1,3 +145,2013-11-09,2,5 +444,2013-11-09,2,1 +965,2013-11-09,1,2 +974,2013-11-10,5,7 +582,2013-11-15,1,2 +1,2013-11-23,4,5 +156,2013-11-23,4,3 +906,2013-11-24,5,6 +122,2013-11-24,4,3 +95,2013-11-28,5,7 +983,2013-11-30,2,4 +541,2013-12-02,3,4 +752,2013-12-03,6,7 +216,2013-12-04,3,4 +89,2013-12-06,3,4 +407,2013-12-14,0,1 +852,2013-12-14,4,6 +829,2013-12-29,1,2 +254,2014-01-02,1,2 +315,2014-01-02,5,7 +261,2014-01-04,2,3 +898,2014-01-04,5,6 +551,2014-01-06,0,1 +910,2014-01-18,1,2 +959,2014-01-20,5,7 +337,2014-01-23,2,1 +202,2014-02-04,2,3 +469,2014-02-09,1,5 +885,2014-02-14,3,7 +585,2014-02-14,5,7 +468,2014-02-17,4,1 +423,2014-03-05,2,3 +584,2014-03-07,5,6 +715,2014-03-15,3,2 +409,2014-03-20,5,4 +150,2014-03-30,5,4 +539,2014-03-30,4,3 +632,2014-04-03,3,4 +446,2014-04-07,5,6 +47,2014-04-08,1,2 +904,2014-04-09,2,1 +389,2014-04-11,6,7 +756,2014-04-18,5,7 +3,2014-04-22,2,3 +437,2014-05-06,3,2 +187,2014-05-12,3,2 +839,2014-05-13,5,7 +116,2014-05-19,2,1 +943,2014-05-25,0,1 +687,2014-05-25,2,3 +349,2014-05-26,4,7 +567,2014-05-31,1,0 +643,2014-06-06,4,7 +455,2014-06-08,5,7 +901,2014-06-10,2,3 +863,2014-06-11,5,7 +525,2014-06-17,0,1 +906,2014-06-17,6,7 +940,2014-06-25,2,3 +678,2014-06-25,2,1 +173,2014-06-28,1,0 +688,2014-06-29,2,3 +683,2014-06-29,3,4 +228,2014-06-30,4,6 +878,2014-07-02,5,6 +980,2014-07-13,5,7 +773,2014-07-15,1,2 +702,2014-07-23,5,4 +50,2014-07-24,3,4 +88,2014-07-24,2,3 +560,2014-07-25,4,3 +806,2014-08-13,6,7 +59,2014-08-19,0,1 +852,2014-08-22,6,5 +70,2014-08-25,1,4 +515,2014-08-29,5,6 +4,2014-08-31,4,1 +387,2014-09-01,4,3 +347,2014-09-07,5,4 +396,2014-09-10,1,2 +877,2014-09-17,4,7 +217,2014-09-23,6,7 +422,2014-09-24,0,1 +939,2014-09-24,3,4 +385,2014-10-10,4,5 +746,2014-10-11,5,6 +198,2014-10-21,3,4 +85,2014-10-26,1,2 +224,2014-11-03,5,4 +814,2014-11-04,0,1 +914,2014-11-05,1,2 +206,2014-11-14,6,5 +167,2014-11-19,2,3 +670,2014-11-21,0,1 +72,2014-11-24,4,7 +181,2014-11-30,3,2 +710,2014-12-06,3,4 +613,2014-12-08,3,2 +470,2014-12-22,4,5 +69,2014-12-25,3,4 +604,2014-12-25,4,5 +537,2014-12-27,6,7 diff --git a/description.rst b/description.rst index 5b68647..043f14c 100644 --- a/description.rst +++ b/description.rst @@ -8,10 +8,10 @@ Use cases include credit rating transitions, system state event logs and more. * Author: `Open Risk `_ * License: Apache 2.0 * Code Documentation: `Read The Docs `_ -* Mathematical Documentation: `Open Risk Manual `_ +* Mathematical Documentation: `Open Risk Manual `_ * Training: `Open Risk Academy `_ * Development Website: `Github `_ -* Discussion: Open Risk Discord Server +* Showcase: `Blog Posts `_ Functionality ------------- @@ -32,7 +32,7 @@ github repository** Architecture ------------ -* transitioMatrix supports file input/output in json and csv formats +* transitinoMatrix supports file input/output in json and csv formats * it has a powerful API for handling event data (based on pandas) * provides intuitive objects for handling transition matrices individually and as sets (based on numpy) * supports visualization using matplotlib @@ -51,25 +51,27 @@ You can install and use the transitionMatrix package in any system that supports Dependencies ----------------- -- TransitionMatrix requires Python 3 -- It depends on numerical and data processing Python libraries (Numpy, Scipy, Pandas) -- The Visualization API depends on Matplotlib +- TransitionMatrix requires Python 3 (currently 3.7) +- It depends on numerical and data processing Python libraries (Numpy, Scipy, Pandas). +- The Visualization API depends on Matplotlib. - The precise dependencies are listed in the requirements.txt file. -- TransitionMatrix may work with earlier versions of these packages but this has not been tested. +- TransitionMatrix may work with earlier versions of python / these packages but it is not tested. -From PyPi +From PyPI ------------- +.. Todo:: PyPI might not have the latest and best release + .. code:: bash pip3 install pandas - pip3 install matplotlib + pip3 install matplotlib, plotly pip3 install transitionMatrix From sources ------------- -Download the sources to your preferred directory: +Download the sources in your preferred directory: .. code:: bash @@ -86,7 +88,7 @@ It is advisable to install the package in a virtualenv so as not to interfere wi virtualenv -p python3 tm_test source tm_test/bin/activate -If you do not have pandas already installed make sure you install it first (will also install numpy) +If you do not have pandas already installed make sure you install it first (this will also install numpy and other required dependencies). .. code:: bash @@ -104,19 +106,23 @@ File structure ----------------- The distribution has the following structure: -| transitionMatrix The library source code -| model.py Main data structures -| estimators Estimator methods -| utils Helper classes and methods -| examples Usage examples -| datasets Contains a variety of datasets useful for getting started with transitionMatrix -| tests Testing suite +:: + + | transitionMatrix/ Directory with the library source code + | -- model.py File with main data structures + | -- estimators/ Directory with the estimator methods + | -- utils/ Directory with helper classes and methods + | -- examples/ Directory with usage examples + | ---- python/ Examples as standalone python scripts + | ---- notebooks/ Examples as jupyter notebooks + | ---- academy/ Example scripts from the Open Risk Academy course PYT26038 + | -- datasets/ Directory with a variety of datasets useful for getting started + | -- tests/ Directory with the testing suite Testing ---------------------- It is a good idea to run the test-suite. Before you get started: - - Adjust the source directory path in transitionMatrix/__init__ and then issue the following in at the root of the distribution - Unzip the data files in the datasets directory @@ -125,13 +131,10 @@ It is a good idea to run the test-suite. Before you get started: python3 test.py Getting Started -======================= - -Check the Usage pages in this documentation - -Look at the examples directory for a variety of typical workflows. - -For more in depth study, the Open Risk Academy has courses elaborating on the use of the library +=============== -- Analysis of Credit Migration using Python TransitionMatrix: https://www.openriskacademy.com/course/view.php?id=38 +- Check the **Usage** pages in this documentation. +- Look at the **Examples** directory for a variety of typical workflows. +- For a more in depth study, the Open Risk Academy has courses elaborating on the use of the library: + - `Analysis of Credit Migration using Python TransitionMatrix `_ diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..2ddb1ea --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = transitionMatrix +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/source/basic_operations.rst b/docs/source/basic_operations.rst new file mode 100644 index 0000000..be164d2 --- /dev/null +++ b/docs/source/basic_operations.rst @@ -0,0 +1,52 @@ +Basic Operations +======================== +The core TransitionMatrix object implements a typical (one period) transition matrix. It supports a variety of operations (more details are documented in the API section) + +- Initialize a matrix (from data, predefined matrices, TODO random etc) +- Validate a matrix +- Attempt to fix a matrix +- Compute generators, powers etc. +- Output to json/csv formats + +Note: All standard numerical matrix operations are available as per numpy API. + +Single Matrix Operation Example +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: matrix_operations.py + +Maybe the best point to get started as it contains simple single matrix examples + + +Empirical Transition Matrix +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: empirical_transition_matrix.py + +Example workflows using transitionMatrix to estimate an empirical transition matrix from duration type data +The datasets are produced in examples/generate_synthetic_data.py This example uses the +`Aalen-Johansen estimator `_ + +Plot of estimated transition probabilities + +.. image:: ../../examples/transition_probabilities.png + + +Estimate Matrix from Cohort Data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: matrix_from_cohort_data.py + +Example workflows using transitionMatrix to estimate a transition matrix from data that are +already grouped in cohorts + + +Matrix from Duration Data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: matrix_from_duration_data.py + +Example workflows using transitionMatrix to estimate a transition matrix from data that are +in duration format. The datasets are first grouped in period cohorts + + diff --git a/docs/source/conf.py b/docs/source/conf.py index 09e99bb..4a57c38 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -17,12 +17,12 @@ sys.path.insert(0, os.path.abspath('../../')) -__version__ = '0.4.6' +__version__ = '0.4.7' # -- Project information ----------------------------------------------------- project = 'transitionMatrix' -copyright = '2017-2019, Open Risk' +copyright = '2017-2020, Open Risk' author = 'Open Risk' # The short X.Y version diff --git a/docs/source/credit_curves.rst b/docs/source/credit_curves.rst new file mode 100644 index 0000000..f5468a5 --- /dev/null +++ b/docs/source/credit_curves.rst @@ -0,0 +1,16 @@ +Credit Curves +======================== +A Credit Curve denotes a grouping of credit risk metrics (parameters) that provide estimates that a legal entity experiences a Credit Event over different (an increasing sequence of longer) time periods +Notation + +The credit curve (default curve) at timepoint t_0 is the collection of credit default expectation probabilities at the various future time-points. + +Calculate and Plot Credit Curves +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: credit_curves.py + +Example of using transitionMatrix to calculate and visualize multi-period +`Credit Curves `_ + +.. image:: ../../examples/credit_curves.png \ No newline at end of file diff --git a/docs/source/data_formats.rst b/docs/source/data_formats.rst index dca4e7b..5cadcab 100644 --- a/docs/source/data_formats.rst +++ b/docs/source/data_formats.rst @@ -1,21 +1,17 @@ -Data Formats -============ +Input Data Formats +=================== -The transitionMatrix package supports a variety of input data formats for empirical (observation) data. -Two key ones are described here in more detail. More detailed documentation about data formats provided at -the Transition Matrix category at the `Open Risk Manual `_ +The transitionMatrix package supports a variety of input data formats for empirical (observation) data. Two key ones are described here in more detail. More detailed documentation about data formats at the `Open Risk Manual Risk Data Category `_ Long Data Format ------------------------------------------- -The Long Data Format consists of Tuples (ID, Time, From State, To State) indicating the time T at which an entity ID -migrated From -> To state. +The Long Data Format consists of Tuples (Entity ID, Time, From State, To State) indicating the time T at which an entity ID migrated from the (From State) -> to the (To State). Canonical Form ~~~~~~~~~~~~~~~~ -The canonical form that is used as input to duration based estimators uses normalize timestamps (from 0 to T_max) -and looks as follows: +The *canonical form* used as input to duration based estimators uses normalized timestamps (from 0 to T_max, where T_max is the latest timepoint) and looks as follows: +----+------+----+----+ | ID | Time | Fr | To | @@ -38,7 +34,7 @@ and looks as follows: String Date Form ~~~~~~~~~~~~~~~~ -It is frequent that the transition data have timestamps in the form of a datatime string. For example: +It is frequent that transition data have timestamps in the form of a *datatime string*. For example: +----+-------------+----+----+ | ID | Date String | Fr | To | @@ -48,16 +44,15 @@ It is frequent that the transition data have timestamps in the form of a datatim | 1 | 10-11-2010 | 1 | 2 | +----+-------------+----+----+ -In this case the Datetime_to_float function of _`transitionMatrix.utils subpackage` the can be used to convert data into the canonical form +In this case the Datetime_to_float function of _`transitionMatrix.utils subpackage` can be used to convert data into the canonical form. Compact Long Format ------------------------------------------- -Triples (ID, Time, State) indicating the time T at which an entity ID LEFT its previous state S (the state it migrates to -is encoded in the next observation of the same entity). +Triples (ID, Time, State) indicating the time T at which an entity ID **Left** its previous state S (the state it migrates to is encoded in the next observation of the same entity). The compact format avoids the duplication of data but requires that the final state of all entities at the end -of the observation window (Time F) is included as the last record +of the observation window (Time F) is included as the last record. +----+-----+---+ | ID | T | S | @@ -83,7 +78,7 @@ of the observation window (Time F) is included as the last record Wide Data Format -------------------------------------------- +------------------ Conversion from wide to long can be handled using the `pandas wide_to_long method `_. @@ -93,5 +88,4 @@ Conversion from wide to long can be handled using the `pandas wide_to_long metho Other Formats ------------------------------------------- -Data ingestion is via a pandas dataframe so other formats can be handled with additional coding. Submit an issue -with your desired format. \ No newline at end of file +Data ingestion is via a pandas dataframe so other formats can be handled with additional coding. Submit an issue with your desired format. \ No newline at end of file diff --git a/docs/source/examples.rst b/docs/source/examples.rst deleted file mode 100644 index debaed7..0000000 --- a/docs/source/examples.rst +++ /dev/null @@ -1,182 +0,0 @@ -Examples -======== - -The examples directory includes python scripts and jupyter notebooks to help you get started - -- Generating transition matrices from data -- Manipulating transition matrices -- Computing and visualizing credit curves corresponding to a set of transition matrices -- Mapping rating states between different rating systems - -Python Scripts -------------------------------------------- - -Located in examples/python (For testing purposes all examples can be run using the run_examples.py script -located in the root directory) - - -Matrix Operations -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* matrix_set_operations.py - -Examples using transitionMatrix to perform various transition matrix operations - - -Adjust NR States -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* adjust_nr_states.py - -Example of using transitionMatrix adjust the (not-rated) NR state. Input data are the Standard -and Poor's historical data (1981 - 2016) for corporate credit rating migrations. Example of handling -`right censoring issues `_ - -Fix Multiperiod Matrix -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* fix_multiperiod_matrix.py - -Example of using transitionMatrix to detect and solve various pathologies that might be affecting transition -matrix data - -Generate Full Multiperiod Set -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* generate_full_multiperiod_set.py - -Example of using the transitionMatrix generator methods to generate a full multi-period matrix set -The input data are processed Standard and Poor's matrices for a selection of cumulative observation points -NB: This example requires a substantial amount of custom code! - -Generate Synthetic Data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* generate_synthetic_data.py - -Example workflows using transitionMatrix to generate synthetic data. -(Edit the dataset selector to switch between examples) - -The first set of examples produce "duration" type data. Estimating transitions -for duration data is done directly with duration type estimators or after -cohorting (binning) the data for cohort (frequency) type estimators. - -The subsequent set of examples produce cohort type data using markov chain simulation - - -Matrix from Cohort Data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* matrix_from_cohort_data.py - -Example workflows using transitionMatrix to estimate a transition matrix from data that are -already grouped in cohorts - -Matrix from Duration Data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* matrix_from_duration_data.py - -Example workflows using transitionMatrix to estimate a transition matrix from data that are -in duration format. The datasets are first grouped in period cohorts - -Matrix from LendingClub Data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* matrix_lendingclub.py -* matrix_set_lendingclub.py - -Example workflows using transitionMatrix to estimate a matrix from LendingClub data -Input data are in a special cohort format as the published datasets have some limitations - - -Calculate and Plot Credit Curves -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* credit_curves.py - -Example of using transitionMatrix to calculate and visualize multi-period -`Credit Curves `_ - -.. image:: ../../examples/credit_curves.png - - -Empirical Transition Matrix -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* empirical_transition_matrix.py - -Example workflows using transitionMatrix to estimate an empirical transition matrix from duration type data -The datasets are produced in examples/generate_synthetic_data.py This example uses the -`Aalen-Johansen estimator `_ - -Plot of estimated transition probabilities - -.. image:: ../../examples/transition_probabilities.png - - -Map credit ratings between systems -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* state_space_operations.py - -Example workflows for converting data from one credit rating system to another using an established mapping -table - - -Generate Visuals -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* generate_visuals.py - -Example workflows using transitionMatrix to generate visualizations of migration phenomena - -Example 1 -"""""""""""""""""""""""""""" -Plotting the state space trajectory of a single entity - -.. image:: ../../examples/single_entity.png - -Example 2 -"""""""""""""""""""""""""""" -Plotting the state space trajectory of multiple entities - -.. image:: ../../examples/sampled_histories.png - -Example 3 -"""""""""""""""""""""""""""" -Histogram plot of transition frequencies - -.. image:: ../../examples/estimation.png - -Example 4 -"""""""""""""""""""""""""""" -Colored scatterplot of entity transitions over time - -.. image:: ../../examples/scatterplot.png - -Example 5 -"""""""""""""""""""""""""""" -Colored scatterplot of entity transitions over time (alternative form) - -.. image:: ../../examples/scatterplot2.png - -Example 6 -"""""""""""""""""""""""""""" -Visualize a transition matrix using Hinton-style visual - -.. image:: ../../examples/TransitionMatrix.png - -Example 7 -"""""""""""""""""""""""""""" -Convert labels between credit rating scales - -.. image:: ../../examples/scale_conversions.png - - -Jupyter Notebooks -------------------------------------------- - -* Adjust_NotRated_State.ipynb -* Matrix_Operations.ipynb -* Monthly_from_Annual.ipynb diff --git a/docs/source/further_examples.rst b/docs/source/further_examples.rst new file mode 100644 index 0000000..d5d6921 --- /dev/null +++ b/docs/source/further_examples.rst @@ -0,0 +1,76 @@ +Further Usage Examples +====================== + +The examples directory includes both **standalone python scripts** and **jupyter notebooks** to help you get started. (NB: Currently there are more scripts than notebooks). A selection of topics covered: + +- Manipulating transition matrices +- Generating transition matrices from data (using various estimators) +- Computing and visualizing credit curves corresponding to a set of transition matrices +- Mapping rating states between different rating systems + +Python Scripts +------------------------------------------- + +The scripts are located in examples/python (For testing purposes all examples can be run using the run_examples.py script located in the root directory) + + +Adjust NR (Not Rated) States +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: adjust_nr_states.py + +Example of using transitionMatrix to adjust the (not-rated) NR state. Input data are the Standard +and Poor's historical data (1981 - 2016) for corporate credit rating migrations. Example of handling +`right censoring issues `_ + +Fix a Multi-period Matrix +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: fix_multiperiod_matrix.py + +Example of using transitionMatrix to detect and solve various pathologies that might be affecting transition +matrix data + +Generate a Full Multi-period Set +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: generate_full_multiperiod_set.py + +Example of using the transitionMatrix generator methods to generate a full multi-period matrix set +The input data are processed Standard and Poor's matrices for a selection of cumulative observation points +NB: This example requires a substantial amount of custom code! + +Generate Synthetic Data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: generate_synthetic_data.py + +Example workflows using transitionMatrix to generate synthetic data. +(Edit the dataset selector to switch between examples) + +The first set of examples produce "duration" type data. Estimating transitions +for duration data is done directly with duration type estimators or after +cohorting (binning) the data for cohort (frequency) type estimators. + +The subsequent set of examples produce cohort type data using markov chain simulation + + +Matrix from LendingClub Data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: matrix_lendingclub.py +* Script: matrix_set_lendingclub.py + +Example workflows using transitionMatrix to estimate a matrix from LendingClub data +Input data are in a special cohort format as the published datasets have some limitations + + +Jupyter Notebooks +------------------------------------------- + +* Adjust_NotRated_State.ipynb +* Matrix_Operations.ipynb +* Monthly_from_Annual.ipynb + +Open Risk Academy Scripts +------------------------------------------- diff --git a/docs/source/multi-period_transitions.rst b/docs/source/multi-period_transitions.rst new file mode 100644 index 0000000..35557e3 --- /dev/null +++ b/docs/source/multi-period_transitions.rst @@ -0,0 +1,29 @@ +Multi-Period Transitions +======================== + +transitionMatrix adopts a multi-period data storage paradigm that is more general than a Markov-Chain framework. + +The TransitionMatrixSet object stores a family of TransitionMatrix objects as a time ordered list. Besides + storage this allows a variety of simultaneous operations on the collection of matrices + +There are two basic representations of the a multi-period set of transitions: + +- The first (cumulative form) is the most fundamental. Each successive (k-th) element stores transition rates from an initial time to timepoint k. This could be for example the input of an empirical transition matrix dataset +- In the second (incremental form) successive elements store transition rates from timepoint k-1 to timepoint k. + +TransitionMatrixSet allows converting between the two representations + + +Matrix *Set* Operations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: matrix_set_operations.py + +Contains examples using transitionMatrix to perform various transition matrix **set** operations (Multi-period measurement context) + + +Default Curves +-------------- + +Absorbing states (in credit risk context a borrower default) are particularly important therefore some specific functionality to isolate the corresponding default rate *curve*. (See Also the CreditCurve object) + diff --git a/docs/source/predefined_rating_scales.rst b/docs/source/predefined_rating_scales.rst index 24ba6fa..e8b140f 100644 --- a/docs/source/predefined_rating_scales.rst +++ b/docs/source/predefined_rating_scales.rst @@ -3,9 +3,11 @@ Predefined Rating Scales The transitionMatrix package supports a variety of credit rating scales. The key ones are described here in more detail. - The Rating Agency State Spaces and mappings are obtained from the latest (20 May 2019) Regulatory Reference: -JC 2018 11, FINAL REPORT: REVISED DRAFT ITS ON THE MAPPING OF ECAIS’ CREDIT ASSESSMENTS UNDER CRR + +:: + + JC 2018 11, FINAL REPORT: REVISED DRAFT ITS ON THE MAPPING OF ECAIS’ CREDIT ASSESSMENTS UNDER CRR DISCLAIMER: Consult the original documents from definitive mappings available at the `EBA Website `_ @@ -13,17 +15,17 @@ DISCLAIMER: Consult the original documents from definitive mappings available at Rating Scales currently covered -------------------------------- -The focus of the current selection is long-term issuer ratings scales +The focus of the current selection is on *long-term issuer* ratings scales (others will be added): -* AM Best Europe-Rating Services Ltd. -* ARC Ratings S.A. -* Cerved Rating Agency S.p.A. -* Creditreform Rating AG -* DBRS Ratings Limited -* Fitch Ratings -* Moody’s Investors Service -* Scope Ratings AG -* Standard & Poor’s Ratings Services +- AM Best Europe-Rating Services Ltd. +- ARC Ratings S.A. +- Cerved Rating Agency S.p.A. +- Creditreform Rating AG +- DBRS Ratings Limited +- Fitch Ratings +- Moody’s Investors Service +- Scope Ratings AG +- Standard & Poor’s Ratings Services Data per Scale @@ -32,8 +34,14 @@ Data per Scale Each rating scale is a StateSpace (see :ref:`state_space_doc`) and thus inherits the attributes and methods of that object, namely: -* The entity defining the scale (originator) -* The full name of the scale (as most originators of rating scales offer multiple scales with different meaning an/or use) -* The definition of the scale (as a list of tuples in the form [('0', 'X1'), ... , ('N-1', 'XN)] where X are the symbols used to denote the credit state -* The CQS (credit quality score) mapping of the scale as defined by regulatory authorities (see above reference) +- The entity defining the scale (originator) +- The full name of the scale (as most originators of rating scales offer multiple scales with different meaning an/or use) +- The definition of the scale (as a list of tuples in the form [('0', 'X1'), ... , ('N-1', 'XN)] where X are the symbols used to denote the credit state +- The CQS (credit quality score) mapping of the scale as defined by regulatory authorities (see above reference) + + +Example +"""""""""""""""""""""""""""" +Convert labels between credit rating scales +.. image:: ../../examples/scale_conversions.png \ No newline at end of file diff --git a/docs/source/state_spaces.rst b/docs/source/state_spaces.rst new file mode 100644 index 0000000..5de947b --- /dev/null +++ b/docs/source/state_spaces.rst @@ -0,0 +1,18 @@ +State Spaces +============================== + +A State Space is a fundamental concept in probability theory representing the possible configurations for a modelled system + +The StateSpace object stores a state space structure as a List of tuples. The first two elements of each tuple contain the index (base-0) and label of the state space respectively. + +Additional fields are reserved for further characterisation + + +Example: Map credit ratings between systems +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Script: state_space_operations.py + +Example workflows for converting data from one credit rating system to another using an established mapping +table + diff --git a/docs/source/transitionMatrix.utils.rst b/docs/source/transitionMatrix.utils.rst index 86adede..cb5cf1e 100644 --- a/docs/source/transitionMatrix.utils.rst +++ b/docs/source/transitionMatrix.utils.rst @@ -1,4 +1,4 @@ -transitionMatrix.utils subpackage +utilities subpackage ================================= transitionMatrix.utils contents diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 5c8de10..b232462 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -1,12 +1,16 @@ Usage ============================== -The transitionMatrix packages offers a lot of functionality. Here we break down some of the main workflows for those -getting started +The transitionMatrix packages offers a lot of functionality. Here we break down *some* of the main tools and workflows for those getting started (we'll keep expanding the documentation) .. toctree:: :maxdepth: 4 - examples + basic_operations + state_spaces + multi-period_transitions + credit_curves data_formats - predefined_rating_scales \ No newline at end of file + predefined_rating_scales + visualization + further_examples diff --git a/docs/source/visualization.rst b/docs/source/visualization.rst new file mode 100644 index 0000000..bfabb5a --- /dev/null +++ b/docs/source/visualization.rst @@ -0,0 +1,50 @@ +Visualization +=============== + +transitionMatrix aims to support native visualization of various transition related datasets using matplotlib. For now this functionality is implemented separately as a demo script. + +* Script: examples/python/generate_visuals.py + +Example workflows using transitionMatrix to generate visualizations of migration phenomena + +Example 1 +"""""""""""""""""""""""""""" +Plotting the state space trajectory of a single entity + +.. image:: ../../examples/single_entity.png + +Example 2 +"""""""""""""""""""""""""""" +Plotting the state space trajectory of multiple entities + +.. image:: ../../examples/sampled_histories.png + +Example 3 +"""""""""""""""""""""""""""" +Histogram plot of transition frequencies + +.. image:: ../../examples/estimation.png + +Example 4 +"""""""""""""""""""""""""""" +Colored scatterplot of entity transitions over time + +.. image:: ../../examples/scatterplot.png + +Example 5 +"""""""""""""""""""""""""""" +Colored scatterplot of entity transitions over time (alternative form) + +.. image:: ../../examples/scatterplot2.png + +Example 6 +"""""""""""""""""""""""""""" +Visualize a transition matrix using Hinton-style visual + +.. image:: ../../examples/TransitionMatrix.png + +Example 7 +"""""""""""""""""""""""""""" +Visualize a transition matrix using a sankey visual (a logarithmic adaptation that is useful for qualitative insight) + +.. image:: ../../examples/sankey.png diff --git a/examples/academy_course_PYT26038/step1.py b/examples/academy_course_PYT26038/step1.py new file mode 100644 index 0000000..3875227 --- /dev/null +++ b/examples/academy_course_PYT26038/step1.py @@ -0,0 +1,75 @@ +# encoding: utf-8 + +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) +# +# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included +# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of +# third-party software included in this distribution. You may not use this file except in +# compliance with the License. +# +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +# either express or implied. See the License for the specific language governing permissions and +# limitations under the License. + +# Example script. Open Risk Academy Course Step 1. + +import transitionMatrix as tm +import numpy as np +from scipy.linalg import expm +from transitionMatrix.predefined import JLT +from transitionMatrix import dataset_path + +A = tm.TransitionMatrix(values=[[0.6, 0.2, 0.2], [0.2, 0.6, 0.2], [0.2, 0.2, 0.6]]) +B = tm.TransitionMatrix(dimension=4) +C = tm.TransitionMatrix(values=[1.0, 3.0]) +F = tm.TransitionMatrix(json_file=dataset_path + "JLT.json") +F.to_csv("JLT.csv") + +print(A.validate()) +print(B.validate()) +print(C.validate()) +print(F.validate()) + +C = tm.TransitionMatrix(values=np.resize(C, (2, 2))) +C[0, 1] = 0.0 +C[1, 0] = 0.0 +C[1, 1] = 1.0 + +E = tm.TransitionMatrix(values=[[0.75, 0.25], [0.0, 1.0]]) +print(E.validate()) +# ATTRIBUTES +# Getting matrix info (dimensions, shape) +print(E.ndim) +print(E.shape) +# Obtain the matrix transpose +print(E.T) +# Obtain the matrix inverse +print(E.I) +# Summation methods: +# - along columns +print(E.sum(0)) +# - along rows +print(E.sum(1)) + +print(A * A) +print(A ** 2) +print(A ** 10) + +G = A.generator() +print(A, expm(G)) + +A.characterize() + +# Load and validate the matrix +E = tm.TransitionMatrix(values=JLT) +print(E.validate(accuracy=1e-3)) +print(E.characterize()) +print("-- Lets look at generators") +# Empirical matrices will not satisfy constraints exactly +print(E.generator()) +Error = E - expm(E.generator()) +# Frobenious norm +print(np.linalg.norm(Error)) +# L1 norm +print(np.linalg.norm(Error, 1)) diff --git a/examples/academy_course_PYT26038/step2.py b/examples/academy_course_PYT26038/step2.py new file mode 100644 index 0000000..d4ff779 --- /dev/null +++ b/examples/academy_course_PYT26038/step2.py @@ -0,0 +1,31 @@ +# encoding: utf-8 + +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) +# +# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included +# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of +# third-party software included in this distribution. You may not use this file except in +# compliance with the License. +# +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +# either express or implied. See the License for the specific language governing permissions and +# limitations under the License. + +# Example script. Open Risk Academy Course Step 2. + +import transitionMatrix as tm + +C_Vals = [[[0.75, 0.25], [0.0, 1.0]], [[0.75, 0.25], [0.0, 1.0]]] +C_Set = tm.TransitionMatrixSet(values=C_Vals, temporal_type='Incremental') + +A = tm.TransitionMatrix(values=[[0.6, 0.2, 0.2], [0.2, 0.6, 0.2], [0.2, 0.2, 0.6]]) +A_Set = tm.TransitionMatrixSet(values=A, periods=3, method='Copy', temporal_type='Incremental') +B_Set = tm.TransitionMatrixSet(values=A, periods=3, method='Power', temporal_type='Cumulative') + +print(A_Set.validate()) +print(B_Set.validate()) +print(C_Set.validate()) + +A_Set.cumulate() +A_Set.incremental() diff --git a/examples/academy_course_PYT26038/step3.py b/examples/academy_course_PYT26038/step3.py new file mode 100644 index 0000000..98ec94e --- /dev/null +++ b/examples/academy_course_PYT26038/step3.py @@ -0,0 +1,41 @@ +# encoding: utf-8 + +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) +# +# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included +# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of +# third-party software included in this distribution. You may not use this file except in +# compliance with the License. +# +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +# either express or implied. See the License for the specific language governing permissions and +# limitations under the License. + +# Example script. Open Risk Academy Course Step 3. + +import pandas as pd +import transitionMatrix as tm +from transitionMatrix.estimators import cohort_estimator as es + +dataset_path = "../../datasets/" + +description = [('0', "AAA"), ('1', "AA"), ('2', "A"), ('3', "BBB"), + ('4', "BB"), ('5', "B"), ('6', "CCC"), ('7', "D")] +myState = tm.StateSpace(description) + +myState.describe() +print(myState.get_states()) +print(myState.get_state_labels()) + +data = pd.read_csv(dataset_path + 'synthetic_data4.csv', dtype={'State': str}) + +sorted_data = data.sort_values(['ID', 'Timestep'], ascending=[True, True]) + +print(myState.validate_dataset(dataset=sorted_data)) + +myEstimator = es.CohortEstimator(states=myState, ci={'method': 'goodman', 'alpha': 0.05}) +result = myEstimator.fit(sorted_data) +myMatrixSet = tm.TransitionMatrixSet(values=result, temporal_type='Incremental') + +myEstimator.summary() diff --git a/examples/academy_course_PYT26038/step4.py b/examples/academy_course_PYT26038/step4.py new file mode 100644 index 0000000..6923852 --- /dev/null +++ b/examples/academy_course_PYT26038/step4.py @@ -0,0 +1,39 @@ +# encoding: utf-8 + +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) +# +# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included +# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of +# third-party software included in this distribution. You may not use this file except in +# compliance with the License. +# +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +# either express or implied. See the License for the specific language governing permissions and +# limitations under the License. + +# Example script. Open Risk Academy Course Step 4. + + +import pandas as pd +import transitionMatrix as tm +from transitionMatrix.estimators import cohort_estimator as es + +dataset_path = "../../datasets/" + +data = pd.read_csv(dataset_path + 'synthetic_data2.csv', dtype={'State': str}) +sorted_data = data.sort_values(['ID', 'Time'], ascending=[True, True]) + +myState = tm.StateSpace([('0', "Basic"), ('1', "Default")]) +myState.describe() +print(myState.validate_dataset(dataset=sorted_data)) + +cohort_data, cohort_intervals = tm.utils.bin_timestamps(data, cohorts=5) + +myEstimator = es.CohortEstimator(states=myState, ci={'method': 'goodman', 'alpha': 0.05}) +labels = {'Timestamp': 'Cohort', 'State': 'State', 'ID': 'ID'} +result = myEstimator.fit(cohort_data, labels=labels) + +myMatrixSet = tm.TransitionMatrixSet(values=result, temporal_type='Incremental') +print(myMatrixSet.temporal_type) +myMatrixSet.print_matrix() diff --git a/examples/academy_course_PYT26038/step5.py b/examples/academy_course_PYT26038/step5.py new file mode 100644 index 0000000..ec1de27 --- /dev/null +++ b/examples/academy_course_PYT26038/step5.py @@ -0,0 +1,50 @@ +# encoding: utf-8 + +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) +# +# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included +# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of +# third-party software included in this distribution. You may not use this file except in +# compliance with the License. +# +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +# either express or implied. See the License for the specific language governing permissions and +# limitations under the License. + +# Example script. Open Risk Academy Course Step 5. + + +import pandas as pd +import transitionMatrix as tm +from transitionMatrix.estimators import simple_estimator as es +dataset_path = "../../datasets/" +data = pd.read_csv(dataset_path + 'LoanStats3a_Step2.csv') +print(data.describe()) + +description = [('A', "Grade A"), ('B', "Grade B"), ('C', "Grade C"), + ('D', "Grade D"), ('E', "Grade E"), ('F', "Grade F"), + ('G', "Grade G"), ('H', "Delinquent"), ('I', "Charged Off"), + ('J', "Repaid")] +myState = tm.StateSpace(description) + +labels = {'State': 'State_IN'} +print(myState.validate_dataset(dataset=data, labels=labels)) +labels = {'State': 'State_OUT'} +print(myState.validate_dataset(dataset=data, labels=labels)) + +myEstimator = es.SimpleEstimator(states=myState, ci={'method': 'goodman', 'alpha': 0.05}) +result = myEstimator.fit(data) +myEstimator.summary() + +myMatrixSet = tm.TransitionMatrixSet(values=result, temporal_type='Incremental') +print(myMatrixSet.temporal_type) +myMatrixSet.print_matrix() + +myMatrix = myMatrixSet.entries[0] +myMatrix[7, 9] = 1.0 +myMatrix[8, 9] = 1.0 +myMatrix[9, 9] = 1.0 +print(myMatrix.validate()) +print(myMatrix.characterize()) +myMatrix.print() diff --git a/examples/notebooks/Adjust_NotRated_State.ipynb b/examples/notebooks/Adjust_NotRated_State.ipynb index 6201680..c18f592 100644 --- a/examples/notebooks/Adjust_NotRated_State.ipynb +++ b/examples/notebooks/Adjust_NotRated_State.ipynb @@ -31,7 +31,7 @@ "source": [ "# encoding: utf-8\n", "\n", - "# (c) 2017-2019 Open Risk, all rights reserved\n", + "# (c) 2017-2020 Open Risk, all rights reserved\n", "#\n", "# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included\n", "# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of\n", diff --git a/examples/notebooks/Matrix_Operations.ipynb b/examples/notebooks/Matrix_Operations.ipynb index 3d0d74f..3062216 100644 --- a/examples/notebooks/Matrix_Operations.ipynb +++ b/examples/notebooks/Matrix_Operations.ipynb @@ -130,7 +130,7 @@ "source": [ "# encoding: utf-8\n", "\n", - "# (c) 2017-2019 Open Risk, all rights reserved\n", + "# (c) 2017-2020 Open Risk, all rights reserved\n", "#\n", "# TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included\n", "# in the source distribution of TransitionMatrix. This is notwithstanding any licenses of\n", diff --git a/examples/python/adjust_nr_state.py b/examples/python/adjust_nr_state.py index beadd4d..0b41205 100644 --- a/examples/python/adjust_nr_state.py +++ b/examples/python/adjust_nr_state.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk (https://www.openriskmanagement.com) +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/credit_curves.py b/examples/python/credit_curves.py index f933aad..c57d217 100644 --- a/examples/python/credit_curves.py +++ b/examples/python/credit_curves.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/empirical_transition_matrix.py b/examples/python/empirical_transition_matrix.py index f65c372..ddff928 100644 --- a/examples/python/empirical_transition_matrix.py +++ b/examples/python/empirical_transition_matrix.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/fix_multiperiod_matrix.py b/examples/python/fix_multiperiod_matrix.py index a25de12..8126d22 100644 --- a/examples/python/fix_multiperiod_matrix.py +++ b/examples/python/fix_multiperiod_matrix.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/generate_full_multiperiod_set.py b/examples/python/generate_full_multiperiod_set.py index 2421a59..443c40e 100644 --- a/examples/python/generate_full_multiperiod_set.py +++ b/examples/python/generate_full_multiperiod_set.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/generate_synthetic_data.py b/examples/python/generate_synthetic_data.py index 7e782c5..a7deaf6 100644 --- a/examples/python/generate_synthetic_data.py +++ b/examples/python/generate_synthetic_data.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/generate_visuals.py b/examples/python/generate_visuals.py index 7be7f6e..7bdacbf 100644 --- a/examples/python/generate_visuals.py +++ b/examples/python/generate_visuals.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of @@ -15,6 +15,7 @@ import matplotlib as mpl import matplotlib.patches as patches import matplotlib.pyplot as plt +from matplotlib.sankey import Sankey import numpy as np import pandas as pd @@ -22,13 +23,14 @@ from transitionMatrix import source_path from transitionMatrix.estimators import cohort_estimator as es + """ Example workflows using transitionMatrix to generate visualizations of migration phenomena """ dataset_path = source_path + "datasets/" -example = 6 +example = 7 # TODO visualization when states are not sampled (infrequent) @@ -81,7 +83,7 @@ entity_data = data[data['ID'] == identity] entity_data = entity_data[['Timestep', 'State']] sorted_data = entity_data.sort_values(['Timestep'], ascending=[True]) - raw_data = sorted_data.as_matrix() + raw_data = sorted_data.to_numpy() viz_data.append(raw_data) plt.close('all') @@ -169,7 +171,7 @@ for row in data.itertuples(): x.append(row[2]) y.append(row[1]) - colors.append(row[3]/len(unique_states)) + colors.append(row[3] / len(unique_states)) my_colors = mymap(colors) fig = plt.figure() @@ -201,7 +203,7 @@ for row in data.itertuples(): x.append(row[2]) y.append(row[1]) - colors.append(1.1-row[3]/7) + colors.append(1.1 - row[3] / 7) my_colors = mymap(colors) print(colors) @@ -264,7 +266,45 @@ cbax = fig.add_axes([0.85, 0.12, 0.05, 0.78]) cb = mpl.colorbar.ColorbarBase(cbax, cmap=mymap, norm=normalize, orientation='vertical') - cb.set_label("Transition Prabability", rotation=270, labelpad=15) + cb.set_label("Transition Probability", rotation=270, labelpad=15) plt.show(block=True) - plt.interactive(False) \ No newline at end of file + plt.interactive(False) + +elif example == 7: + + n = 4 + filename = dataset_path + 'JLT.json' + A = tm.TransitionMatrix(json_file=filename) + label = tm.Generic_SS.get_state_labels() + source = [n+1] + target = list(range(8)) + input_vals = A.row(n) + w_min = np.min(input_vals) + w = np.log(input_vals) - np.log(w_min) + 0.5 + w_T = np.sum(w) + values = [w_T] + for i in range(len(w)): + values.append(- w[i]) + + labels = ['BB'] + for i in range(len(label)): + labels.append(label[i]) + + Sankey(flows=values, + labels=labels, + offset=3, + margin=8, + gap=4, + shoulder=1, + head_angle=130, + unit=None, + trunklength=30.0, + facecolor='lightgreen', + edgecolor='lightgreen', + alpha=0.8, + orientations=[0, 1, 1, 1, 1, 0, -1, -1, -1]).finish() + plt.title("Logarithmic Sankey Diagram of Credit Migration Rates") + plt.savefig("sankey.png") + plt.show() + diff --git a/examples/python/matrix_from_cohort_data.py b/examples/python/matrix_from_cohort_data.py index 9860728..60bc738 100644 --- a/examples/python/matrix_from_cohort_data.py +++ b/examples/python/matrix_from_cohort_data.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/matrix_from_duration_data.py b/examples/python/matrix_from_duration_data.py index 4812a2a..1c2e0ed 100644 --- a/examples/python/matrix_from_duration_data.py +++ b/examples/python/matrix_from_duration_data.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/matrix_lendingclub.py b/examples/python/matrix_lendingclub.py index 1bf0d32..9e34b1f 100644 --- a/examples/python/matrix_lendingclub.py +++ b/examples/python/matrix_lendingclub.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/matrix_operations.py b/examples/python/matrix_operations.py index a757bc4..855d0c2 100644 --- a/examples/python/matrix_operations.py +++ b/examples/python/matrix_operations.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/matrix_set_lendingclub.py b/examples/python/matrix_set_lendingclub.py index d51de63..82e11bb 100644 --- a/examples/python/matrix_set_lendingclub.py +++ b/examples/python/matrix_set_lendingclub.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/matrix_set_operations.py b/examples/python/matrix_set_operations.py index dc1fbe6..d2e7a7b 100644 --- a/examples/python/matrix_set_operations.py +++ b/examples/python/matrix_set_operations.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/python/state_space_operations.py b/examples/python/state_space_operations.py index 678ec6d..48818fa 100644 --- a/examples/python/state_space_operations.py +++ b/examples/python/state_space_operations.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/examples/sankey.png b/examples/sankey.png new file mode 100644 index 0000000000000000000000000000000000000000..d6340c2a43ac24b358d0fb80657e1116730da497 GIT binary patch literal 24838 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 GBmN0BL|113 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index 0342fd4..d50c7ac 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,35 @@ -statsmodels>=0.9.0 -numpy>=1.16.2 -pandas>=0.24.2 -scipy>=1.2.1 -matplotlib>=3.0.3 -Sphinx>=1.8.4 -sphinx-rtd-theme>=0.4.3 - +alabaster==0.7.12 +Babel==2.8.0 +certifi==2020.6.20 +chardet==3.0.4 +cycler==0.10.0 +docutils==0.16 +idna==2.10 +imagesize==1.2.0 +Jinja2==2.11.2 +kiwisolver==1.2.0 +MarkupSafe==1.1.1 +matplotlib==3.3.2 +numpy==1.19.2 +packaging==20.4 +pandas==1.1.2 +patsy==0.5.1 +Pillow==7.2.0 +Pygments==2.7.1 +pyparsing==2.4.7 +python-dateutil==2.8.1 +pytz==2020.1 +requests==2.24.0 +scipy==1.5.2 +six==1.15.0 +snowballstemmer==2.0.0 +Sphinx==3.2.1 +sphinx-rtd-theme==0.5.0 +sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==1.0.3 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.4 +statsmodels==0.12.0 +urllib3==1.25.10 diff --git a/run_examples.py b/run_examples.py index 4abf628..4e3875b 100644 --- a/run_examples.py +++ b/run_examples.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/setup.py b/setup.py index e9ebfe8..c2d8c26 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk (https://www.openriskmanagement.com) +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of @@ -17,7 +17,7 @@ from setuptools import setup -__version__ = '0.4.6' +__version__ = '0.4.7' ver = __version__ diff --git a/test.py b/test.py index 8164cb9..59083e5 100644 --- a/test.py +++ b/test.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/tests/test_datasets.py b/tests/test_datasets.py index fb0b171..32bfa20 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/tests/test_estimators.py b/tests/test_estimators.py index 6aa93e3..8856f24 100644 --- a/tests/test_estimators.py +++ b/tests/test_estimators.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/tests/test_model.py b/tests/test_model.py index 7b131c5..ec23f4a 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/tests/test_utils.py b/tests/test_utils.py index 19b4d78..dea9798 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/__init__.py b/transitionMatrix/__init__.py index 96c0e36..f612fa2 100644 --- a/transitionMatrix/__init__.py +++ b/transitionMatrix/__init__.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk (https://www.openriskmanagement.com) +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of @@ -24,7 +24,7 @@ from .estimators import * from .utils import * -__version__ = '0.4.6' +__version__ = '0.4.7' package_name = 'transitionMatrix' module_path = os.path.dirname(__file__) @@ -35,6 +35,14 @@ # PREDEFINED STATE SPACES # +# Generic state space for testing +originator = 'Open Risk' +full_name = 'Generic state space for testing' +definition = [('0', "AAA"), ('1', "AA"), ('2', "A"), ('3', "BBB"), + ('4', "BB"), ('5', "B"), ('6', "CCC"), + ('7', "D")] + +Generic_SS = StateSpace(definition=definition, originator=originator, full_name=full_name, cqs_mapping=None) # AM Best Europe-Rating Services Ltd. originator = 'AM Best Europe-Rating Services Ltd.' diff --git a/transitionMatrix/estimators/__init__.py b/transitionMatrix/estimators/__init__.py index 4d8e2f3..65a89c6 100644 --- a/transitionMatrix/estimators/__init__.py +++ b/transitionMatrix/estimators/__init__.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/estimators/aalen_johansen_estimator.py b/transitionMatrix/estimators/aalen_johansen_estimator.py index 25c4367..0648046 100644 --- a/transitionMatrix/estimators/aalen_johansen_estimator.py +++ b/transitionMatrix/estimators/aalen_johansen_estimator.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/estimators/cohort_estimator.py b/transitionMatrix/estimators/cohort_estimator.py index 6f2bd74..2e6f2df 100644 --- a/transitionMatrix/estimators/cohort_estimator.py +++ b/transitionMatrix/estimators/cohort_estimator.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/estimators/kaplan_meier_estimator.py b/transitionMatrix/estimators/kaplan_meier_estimator.py index 086672a..6ba1c4f 100644 --- a/transitionMatrix/estimators/kaplan_meier_estimator.py +++ b/transitionMatrix/estimators/kaplan_meier_estimator.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/estimators/simple_estimator.py b/transitionMatrix/estimators/simple_estimator.py index 1b3813c..4b90ec1 100644 --- a/transitionMatrix/estimators/simple_estimator.py +++ b/transitionMatrix/estimators/simple_estimator.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/model.py b/transitionMatrix/model.py index c80ed14..3fdb4df 100644 --- a/transitionMatrix/model.py +++ b/transitionMatrix/model.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk (https://www.openriskmanagement.com) +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of @@ -161,9 +161,12 @@ def validate(self, accuracy=1e-3): return validation_messages def hazard_curve(self): - """ + """ Compute hazard rates + .. Todo:: Compute hazard rates - :return: + + :return: TODO + """ pass @@ -173,6 +176,7 @@ def characterize(self): * slope of hazard rate .. Todo:: Further characterization + """ pass @@ -253,6 +257,18 @@ def __new__(cls, values=None, dimension=2, json_file=None, csv_file=None): obj.dimension = obj.shape[0] return obj + def row(self, i): + """ + Return row values + + :param i: row index + """ + row = [] + matrix_size = self.shape[0] + for j in range(matrix_size): + row.append(self[i, j]) + return row + def to_json(self, file): """ Write transition matrix to file in json format @@ -475,14 +491,12 @@ def remove(self, state, method): class TransitionMatrixSet(object): - """ The _`TransitionMatrixSet` object stores a family of TransitionMatrix_ objects as a time ordered list. Besides - storage it allows a variety of simultaneous operations on the collection of matrices + """ The _`TransitionMatrixSet` object stores a family of TransitionMatrix_ objects as a time ordered list. Besides storage it allows a variety of simultaneous operations on the collection of matrices """ - def __init__(self, dimension=2, values=None, periods=1, temporal_type=None, method=None, json_file=None, - csv_file=None): + def __init__(self, dimension=2, values=None, periods=1, temporal_type=None, method=None, json_file=None, csv_file=None): """ Create a new matrix set. Different options for initialization are: * providing values as a list of list @@ -582,7 +596,7 @@ def __init__(self, dimension=2, values=None, periods=1, temporal_type=None, meth q = pd.read_csv(f, header=None, usecols=range(to_states)) for k in range(periods): raw = q.iloc[k * from_states:(k + 1) * from_states] - a = tm.TransitionMatrix(raw.as_matrix()) + a = tm.TransitionMatrix(raw.to_numpy()) val_set.append(a) self.entries = val_set self.temporal_type = temporal_type diff --git a/transitionMatrix/predefined.py b/transitionMatrix/predefined.py index 02523d4..f14618d 100644 --- a/transitionMatrix/predefined.py +++ b/transitionMatrix/predefined.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/utils/__init__.py b/transitionMatrix/utils/__init__.py index 672ee8d..a12dd40 100644 --- a/transitionMatrix/utils/__init__.py +++ b/transitionMatrix/utils/__init__.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/utils/converters.py b/transitionMatrix/utils/converters.py index 62d5a70..3a512a7 100644 --- a/transitionMatrix/utils/converters.py +++ b/transitionMatrix/utils/converters.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk (https://www.openriskmanagement.com) +# (c) 2017-2020 Open Risk (https://www.openriskmanagement.com) # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/utils/dataset_generators.py b/transitionMatrix/utils/dataset_generators.py index 9c6b4e6..955d594 100644 --- a/transitionMatrix/utils/dataset_generators.py +++ b/transitionMatrix/utils/dataset_generators.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of diff --git a/transitionMatrix/utils/preprocessing.py b/transitionMatrix/utils/preprocessing.py index 186bf40..68fed0a 100644 --- a/transitionMatrix/utils/preprocessing.py +++ b/transitionMatrix/utils/preprocessing.py @@ -1,6 +1,6 @@ # encoding: utf-8 -# (c) 2017-2019 Open Risk, all rights reserved +# (c) 2017-2020 Open Risk, all rights reserved # # TransitionMatrix is licensed under the Apache 2.0 license a copy of which is included # in the source distribution of TransitionMatrix. This is notwithstanding any licenses of