当前位置: 首页 > article >正文

买基金时该如何记账?

一、记账时需要记录三种类型的数据

 

1、第1种为买入信息

 时间:2020-11-12

市场单价(元/份):1.322

投资金额(元):100

单次购买数量(份)=【投资金额(元)-手续费(元)】/市场单价(元/份)

75.55(是四舍五入后的结果)=(100-0.12)/1.322

2、第2种为卖出信息

 

 时间:2021-02-19

市场单价(元/份):1.602

单次卖出数量(份):526.01

卖出金额(元)=市场单价(元/份)*单次卖出数量(份)-手续费

838.46(是四舍五入后的结果)=1.602*526.01-4.21

3、第3种为最新市场单价

 

 时间:2023-07-21

市场单价(元/份):1.0824

二、数据整理

三、整理后的数据导入Python

import pandas as pd
df = pd.read_excel(r"文件地址.xlsx", converters={"产品代码":str},sheet_name = 0)

导入的数据显示为:

     产品代码        time    市场单价  单次投资金额  单次购买数量    卖出金额
0  001027  2020-11-12  1.3220   100.0   75.55     NaN
1  001027  2020-11-13  1.3080   200.0  152.72     NaN
2  001027  2020-11-30  1.3280   200.0  150.42     NaN
3  001027  2020-12-18  1.3560   200.0  147.32     NaN
4  001027  2021-02-19  1.6020     0.0 -526.01  838.46
5  001027  2023-07-14  1.0714   100.0   93.22     NaN
6  001027  2023-07-21  1.0824     NaN     NaN     NaN

四、运行一个名为“fund”的函数用来记账

import numpy as np
from decimal import Decimal
def fund(product_code,df):df = df.loc[df["产品代码"] == product_code,:]\.reset_index(drop=True)for i in ['市场单价', '单次投资金额', '单次购买数量']: df[i]=df[i].apply(lambda x :Decimal(str(x)))del idf.insert(6,'当时持有数量',np.nan)for index in df.index[:-1]: df.loc[index,'当时持有数量'] = df.loc[0:index,'单次购买数量'].sum()del indexdf.insert(6,'其中现在持有数量',np.nan)sell_all_num = -df.loc[df["单次购买数量"]<0,"单次购买数量"].sum()if any( df["当时持有数量"] == sell_all_num):sell_part = df[df["当时持有数量"]== sell_all_num].index[0]df.loc[0:sell_part, "其中现在持有数量"] = 0df.loc[sell_part+1:, "其中现在持有数量"] = df.loc[sell_part+1:, "单次购买数量"] df.loc[df["单次购买数量"]<0,'其中现在持有数量'] = np.nanall_cost = df.loc[df["其中现在持有数量"]!=0,'单次投资金额'].sum()else:sell_part = df[df["当时持有数量"] > sell_all_num].index[0]df.loc[0:sell_part-1, "其中现在持有数量"] = 0df.loc[sell_part, "其中现在持有数量"] = sell_all_num -df.loc[sell_part-1, "当时持有数量"] df.loc[sell_part+1:, "其中现在持有数量"] = df.loc[sell_part+1:, "单次购买数量"] df.loc[df["单次购买数量"]<0,'其中现在持有数量'] = np.nanall_cost = df.loc[sell_part, "其中现在持有数量"]/df.loc[sell_part, "单次购买数量"]*df.loc[sell_part, "单次投资金额"]+df.loc[sell_part+1:,'单次投资金额'].sum()all_num = df['当时持有数量'].iloc[-2]unit_cost = (all_cost/all_num).quantize(Decimal('0.0000'))   ;  unit_price =  df['市场单价'].iloc[-1]all_value = (all_num*unit_price).quantize(Decimal('0.00'))earn =all_value-all_costprint(f"现在持有的份额:{all_num}")print(f"现在成本单价:{unit_cost}     现在市场单价:{unit_price}")print(f"总成本:{all_cost}     总价格:{all_value}   总利润:{earn}")

五、查看买卖基金的信息

对代码为"001027"的基金进行记账:

fund("001027",df)

输出为:

现在持有的份额:93.22
现在成本单价:1.0727     现在市场单价:1.0824
总成本:100.0     总价格:100.90   总利润:0.90

对比支付宝上的信息:

http://www.lryc.cn/news/2414927.html

相关文章:

  • 【matlab系列学习之|1.基本操作与输入】
  • 如何修改SAP BusinessObjects报表5000行的限制?
  • Cisco packet tracer 2811路由增加接口
  • CSS基础教程:从入门到精通
  • 为什么台湾的Yahoo!叫奇摩 ?
  • 手机网页html怎样阻止广告,Webview拦截广告
  • Sun Virtualbox虚拟机安装图文教程
  • 昨天(2009年10月29日)ubuntu,9.10正式版出炉!
  • CSS3-3D转换
  • 你想要的宏基因组-微生物组知识全在这(2023.9)
  • 上海求职骗子公司大全!!
  • 如何去选购电脑配置——电脑配置单主板、CPU、显卡、内存
  • Dart基本语法
  • what is saltstack系列四:Agentless SaltStack
  • Android开发框架详解及示例代码
  • 最小二乘法的应用(2015A题A题太阳影子定位)
  • 用微软的Live Writer离线写博文
  • 手机端APP客服系统推荐
  • 图像入门——3. 图像处理的视觉基础与应用
  • 微信小程序毕业设计-社区团购系统项目开发实例(附源码+演示视频+LW)
  • 五笔字根表口诀的通俗易懂讲解
  • apacheDS ldap 安装,配置,增删查该及备份恢复
  • HTC G12快速安全root(破解)全攻略(软解s-off root)
  • html左右循环滚动代码,不间断循环滚动效果的实例代码(必看篇)
  • Three20 安装
  • JS简单实现后退例子
  • Android电视直播 v5.6,龙龙直播app下载|龙龙直播apk2019官方版下载 v5.6.1 安卓版 - 数码资源网...
  • 3.RedHat认证-Linux权限管理
  • win8系统计算机的系统属性,Win8系统优化之最详篇 必看!
  • 强烈推荐!15 个 Github 顶级 Java 教程类开源项目推荐!