You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Scipy的夏普比率优化代码中,数据传入路径是什么?

代码工作原理与数据传入环节解析

这段代码是用SciPy的优化工具实现最大化夏普比率的资产配置权重求解,属于量化投资里的均值-方差优化场景,下面逐段拆解并解答数据传入的问题:

代码各部分功能

  1. 导入优化模块

    import scipy.optimize as sco
    

    引入SciPy的optimize模块,用来调用数值优化算法。

  2. 定义资产数量

    n_assets = 7
    

    指定要进行配置的资产总数为7个。

  3. 优化目标函数

    def min_func_sharpe(weights):
        return - port_ret(weights) / port_vol(weights)
    
    • 这是优化的核心目标:我们要最大化夏普比率(组合收益/组合波动率,默认无风险收益为0),但SciPy的优化器默认做最小化运算,所以返回负的夏普比率——最小化这个值就等价于最大化原夏普比率。
    • 这里的port_ret和port_vol是关键:你导入Jupyter的资产数据,就是通过这两个自定义函数传入优化流程的。这两个函数内部必然引用了你的资产历史收益数据,用来计算给定权重下的组合预期收益和波动率。
  4. 配置约束条件

    cons = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1})
    

    设置等式约束:所有资产的权重之和必须等于1,保证是满仓配置(不允许空仓或加杠杆)。lambda函数用来验证权重和是否符合要求,返回0时满足约束。

  5. 设置权重边界

    bnds = tuple((0, 1) for x in range(n_assets))
    

    给每个资产的权重设定范围:0到1之间,意味着不允许做空(权重不能为负),单个资产的配置比例最高为100%。

  6. 初始化权重

    eweights = np.array(n_assets * [1. / n_assets,])
    

    给优化器提供一个初始的权重猜测值:所有资产等权分配,每个资产占比1/7。优化器会从这个点开始迭代寻找最优解。

  7. 执行优化计算

    opts = sco.minimize(min_func_sharpe, eweights, method='SLSQP', bounds=bnds, constraints=cons)
    

    调用sco.minimize函数,使用SLSQP(序列最小二乘规划)算法执行优化:

    • 传入目标函数、初始权重、权重边界和约束条件。
    • 优化过程中,算法会不断调整权重值,每次调整后都会调用min_func_sharpe,而这个函数会触发port_ret和port_vol计算对应权重下的组合指标——这两个函数会直接使用你导入的资产数据,让优化器判断当前权重的优劣,逐步迭代找到最优解。

数据传入的关键环节

你导入Jupyter的资产收益数据,是通过port_ret和port_vol这两个自定义函数接入优化流程的。这两个函数的定义里肯定引用了你的数据(比如一个存储资产历史收益率的DataFrame或NumPy数组)。

举个这两个函数的典型实现示例(你代码里应该有类似的定义):

import numpy as np

# 假设这是你导入的资产历史收益率数据:100个交易日,7个资产的日收益率
returns = np.random.randn(100, 7)

def port_ret(weights):
    # 计算组合预期年化收益率:权重与资产日均收益率的点积,乘以252(交易日数)
    return np.dot(weights, returns.mean(axis=0)) * 252

def port_vol(weights):
    # 计算组合年化波动率:权重协方差矩阵的二次型的平方根,乘以sqrt(252)
    return np.sqrt(np.dot(weights.T, np.dot(returns.cov() * 252, weights)))

在这个例子里,returns就是你导入的核心数据,port_ret和port_vol直接依赖它完成计算,当优化器调用目标函数时,就会间接把数据纳入优化过程。

内容的提问来源于stack exchange,提问作者Marlon Brando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:43