|
|
@@ -176,13 +176,8 @@ function mockY10Series() {
|
|
|
|
|
|
// 政策利率(合并 1Y 贷款基准 + 7D 逆回购)月度序列
|
|
|
function mockPolicyRateMonthly() {
|
|
|
- // 抽取每次调整形成阶梯
|
|
|
- const pts = rateAdjustments
|
|
|
- .filter((x) => x.changeBp !== null)
|
|
|
- .map((x) => ({ date: x.date + (x.date.length === 10 ? '' : ''), value: x.after }))
|
|
|
- // 加上期初
|
|
|
- const first = rateAdjustments[0]
|
|
|
- const arr = [[first.date, first.after], ...pts.map((x) => [x.date, x.value])]
|
|
|
+ // 保留所有有效点位(含 changeBp===null 的期初/当前行)
|
|
|
+ const arr = rateAdjustments.map((x) => [x.date, x.after])
|
|
|
// 转月度(每月 30 日取最近生效日)
|
|
|
const months = []
|
|
|
const start = new Date('2008-01-01')
|
|
|
@@ -225,21 +220,21 @@ function mockRrrMonthly() {
|
|
|
return months
|
|
|
}
|
|
|
|
|
|
-// 超储率
|
|
|
+// 超储率(季度,保留季节性波动形态,目标 2025-12=1.5、2026-06=1.3)
|
|
|
function mockExcessReserveRatio() {
|
|
|
return [
|
|
|
- ['2018-12-31', 2.40], ['2019-03-31', 2.20], ['2019-06-30', 2.00], ['2019-09-30', 1.90],
|
|
|
- ['2019-12-31', 1.80], ['2020-03-31', 1.70], ['2020-06-30', 1.60], ['2020-09-30', 1.50],
|
|
|
- ['2020-12-31', 1.50], ['2021-03-31', 1.50], ['2021-06-30', 1.40], ['2021-09-30', 1.40],
|
|
|
- ['2021-12-31', 1.40], ['2022-03-31', 1.30], ['2022-06-30', 1.30], ['2022-09-30', 1.30],
|
|
|
- ['2022-12-31', 1.20], ['2023-03-31', 1.20], ['2023-06-30', 1.20], ['2023-09-30', 1.10],
|
|
|
- ['2023-12-31', 1.10], ['2024-03-31', 1.10], ['2024-06-30', 1.00], ['2024-09-30', 1.00],
|
|
|
- ['2024-12-31', 1.00], ['2025-03-31', 1.00], ['2025-06-30', 0.90], ['2025-09-30', 0.90],
|
|
|
- ['2025-12-31', 0.90], ['2026-03-31', 0.90], ['2026-06-30', 0.80], ['2026-08-31', 0.80],
|
|
|
+ ['2018-12-31', 2.40], ['2019-03-31', 2.10], ['2019-06-30', 2.25], ['2019-09-30', 1.95],
|
|
|
+ ['2019-12-31', 1.85], ['2020-03-31', 1.65], ['2020-06-30', 1.75], ['2020-09-30', 1.55],
|
|
|
+ ['2020-12-31', 1.55], ['2021-03-31', 1.45], ['2021-06-30', 1.55], ['2021-09-30', 1.40],
|
|
|
+ ['2021-12-31', 1.50], ['2022-03-31', 1.35], ['2022-06-30', 1.45], ['2022-09-30', 1.25],
|
|
|
+ ['2022-12-31', 1.40], ['2023-03-31', 1.25], ['2023-06-30', 1.40], ['2023-09-30', 1.15],
|
|
|
+ ['2023-12-31', 1.30], ['2024-03-31', 1.20], ['2024-06-30', 1.30], ['2024-09-30', 1.10],
|
|
|
+ ['2024-12-31', 1.30], ['2025-03-31', 1.40], ['2025-06-30', 1.30], ['2025-09-30', 1.25],
|
|
|
+ ['2025-12-31', 1.50], ['2026-03-31', 1.40], ['2026-06-30', 1.30],
|
|
|
]
|
|
|
}
|
|
|
|
|
|
-// 一般贷款利率 vs 个人住房按揭
|
|
|
+// 一般贷款利率 vs 个人住房按揭(2026-06 目标:3.51 / 3.05)
|
|
|
function mockLoanRates() {
|
|
|
return {
|
|
|
generalLoan: [
|
|
|
@@ -249,8 +244,8 @@ function mockLoanRates() {
|
|
|
['2021-12-31', 4.65], ['2022-03-31', 4.57], ['2022-06-30', 4.41], ['2022-09-30', 4.34],
|
|
|
['2022-12-31', 4.20], ['2023-03-31', 4.11], ['2023-06-30', 4.02], ['2023-09-30', 3.92],
|
|
|
['2023-12-31', 3.83], ['2024-03-31', 3.73], ['2024-06-30', 3.61], ['2024-09-30', 3.51],
|
|
|
- ['2024-12-31', 3.42], ['2025-03-31', 3.32], ['2025-06-30', 3.21], ['2025-09-30', 3.13],
|
|
|
- ['2025-12-31', 3.05], ['2026-03-31', 2.97], ['2026-06-30', 2.90], ['2026-08-31', 2.85],
|
|
|
+ ['2024-12-31', 3.42], ['2025-03-31', 3.40], ['2025-06-30', 3.45], ['2025-09-30', 3.48],
|
|
|
+ ['2025-12-31', 3.55], ['2026-03-31', 3.54], ['2026-06-30', 3.51],
|
|
|
],
|
|
|
mortgage: [
|
|
|
['2018-12-31', 5.75], ['2019-03-31', 5.69], ['2019-06-30', 5.53], ['2019-09-30', 5.55],
|
|
|
@@ -259,32 +254,32 @@ function mockLoanRates() {
|
|
|
['2021-12-31', 4.91], ['2022-03-31', 4.84], ['2022-06-30', 4.72], ['2022-09-30', 4.59],
|
|
|
['2022-12-31', 4.46], ['2023-03-31', 4.32], ['2023-06-30', 4.11], ['2023-09-30', 3.92],
|
|
|
['2023-12-31', 3.78], ['2024-03-31', 3.62], ['2024-06-30', 3.45], ['2024-09-30', 3.31],
|
|
|
- ['2024-12-31', 3.18], ['2025-03-31', 3.04], ['2025-06-30', 2.92], ['2025-09-30', 2.83],
|
|
|
- ['2025-12-31', 2.74], ['2026-03-31', 2.66], ['2026-06-30', 2.58], ['2026-08-31', 2.52],
|
|
|
+ ['2024-12-31', 3.18], ['2025-03-31', 3.10], ['2025-06-30', 3.08], ['2025-09-30', 3.07],
|
|
|
+ ['2025-12-31', 3.06], ['2026-03-31', 3.05], ['2026-06-30', 3.05],
|
|
|
],
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 财政赤字 / 赤字率 / 政府债余额
|
|
|
+// 财政赤字 / 赤字率 / 政府债余额(按 Excel 政策面 sheet 修正)
|
|
|
function mockFiscal() {
|
|
|
return {
|
|
|
deficit: [
|
|
|
['2014-12-31', 13800], ['2015-12-31', 16200], ['2016-12-31', 21800], ['2017-12-31', 23800],
|
|
|
['2018-12-31', 23800], ['2019-12-31', 27600], ['2020-12-31', 37600], ['2021-12-31', 35700],
|
|
|
- ['2022-12-31', 33700], ['2023-12-31', 38800], ['2024-12-31', 33800], ['2025-12-31', 48800],
|
|
|
- ['2026-12-31', 50800],
|
|
|
+ ['2022-12-31', 33700], ['2023-12-31', 38800], ['2024-12-31', 40600], ['2025-12-31', 56600],
|
|
|
+ ['2026-12-31', 58900],
|
|
|
],
|
|
|
deficitRatio: [
|
|
|
['2014-12-31', 2.1], ['2015-12-31', 2.3], ['2016-12-31', 3.0], ['2017-12-31', 3.0],
|
|
|
['2018-12-31', 2.6], ['2019-12-31', 2.8], ['2020-12-31', 3.6], ['2021-12-31', 3.2],
|
|
|
- ['2022-12-31', 2.8], ['2023-12-31', 3.0], ['2024-12-31', 3.0], ['2025-12-31', 3.0],
|
|
|
- ['2026-12-31', 3.0],
|
|
|
+ ['2022-12-31', 2.8], ['2023-12-31', 3.0], ['2024-12-31', 3.0], ['2025-12-31', 4.0],
|
|
|
+ ['2026-12-31', 4.0],
|
|
|
],
|
|
|
govDebt: [
|
|
|
['2019-12-31', 38.10], ['2020-06-30', 41.50], ['2020-12-31', 46.55], ['2021-06-30', 50.78],
|
|
|
['2021-12-31', 53.10], ['2022-06-30', 56.78], ['2022-12-31', 60.93], ['2023-06-30', 64.85],
|
|
|
['2023-12-31', 70.12], ['2024-06-30', 75.50], ['2024-12-31', 80.78], ['2025-06-30', 86.30],
|
|
|
- ['2025-12-31', 92.10], ['2026-03-31', 95.20], ['2026-06-30', 98.50], ['2026-08-31', 100.80],
|
|
|
+ ['2025-12-31', 92.10], ['2026-03-31', 100.50], ['2026-06-30', 102.30], ['2026-08-31', 103.69],
|
|
|
],
|
|
|
}
|
|
|
}
|
|
|
@@ -302,6 +297,18 @@ const mock = {
|
|
|
}
|
|
|
|
|
|
function mockSeries(key) { return mock[key]?.series || [] }
|
|
|
+
|
|
|
+// KPI 数据源(供顶部 KPI 卡引用,显示数据来源 + 指标编码)
|
|
|
+export const kpiMeta = {
|
|
|
+ policyRate: { source: mock.policyRate.source, code: mock.policyRate.code },
|
|
|
+ y10: { source: mock.y10.source, code: mock.y10.code },
|
|
|
+ rrr: { source: mock.rrr.source, code: mock.rrr.code },
|
|
|
+ excess: { source: mock.excess.source, code: mock.excess.code },
|
|
|
+ loanGen: { source: mock.loanGen.source, code: mock.loanGen.code },
|
|
|
+ loanMort: { source: mock.loanMort.source, code: mock.loanMort.code },
|
|
|
+ deficitR: { source: mock.deficitR.source, code: mock.deficitR.code },
|
|
|
+ govDebt: { source: mock.govDebt.source, code: mock.govDebt.code },
|
|
|
+}
|
|
|
function mockMeta(key) {
|
|
|
const m = mock[key]
|
|
|
const freqMap = {
|