首页 > 其他分享 >基金持仓成本分析脚本

基金持仓成本分析脚本

时间:2024-08-07 13:39:50浏览次数:13  
标签:脚本 redemption 335 总成本 持仓 rates 365 基金 成本

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#

from collections import namedtuple

# 定义一个命名元组来存储赎回费率的期限和费率
RedemptionRate = namedtuple("RedemptionRate", ["days", "rate"])


def calculate_costs(P, T, F_A, M_A, S_A, T_A, R_A, M_C, S_C, T_C, R_C):
    # A类基金总成本
    C_A = P * F_A + P * (M_A + S_A + T_A) * (T / 365) + P * R_A(T)
    # C类基金总成本
    C_C = P * (M_C + S_C + T_C) * (T / 365) + P * R_C(T)
    return C_A, C_C


def redemption_fee_A(T, redemption_rates_A):
    for rate in redemption_rates_A:
        if T <= rate.days:
            return rate.rate
    return 0  # 持有时间大于所有设定的期限时,赎回费为0%


def redemption_fee_C(T, redemption_rates_C):
    for rate in redemption_rates_C:
        if T <= rate.days:
            return rate.rate
    return 0  # 持有时间大于所有设定的期限时,赎回费为0%


# 初始投资金额
P = 10000  # 示例金额,可以修改

# 持有时间(天)
T_values = [30, 60, 90, 180, 365, 730]  # 示例持有时间,可以修改

# A类基金费用结构(百分比表示)
F_A = 0.05 / 100  # 0.05% 前端收费
M_A = 0.15 / 100  # 0.15% 年管理费
S_A = 0 / 100  # 0% 销售服务费
T_A = 0.05 / 100  # 0.05% 托管费

# C类基金费用结构(百分比表示)
M_C = 0.15 / 100  # 0.15% 年管理费
S_C = 0.1 / 100  # 0.05% 销售服务费
T_C = 0.05 / 100  # 0.05% 托管费

# A类基金赎回费率(天数:费率)
redemption_rates_A = {
    RedemptionRate(days=7, rate=1.5 / 100),  # 小于7天,1.5%
    RedemptionRate(days=30, rate=0.1 / 100),  # 大于7天小于30天,0.1%
}

# C类基金赎回费率(天数:费率)
redemption_rates_C = {
    RedemptionRate(days=7, rate=1.5 / 100),  # 小于7天,1.5%
    RedemptionRate(days=30, rate=0.1 / 100),  # 大于7天小于30天,0.1%
}

print(
    f"{'持有时间(天)':<10} {'A类基金总成本':<10} {'C类基金总成本':<10} {'更便宜的基金':<10}"
)
print("=" * 70)

recommendation_threshold = None

for T in T_values:
    C_A, C_C = calculate_costs(
        P,
        T,
        F_A,
        M_A,
        S_A,
        T_A,
        lambda T: redemption_fee_A(T, redemption_rates_A),
        M_C,
        S_C,
        T_C,
        lambda T: redemption_fee_C(T, redemption_rates_C),
    )
    cheaper_fund = "A类" if C_A < C_C else "C类"
    print(f"{T:<15} {C_A:<20.2f} {C_C:<20.2f} {cheaper_fund:<15}")
    if recommendation_threshold is None and C_A < C_C:
        recommendation_threshold = T

if recommendation_threshold is None:
    recommendation_threshold = "所有持有时间均推荐C类"
else:
    # 精确找到临界点
    for T in range(recommendation_threshold - 30, recommendation_threshold + 30):
        C_A, C_C = calculate_costs(
            P,
            T,
            F_A,
            M_A,
            S_A,
            T_A,
            lambda T: redemption_fee_A(T, redemption_rates_A),
            M_C,
            S_C,
            T_C,
            lambda T: redemption_fee_C(T, redemption_rates_C),
        )
        if C_A < C_C:
            recommendation_threshold = T
            break

print("=" * 70)
if isinstance(recommendation_threshold, int):
    print(
        f"大于{recommendation_threshold}天推荐A类,小于等于{recommendation_threshold}天推荐C类"
    )
else:
    print(recommendation_threshold)

输出

持有时间(天)    A类基金总成本    C类基金总成本    更便宜的基金    
======================================================================
30              16.64                12.47                C类             
60              8.29                 4.93                 C类             
90              9.93                 7.40                 C类             
180             14.86                14.79                C类             
365             25.00                30.00                A类             
730             45.00                60.00                A类             
======================================================================
大于335天推荐A类,小于等于335天推荐C类

