qust_portfolio / operator
qp.risk_parity
风险平价:让资产或风险桶的风险贡献接近目标比例。
输入输出
| 项目 | 说明 |
|---|---|
| 输入 | date, code, vol/risk_model, group? |
| 输出 | date, code, target_weight, risk_contribution |
| 调用 | qp.risk_parity(risk_col="vol", group_col=None, target_contribution="equal") |
打印输入 / 打印输出
下面内容来自本页示例代码真实执行后的 stdout,不是手写占位。
打印输入
shape: (3, 8) ┌────────────┬──────┬─────────────────┬──────┬───────────────┬────────────────┬───────┬─────┐ │ date ┆ code ┆ expected_return ┆ vol ┆ target_weight ┆ current_weight ┆ price ┆ nav │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ str ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 │ ╞════════════╪══════╪═════════════════╪══════╪═══════════════╪════════════════╪═══════╪═════╡ │ 2026-01-01 ┆ AAA ┆ 0.08 ┆ 0.2 ┆ 0.4 ┆ 0.2 ┆ 10.0 ┆ 1e6 │ │ 2026-01-01 ┆ BBB ┆ 0.04 ┆ 0.15 ┆ 0.3 ┆ 0.5 ┆ 20.0 ┆ 1e6 │ │ 2026-01-01 ┆ CCC ┆ 0.06 ┆ 0.18 ┆ 0.3 ┆ 0.3 ┆ 30.0 ┆ 1e6 │ └────────────┴──────┴─────────────────┴──────┴───────────────┴────────────────┴───────┴─────┘
打印输出
shape: (2, 2) ┌──────┬─────────────────────────────────┐ │ 项目 ┆ 内容 │ │ --- ┆ --- │ │ str ┆ str │ ╞══════╪═════════════════════════════════╡ │ 调用 ┆ qp.risk_parity(risk_col="vol",… │ │ 输出 ┆ AttributeError: module 'qust_p… │ └──────┴─────────────────────────────────┘
完整代码
展开可复制完整代码
import polars as pl
import qust as qs
from qust import col
try:
import qust_portfolio as qp
except ImportError:
qp = None
data = pl.DataFrame({
"date": ["2026-01-01", "2026-01-01", "2026-01-01"],
"code": ["AAA", "BBB", "CCC"],
"expected_return": [0.08, 0.04, 0.06],
"vol": [0.20, 0.15, 0.18],
"target_weight": [0.40, 0.30, 0.30],
"current_weight": [0.20, 0.50, 0.30],
"price": [10.0, 20.0, 30.0],
"nav": [1_000_000.0, 1_000_000.0, 1_000_000.0],
})
print("算子:")
print('qp.risk_parity')
print("输入数据:")
print(data)
print("调用:")
print('qp.risk_parity(risk_col="vol", group_col=None, target_contribution="equal")')
if qp is None:
print("当前环境未安装 qust_portfolio;本例展示推荐 API、输入列和输出 schema。")
else:
try:
expr = qp.risk_parity(risk_col="vol", group_col=None, target_contribution="equal")
out = col.with_cols(expr).runtime().calc_data(data)
print("输出:")
print(out)
except Exception as err:
print("当前版本提示:")
print(type(err).__name__ + ": " + str(err))业务改写
| 步骤 | 说明 |
|---|---|
| 资产池 | 先过滤停牌、涨跌停、成交额不足和缺失价格。 |
| 风险模型 | 收益预测和风险估计必须按 rebalance date 对齐,避免未来函数。 |
| 约束 | long_only、杠杆、单资产上限、行业暴露和换手要显式进入优化器。 |
| 输出 | 目标权重最好接 Monitor 检查权重分布、风险贡献和换手。 |