求到期日早于指定日期X的债券组合面值占比
计算到期日早于指定日期的债券组合占比
计算逻辑
- 筛选出到期日早于目标日期X的债券,求和其面值总和(记为
sum_selected) - 计算所有债券的面值总和(记为
sum_total) - 占比计算公式:
(sum_selected / sum_total) * 100,结果保留两位小数即为百分比数值
示例计算(目标日期:2024-06-30)
给定债券数据:
| maturity_date | bond_face_value |
|---|---|
| 2022-07-15 | 24.76 |
| 2022-11-21 | 26.5 |
| 2023-07-15 | 34.19 |
| 2023-11-21 | 35.99 |
| 2024-07-15 | 40.7 |
| 2024-11-21 | 40.8 |
- 筛选到期日早于2024-06-30的债券,面值总和:
24.76 + 26.5 + 34.19 + 35.99 = 121.44 - 所有债券面值总和:
24.76 + 26.5 + 34.19 + 35.99 + 40.7 + 40.8 = 202.94 - 占比计算:
(121.44 / 202.94) * 100 ≈ 59.84%
通用实现方式
Excel公式实现
假设债券数据在A:A(到期日)和B:B(面值)列,目标日期放在D1单元格,使用以下公式即可直接得到占比:
=SUMIF(A:A,"<"&D1,B:B)/SUM(B:B)*100
设置单元格格式为「百分比」并保留两位小数即可。
Python(Pandas)实现
适合批量或动态数据场景:
import pandas as pd # 加载债券数据 bond_data = pd.DataFrame({ 'maturity_date': pd.to_datetime(['2022-07-15', '2022-11-21', '2023-07-15', '2023-11-21', '2024-07-15', '2024-11-21']), 'bond_face_value': [24.76, 26.5, 34.19, 35.99, 40.7, 40.8] }) # 定义目标日期 target_date = pd.to_datetime('2024-06-30') # 计算占比 selected_sum = bond_data[bond_data['maturity_date'] < target_date]['bond_face_value'].sum() total_sum = bond_data['bond_face_value'].sum() ratio = round((selected_sum / total_sum) * 100, 2) print(f"占比:{ratio}%")
运行后输出:占比:59.84%
内容的提问来源于stack exchange,提问作者Renegade_rm56
相关产品推荐
相关产品推荐

