dfm-python 0.2.5__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. {dfm_python-0.2.5 → dfm_python-0.2.7}/PKG-INFO +21 -4
  2. {dfm_python-0.2.5 → dfm_python-0.2.7}/README.md +20 -3
  3. dfm_python-0.2.7/full_tutorial_example.ipynb +1669 -0
  4. {dfm_python-0.2.5 → dfm_python-0.2.7}/pyproject.toml +1 -1
  5. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/__init__.py +1 -1
  6. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/em.py +139 -69
  7. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/numeric.py +10 -7
  8. dfm_python-0.2.7/src/test/test_stability.py +222 -0
  9. {dfm_python-0.2.5 → dfm_python-0.2.7}/.gitignore +0 -0
  10. {dfm_python-0.2.5 → dfm_python-0.2.7}/.python-version +0 -0
  11. {dfm_python-0.2.5 → dfm_python-0.2.7}/LICENSE +0 -0
  12. {dfm_python-0.2.5 → dfm_python-0.2.7}/MANIFEST.in +0 -0
  13. {dfm_python-0.2.5 → dfm_python-0.2.7}/config/blocks/default.yaml +0 -0
  14. {dfm_python-0.2.5 → dfm_python-0.2.7}/config/default.yaml +0 -0
  15. {dfm_python-0.2.5 → dfm_python-0.2.7}/config/series/default.yaml +0 -0
  16. {dfm_python-0.2.5 → dfm_python-0.2.7}/data/sample_data.csv +0 -0
  17. {dfm_python-0.2.5 → dfm_python-0.2.7}/data/sample_spec.csv +0 -0
  18. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/api.py +0 -0
  19. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/config.py +0 -0
  20. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/config_sources.py +0 -0
  21. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/__init__.py +0 -0
  22. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/diagnostics.py +0 -0
  23. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/core/helpers.py +0 -0
  24. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/data.py +0 -0
  25. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/dfm.py +0 -0
  26. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/kalman.py +0 -0
  27. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/news.py +0 -0
  28. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/dfm_python/utils.py +0 -0
  29. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/__init__.py +0 -0
  30. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_api.py +0 -0
  31. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_dfm.py +0 -0
  32. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_factor.py +0 -0
  33. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_kalman.py +0 -0
  34. {dfm_python-0.2.5 → dfm_python-0.2.7}/src/test/test_numeric.py +0 -0
  35. {dfm_python-0.2.5 → dfm_python-0.2.7}/tutorial/basic_tutorial.py +0 -0
  36. {dfm_python-0.2.5 → dfm_python-0.2.7}/tutorial/hydra_tutorial.py +0 -0
  37. {dfm_python-0.2.5 → dfm_python-0.2.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dfm-python
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: Dynamic Factor Model (DFM) estimation and nowcasting in Python
5
5
  Project-URL: Homepage, https://github.com/yourusername/dfm-python
6
6
  Project-URL: Documentation, https://github.com/yourusername/dfm-python#readme
@@ -709,12 +709,29 @@ Demonstrates:
709
709
 
710
710
  ## Project Status
711
711
 
712
- **Version**: 0.2.5
712
+ **Version**: 0.2.7
713
713
  **Status**: Stable and production-ready
714
714
  **Python**: 3.10+
715
715
  **PyPI**: https://pypi.org/project/dfm-python/
716
716
 
717
- ### Recent Improvements (v0.2.5)
717
+ ### Recent Improvements (v0.2.7)
718
+
719
+ - ✅ **Fixed C normalization issue**: C normalization now only applies when C norm is in reasonable range (0.1 ~ 10)
720
+ - Prevents Q from becoming too small when C norm is very small
721
+ - Prevents factor values from becoming extreme
722
+ - ✅ **Improved stability**: Conditional C normalization prevents pathological factor paths
723
+ - ✅ **Better diagnostics**: Added variance guard binding checks in tutorial
724
+
725
+ ### Previous Improvements (v0.2.6)
726
+
727
+ - ✅ **Q matrix cap**: Factor innovation variances bounded above by 1.0 to prevent explosion
728
+ - ✅ **R matrix cap**: Observation error variances bounded above by 10.0 for standardized data
729
+ - ✅ **Improved C normalization**: C norm clipping prevents Q explosion during normalization
730
+ - ✅ **Enhanced initial values**: PCA loadings clipped to prevent extreme initial values
731
+ - ✅ **Bug fix**: Fixed `np.linalg.lu` error by using `np.linalg.slogdet` for determinant computation
732
+ - ✅ **Better stability**: Q and R caps ensure model convergence even with challenging data
733
+
734
+ ### Previous Improvements (v0.2.5)
718
735
 
719
736
  - ✅ **Q matrix floor**: Factor innovation variances bounded below by 0.01 to prevent scale issues
720
737
  - ✅ **C matrix normalization**: Clock-frequency factor loadings normalized (||C[:,j]|| = 1) for scale stability
@@ -749,7 +766,7 @@ If you use `dfm-python` in your research, please cite:
749
766
  author = {DFM Python Contributors},
750
767
  year = {2025},
751
768
  url = {https://pypi.org/project/dfm-python/},
752
- version = {0.2.5}
769
+ version = {0.2.7}
753
770
  }
754
771
  ```
755
772
 
@@ -663,12 +663,29 @@ Demonstrates:
663
663
 
664
664
  ## Project Status
665
665
 
666
- **Version**: 0.2.5
666
+ **Version**: 0.2.7
667
667
  **Status**: Stable and production-ready
668
668
  **Python**: 3.10+
669
669
  **PyPI**: https://pypi.org/project/dfm-python/
670
670
 
671
- ### Recent Improvements (v0.2.5)
671
+ ### Recent Improvements (v0.2.7)
672
+
673
+ - ✅ **Fixed C normalization issue**: C normalization now only applies when C norm is in reasonable range (0.1 ~ 10)
674
+ - Prevents Q from becoming too small when C norm is very small
675
+ - Prevents factor values from becoming extreme
676
+ - ✅ **Improved stability**: Conditional C normalization prevents pathological factor paths
677
+ - ✅ **Better diagnostics**: Added variance guard binding checks in tutorial
678
+
679
+ ### Previous Improvements (v0.2.6)
680
+
681
+ - ✅ **Q matrix cap**: Factor innovation variances bounded above by 1.0 to prevent explosion
682
+ - ✅ **R matrix cap**: Observation error variances bounded above by 10.0 for standardized data
683
+ - ✅ **Improved C normalization**: C norm clipping prevents Q explosion during normalization
684
+ - ✅ **Enhanced initial values**: PCA loadings clipped to prevent extreme initial values
685
+ - ✅ **Bug fix**: Fixed `np.linalg.lu` error by using `np.linalg.slogdet` for determinant computation
686
+ - ✅ **Better stability**: Q and R caps ensure model convergence even with challenging data
687
+
688
+ ### Previous Improvements (v0.2.5)
672
689
 
673
690
  - ✅ **Q matrix floor**: Factor innovation variances bounded below by 0.01 to prevent scale issues
674
691
  - ✅ **C matrix normalization**: Clock-frequency factor loadings normalized (||C[:,j]|| = 1) for scale stability
@@ -703,7 +720,7 @@ If you use `dfm-python` in your research, please cite:
703
720
  author = {DFM Python Contributors},
704
721
  year = {2025},
705
722
  url = {https://pypi.org/project/dfm-python/},
706
- version = {0.2.5}
723
+ version = {0.2.7}
707
724
  }
708
725
  ```
709
726