标签:脚本,redemption,335,总成本,持仓,rates,365,基金,成本
From: https://www.cnblogs.com/liy36/p/18346855

相关文章

  • 免费分享一套SpringBoot+Vue新闻发布推荐系统【论文+源码+SQL脚本】,帅呆了~~
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue图书(图书借阅)管理系统,分享下哈。项目视频演示【免费】SpringBoot+Vue新闻发布推荐系统Java毕业设计_哔哩哔哩_bilibili项目介绍随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自......
  • 安卓鲁班搭档 Ai视频去重脚本
     1.工具概述视频去重工具是一款专为视频内容创作者设计的工具,它通过内置的多种去重技术,帮助用户优化和创新视频内容。2.主要功能特点一键智能化处理:用户可以快速对视频进行去重处理,简化操作流程。AI算法应用:利用人工智能算法,智能识别并处理视频中的重复元素。随机......
  • ; 每隔10分钟定时关闭并重启蘑菇游戏下载器,防止下载器卡死宕机死机停止下载的AutoHot
     ;每隔10分钟定时关闭并重启蘑菇游戏下载器,防止下载器卡死宕机死机停止下载的AutoHotkey脚本2024年8月7日  ;每隔10分钟定时关闭并重启蘑菇游戏下载器,防止下载器卡死宕机死机停止下载的AutoHotkey脚本2024年8月7日;测试环境:AutoHotkey_1.1.37.02_Setup.exe&Win......
  • ArcPro (3.2+) Python 脚本工具中从 .atbx Toolbox 相对导入本地模块
    我设置了一个库和关联的ArcGISToolbox,以便:/root├──Toolbox.atbx├──mylib│└──my_function.py├──my_tools│└──my_gp_script.py我将代码存储库的开发克隆保存在公司共享服务器上的一个位置,并在GitHub上托管一份副本。当我进行更新时,我会......
  • (Jmeter新玩法)Python 调 Jmeter执行参数化jmx脚本
    #Python调Jmeter执行参数化jmx脚本importosfromos.pathimportjoinimporttimeimportrefromstringimportTemplatejmeter_Home=r"F:\softtotal\xxx\bin\jmeter.bat"#jmx文件路径currpath=os.path.dirname(os.path.realpath(__file__))#要运行的jmx脚......
  • Jmeter源码改造之-脚本执行&定制报告&定制Jmeter弹框
    承接上一篇:Jmeter源码改造之-自动化生成性能测试脚本_自动生成jmx-CSDN博客假如你已经有了Jmeter源码开发环境,就可以通过代码去执行压测脚本(当然,界面、dos窗口命令/Linux命令、Jenkins等方式也都能实现脚本执行),还可以通过代码去解析.jtl结果文件来生成你想要的测试报告,并定制......
  • 【AIGC】 0成本学习:AI工作流生成Joy(ComfyUI)
      现如今在AIGC大环境的推动下AI生成的工作也不断的在进化,从起初的MJ到SD,从WebUI到现在的ComfyUI。每一次变化都再不断的提升AI方向的质量和效率。今天就带大家把最近火圈的ComfyUi用起来!!!同时这次也将提供给大家所有基础的工作流,以及定制JOY工作流。这次分享会帮大家把Comf......
  • laravel:得到linux平台当前脚本的执行用户
    一,代码:<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;classIndexAllCommandextendsCommand{/***Thenameandsignatureoftheconsolecommand.**@varstring*/protected$signature='......
  • 零成本加速 “个人图床服务”
    前言上次简单分享了一下通过GithubPages方式搭建图床,但是国内对 github资源的加载普遍不太稳定,多数情况下很慢甚至打不开。而这次我要推荐两个解决方法,一种是助力方案,使用CDN加速;另一种是代替方案,换成真正的图床或其他托管服务(先卖个关子)。 方案一方案一提供助力,gith......
  • 【机器学习】正则化的基本概念以及正则化成本和梯度的示例
    引言在机器学习中,正则化(Regularization)是一种技术,用于减少模型复杂度,防止过拟合,并提高模型的泛化能力。通过在损失函数中添加一个额外的惩罚项,正则化鼓励模型学习更简单、更平滑的函数,从而在未见过的数据上表现得更好文章目录引言一、正则化1.1正则化的形式1.1.1L1......