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

F#下Long-Short组合日收益率计算Cumulative Returns的实现咨询

F#多空组合累计收益率实现方案

核心逻辑

累计收益率逐期计算规则为:截至第n期的累计收益率 = (1+第1期收益率) * (1+第2期收益率) * ... * (1+第n期收益率) - 1

代码实现

你现有代码中缺失的累计收益率计算部分,可以根据使用需求选择以下两种实现:

场景1:需要获取每期对应累计收益率序列(适配绘制收益曲线等场景)

// 可选:先定义累计收益对应记录类型,保留日期关联
type CumulativeReturn = { YearMonth : DateTime; CumulativeReturn : float }

let cumulativereturnslongshort = 
    longShort
    // scan操作保留每一步累乘结果,初始值设为0(0期累计收益为0)
    |> Array.scan 
        (fun prevCum current -> (1.0 + prevCum) * (1.0 + current.Return) - 1.0) 
        0.0
    // 跳过初始的0值,和实际收益期数对齐
    |> Array.skip 1
    // 关联对应日期,不需要日期可删除这一步直接得到累计收益率数值数组
    |> Array.mapi (fun idx cumRet -> { YearMonth = longShort[idx].YearMonth; CumulativeReturn = cumRet })

场景2:仅需要最终总累计收益率

let cumulativereturnslongshort = 
    longShort
    // fold操作仅返回最终累乘结果
    |> Array.fold 
        (fun acc current -> (1.0 + acc) * (1.0 + current.Return) - 1.0) 
        0.0

注意事项

  • 请确认Return字段为小数格式收益率:例如1.5%的收益率对应值为0.015,若为百分比格式请先除以100再代入计算。
  • 若要计算累计净值,直接删除公式末尾的- 1.0即可,初始净值为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:54:04