dfm-python 0.5.60__tar.gz → 0.6.0__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.
- {dfm_python-0.5.60 → dfm_python-0.6.0}/PKG-INFO +1 -1
- dfm_python-0.6.0/config/dfm_exchange.yaml +18 -0
- dfm_python-0.6.0/config/dfm_finance.yaml +104 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/config/dfm_macro.yaml +34 -33
- dfm_python-0.6.0/data/macro.csv +2539 -0
- dfm_python-0.6.0/models/dfm_exchange.pkl +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/pyproject.toml +1 -1
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/adapter.py +3 -9
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/constants.py +35 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/schema/model.py +37 -77
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/dataset/dfm_dataset.py +88 -1
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/encoder/pca.py +3 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/functional/em.py +647 -59
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/dfm/dfm.py +104 -8
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/dfm/initialization.py +290 -62
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/dfm/mixed_freq.py +128 -3
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/dfm/tent.py +95 -17
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/numeric/builder.py +5 -2
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/numeric/estimator.py +252 -63
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/numeric/stability.py +234 -6
- dfm_python-0.6.0/src/dfm_python/ssm/kalman.py +729 -0
- dfm_python-0.6.0/src/test/functional/test_em.py +277 -0
- dfm_python-0.6.0/src/test/functional/test_em_correctness.py +506 -0
- dfm_python-0.6.0/src/test/functional/test_em_properties.py +151 -0
- dfm_python-0.6.0/src/test/functional/test_invariance.py +348 -0
- dfm_python-0.6.0/src/test/functional/test_macro_overflow.py +240 -0
- dfm_python-0.6.0/src/test/models/test_dfm.py +253 -0
- dfm_python-0.6.0/src/test/numeric/test_cov_rowvar_regression.py +22 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/numeric/test_estimator.py +12 -12
- dfm_python-0.6.0/src/test/numeric/test_initialization.py +413 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/numeric/test_stability.py +2 -7
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/ssm/test_kalman.py +157 -0
- dfm_python-0.6.0/src/test/ssm/test_kalman_correctness.py +174 -0
- dfm_python-0.6.0/tutorial/tutorial_exchange_dfm.py +57 -0
- dfm_python-0.6.0/tutorial/tutorial_finance_dfm.py +84 -0
- dfm_python-0.6.0/tutorial/tutorial_macro_dfm.py +56 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/uv.lock +1 -1
- dfm_python-0.5.60/config/dfm_exchange.yaml +0 -32
- dfm_python-0.5.60/config/dfm_finance.yaml +0 -100
- dfm_python-0.5.60/data/macro.csv +0 -2539
- dfm_python-0.5.60/src/dfm_python/ssm/kalman.py +0 -386
- dfm_python-0.5.60/src/test/functional/test_em.py +0 -136
- dfm_python-0.5.60/src/test/models/test_dfm.py +0 -92
- dfm_python-0.5.60/tutorial/tutorial_exchange_dfm.py +0 -68
- dfm_python-0.5.60/tutorial/tutorial_finance_dfm.py +0 -114
- dfm_python-0.5.60/tutorial/tutorial_macro_dfm.py +0 -119
- {dfm_python-0.5.60 → dfm_python-0.6.0}/.cursor/agents/test-runner.md +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/.git +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/.gitignore +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/.python-version +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/=0.11.0 +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/MANIFEST.in +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/config/ddfm_exchange.yaml +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/config/ddfm_finance.yaml +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/config/ddfm_macro.yaml +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/data/exchange_rate.csv +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/data/finance.csv +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/schema/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/schema/block.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/schema/params.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/schema/results.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/config/types.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/dataset/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/dataset/ddfm_dataset.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/dataset/time.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/decoder/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/decoder/base.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/decoder/linear.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/decoder/mlp.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/encoder/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/encoder/base.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/encoder/simple_autoencoder.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/functional/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/logger/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/logger/dfm_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/logger/inference_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/logger/logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/logger/train_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/base.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/ddfm/ddfm.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/models/dfm/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/numeric/statistic.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/numeric/validator.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/ssm/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/checkpoint.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/errors.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/helper.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/loss.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/metric.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/misc.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/dfm_python/utils/validation.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/schema/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/schema/test_block.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/schema/test_model.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/schema/test_results.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/test_adapter.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/test_constants.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/test_tent_weights_config.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/config/test_types.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/conftest.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/dataset/test_ddfm_dataset.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/dataset/test_dfm_dataset.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/decoder/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/decoder/test_linear.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/decoder/test_mlp.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/encoder/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/encoder/test_base.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/encoder/test_pca.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/encoder/test_simple_autoencoder.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/functional/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/logger/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/logger/test_inference_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/logger/test_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/logger/test_train_logger.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/models/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/models/test_ddfm.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/numeric/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/numeric/test_builder.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/numeric/test_validator.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/ssm/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/utils/__init__.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/utils/test_errors.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/utils/test_helper.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/utils/test_metric.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/src/test/utils/test_misc.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/tutorial/tutorial_exchange_ddfm.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/tutorial/tutorial_finance_ddfm.py +0 -0
- {dfm_python-0.5.60 → dfm_python-0.6.0}/tutorial/tutorial_macro_ddfm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dfm-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Dynamic Factor Model (DFM) estimation and forecasting 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
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# DFM Configuration for Exchange Rate Datasets
|
|
2
|
+
# Clock: Daily (d) - base frequency for latent factors
|
|
3
|
+
# Data: Daily exchange rate data (all series at same frequency)
|
|
4
|
+
|
|
5
|
+
# EM Algorithm Parameters
|
|
6
|
+
# NOTE: Exchange tutorial is long daily data (T~7.6k). Full EM can take hours.
|
|
7
|
+
# Keep tutorial runs short by capping iterations and loosening convergence.
|
|
8
|
+
threshold: 1.0e-04 # EM convergence threshold (tutorial-friendly)
|
|
9
|
+
max_iter: 50 # Maximum EM iterations (tutorial-friendly)
|
|
10
|
+
|
|
11
|
+
# Data Handling
|
|
12
|
+
clock: d # Daily clock frequency (base frequency for latent factors)
|
|
13
|
+
scaler: standard # Scaler for all series: 'standard', 'robust', 'minmax', 'maxabs', 'quantile', or null
|
|
14
|
+
# Note: scaler is handled internally by the model, not set on config object
|
|
15
|
+
# Note: nan_method and nan_k are internal constants (not user-configurable)
|
|
16
|
+
num_factors: 2 # Number of factors
|
|
17
|
+
|
|
18
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# DFM Configuration for Financial Datasets
|
|
2
|
+
# Based on coded financial indicators (D, E, I, M, P, S, V series)
|
|
3
|
+
# Data: 97 series (D1-D9, E1-E20, I1-I9, M1-M18, P1-P13, S1-S12, V1-V13, plus targets)
|
|
4
|
+
# Target: market_forward_excess_returns
|
|
5
|
+
# Excluded: risk_free_rate, forward_returns
|
|
6
|
+
# Reduced series for testing purposes
|
|
7
|
+
|
|
8
|
+
# EM Algorithm Parameters
|
|
9
|
+
threshold: 1.0e-05 # EM convergence threshold
|
|
10
|
+
max_iter: 50 # Maximum EM iterations
|
|
11
|
+
|
|
12
|
+
# Data Handling
|
|
13
|
+
clock: d # Daily clock frequency (finance.csv uses daily index via date_id)
|
|
14
|
+
scaler: standard # Scaler for all series: 'standard', 'robust', 'minmax', 'maxabs', 'quantile', or null
|
|
15
|
+
# Note: scaler is handled internally by the model, not set on config object
|
|
16
|
+
# Note: nan_method and nan_k are internal constants (not user-configurable)
|
|
17
|
+
|
|
18
|
+
# Block Structure for Financial Data (testing configuration)
|
|
19
|
+
# 4 blocks, 2 factors per block (reduced from 3 for faster testing)
|
|
20
|
+
# This still verifies all block mechanisms while reducing state dimension
|
|
21
|
+
blocks:
|
|
22
|
+
Block_ALL:
|
|
23
|
+
num_factors: 2 # Reduced from 3 for faster testing
|
|
24
|
+
series:
|
|
25
|
+
# Contains all series from Block_EI, Block_MD, and Block_PSV
|
|
26
|
+
# From Block_EI:
|
|
27
|
+
- E1
|
|
28
|
+
- E5
|
|
29
|
+
- E10
|
|
30
|
+
- E15
|
|
31
|
+
- E20
|
|
32
|
+
- I1
|
|
33
|
+
- I5
|
|
34
|
+
- I9
|
|
35
|
+
# From Block_MD:
|
|
36
|
+
- M1
|
|
37
|
+
- M5
|
|
38
|
+
- M10
|
|
39
|
+
- M15
|
|
40
|
+
- M18
|
|
41
|
+
- D1
|
|
42
|
+
- D5
|
|
43
|
+
- D9
|
|
44
|
+
# From Block_PSV:
|
|
45
|
+
- P1
|
|
46
|
+
- P5
|
|
47
|
+
- P10
|
|
48
|
+
- P13
|
|
49
|
+
- S1
|
|
50
|
+
- S5
|
|
51
|
+
- S10
|
|
52
|
+
- V1
|
|
53
|
+
- V5
|
|
54
|
+
- V10
|
|
55
|
+
- market_forward_excess_returns
|
|
56
|
+
|
|
57
|
+
Block_EI:
|
|
58
|
+
num_factors: 2 # Reduced from 3 for faster testing
|
|
59
|
+
series:
|
|
60
|
+
# E series: ~6 series
|
|
61
|
+
- E1
|
|
62
|
+
- E5
|
|
63
|
+
- E10
|
|
64
|
+
- E15
|
|
65
|
+
- E20
|
|
66
|
+
# I series: ~4 series
|
|
67
|
+
- I1
|
|
68
|
+
- I5
|
|
69
|
+
- I9
|
|
70
|
+
|
|
71
|
+
Block_MD:
|
|
72
|
+
num_factors: 2 # Reduced from 3 for faster testing
|
|
73
|
+
series:
|
|
74
|
+
# M series: ~6 series
|
|
75
|
+
- M1
|
|
76
|
+
- M5
|
|
77
|
+
- M10
|
|
78
|
+
- M15
|
|
79
|
+
- M18
|
|
80
|
+
# D series: ~4 series
|
|
81
|
+
- D1
|
|
82
|
+
- D5
|
|
83
|
+
- D9
|
|
84
|
+
|
|
85
|
+
Block_PSV:
|
|
86
|
+
num_factors: 2 # Reduced from 3 for faster testing
|
|
87
|
+
series:
|
|
88
|
+
# P series: ~4 series
|
|
89
|
+
- P1
|
|
90
|
+
- P5
|
|
91
|
+
- P10
|
|
92
|
+
- P13
|
|
93
|
+
# S series: ~3 series
|
|
94
|
+
- S1
|
|
95
|
+
- S5
|
|
96
|
+
- S10
|
|
97
|
+
# V series: ~3 series
|
|
98
|
+
- V1
|
|
99
|
+
- V5
|
|
100
|
+
- V10
|
|
101
|
+
- market_forward_excess_returns
|
|
102
|
+
|
|
103
|
+
# Frequency mapping: Not required for single-frequency cases
|
|
104
|
+
# The code will automatically create frequency dict from data columns using clock frequency (d)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# EM Algorithm Parameters
|
|
8
8
|
threshold: 1.0e-05 # EM convergence threshold
|
|
9
|
-
max_iter:
|
|
9
|
+
max_iter: 50 # Maximum EM iterations
|
|
10
10
|
|
|
11
11
|
# Numerical Stability Parameters
|
|
12
12
|
clip_ar_coefficients: true
|
|
@@ -27,52 +27,53 @@ scaler: standard # Scaler for all series: 'standard', 'robust', 'minmax', 'maxa
|
|
|
27
27
|
# Note: scaler is handled internally by the model, not set on config object
|
|
28
28
|
# Note: nan_method and nan_k are internal constants (not user-configurable)
|
|
29
29
|
|
|
30
|
+
# Tent weights for mixed-frequency aggregation
|
|
31
|
+
# 3-period tent kernel for monthly->weekly aggregation
|
|
32
|
+
tent_weights:
|
|
33
|
+
m:w: [1, 2, 1] # 3-period tent kernel for monthly->weekly aggregation
|
|
34
|
+
|
|
30
35
|
# Block Structure for Macroeconomic Data
|
|
31
|
-
#
|
|
32
|
-
# Series
|
|
36
|
+
# Single global block for all series
|
|
37
|
+
# Series order: clock-frequency (weekly) first, then slower-frequency (monthly)
|
|
33
38
|
blocks:
|
|
34
|
-
|
|
35
|
-
num_factors:
|
|
36
|
-
series:
|
|
37
|
-
- KOCONPRCF # Production
|
|
38
|
-
- KOEMPTOTO # Total employment
|
|
39
|
-
- KOHWRWEMP # Hours worked
|
|
40
|
-
- KOWRCCNSE # Consumption
|
|
41
|
-
- KOIMPCONA # Investment
|
|
42
|
-
Block_Prices_Financial:
|
|
43
|
-
num_factors: 2 # Price, financial, and survey factors (combined for testing)
|
|
39
|
+
Block_Global:
|
|
40
|
+
num_factors: 3 # Number of factors for global block
|
|
44
41
|
series:
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
42
|
+
# Weekly series (clock frequency) - must come first
|
|
43
|
+
- KORFBEV # Retail, Food & Beverages (weekly)
|
|
44
|
+
- KORWHLS # Retail, Wholesale (weekly)
|
|
45
|
+
- KORMCMP # Retail, Miscellaneous & Comparison (weekly)
|
|
46
|
+
- KORELEC # Retail, Electronics (weekly)
|
|
47
|
+
- KORCNST # Retail, Construction (weekly)
|
|
48
|
+
- KORMACH # Retail, Machinery (weekly)
|
|
49
|
+
- KOROCOINF # Retail, Other Consumer & Information (weekly)
|
|
50
|
+
# Monthly series (slower than clock) - must come after clock-frequency series
|
|
51
|
+
- KOEMPTOTO # Total employment (monthly)
|
|
52
|
+
- KOHWRWEMP # Hours worked (monthly)
|
|
53
|
+
- KOWRCDURE # Durable goods consumption (monthly)
|
|
54
|
+
- KOCONPRCF # Production (monthly)
|
|
55
|
+
- KOEQUIPTE # Investment, Equipment (monthly, target series)
|
|
56
|
+
- KOWRCCNSE # Consumption (monthly, target series)
|
|
57
|
+
- KOIMPCONA # Investment, Construction (monthly, target series)
|
|
52
58
|
|
|
53
59
|
# Frequency mapping for mixed-frequency macro data
|
|
54
60
|
# Clock is weekly (w), so monthly series are slower frequency
|
|
55
61
|
# Grouped format: frequencies are specified as lists grouped by frequency code
|
|
56
|
-
# Reduced set for faster testing (~50% reduction: 18 monthly series kept from original ~36)
|
|
57
62
|
frequency:
|
|
58
63
|
# Monthly series (slower than weekly clock) - typically end-of-month observations
|
|
59
|
-
#
|
|
64
|
+
# These are the series used in the tutorial
|
|
60
65
|
m:
|
|
61
66
|
- KOEMPTOTO # Total employment (monthly)
|
|
62
67
|
- KOHWRWEMP # Hours worked (monthly)
|
|
63
|
-
-
|
|
64
|
-
- KOWRCCNSE # Consumption (monthly)
|
|
68
|
+
- KOWRCDURE # Durable goods consumption (monthly)
|
|
65
69
|
- KOCONPRCF # Production (monthly)
|
|
66
|
-
# Block_Prices_Financial series
|
|
67
|
-
- KOCPCOREF # Consumer prices (monthly)
|
|
68
|
-
- KOCPEXFEF # Export prices (monthly)
|
|
69
|
-
- KOCREU..A # Credit (monthly)
|
|
70
|
-
- KOLRLTHH # Interest rates (monthly)
|
|
71
|
-
- KOBSIHAPR # Business survey (monthly)
|
|
72
|
-
- KOCNFCONR # Confidence (monthly)
|
|
73
|
-
# Target series
|
|
74
70
|
- KOEQUIPTE # Investment, Equipment (monthly, target series)
|
|
75
|
-
#
|
|
71
|
+
- KOWRCCNSE # Consumption (monthly, target series)
|
|
72
|
+
- KOIMPCONA # Investment, Construction (monthly, target series)
|
|
73
|
+
# Weekly series (same as clock frequency - these appear every week like the clock)
|
|
74
|
+
# This is a mixed-frequency example: clock is weekly, but monthly series are slower
|
|
75
|
+
# The tutorial now respects YAML frequencies for proper mixed-frequency handling
|
|
76
|
+
# These weekly series are available in the data at clock frequency
|
|
76
77
|
w:
|
|
77
78
|
- KORFBEV # Retail, Food & Beverages (weekly)
|
|
78
79
|
- KORWHLS # Retail, Wholesale (weekly)
|