Qust Docs

qust_portfolio / operator

qp.constraints

约束配置:描述 long_only、杠杆、单资产上限、行业暴露、换手和交易成本。

输入输出

项目说明
输入constraint config, exposure columns, previous_weight
输出约束配置对象,传给组合优化算子
调用qp.constraints(long_only=True, leverage=1.0, max_weight=0.05, turnover=0.2)

打印输入 / 打印输出

下面内容来自本页示例代码真实执行后的 stdout,不是手写占位。

完整代码

展开可复制完整代码
Python
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.constraints')
print("输入数据:")
print(data)
print("调用:")
print('qp.constraints(long_only=True, leverage=1.0, max_weight=0.05, turnover=0.2)')

if qp is None:
    print("当前环境未安装 qust_portfolio;本例展示推荐 API、输入列和输出 schema。")
else:
    try:
        expr = qp.constraints(long_only=True, leverage=1.0, max_weight=0.05, turnover=0.2)
        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 检查权重分布、风险贡献和换手。