python 读取交割单自动计算每日账户资产

该程序使用Python读取CSV格式的交割单,计算指定日期的账户资产。通过遍历交割单数据,筛选指定日期前的记录,结合证券代码和日期查询收盘价格,计算持仓市值和账户现金,最终得出账户资产总值。程序适用于沪深A股,支持手动补充非交易日或非A股的收盘价格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近工作需要,编写了一个程序,实现了使用python读取交割单信息,自动计算每日账户资产。可以为账户收益率计算节省大量时间。

    交割单为csv文件。可以将交易APP中的历史交割单数据导出后进行格式修改使用。

    程序计算量比较小,计算结果直接显示即可。

实现原理:

  1. 将交割单数据从后向前一条一条读取。
  2. 交割日期大于指定日期的不显示,直接跳过。
  3. 交割日期小于等于指定日期的记录,第一条记录中的资金余额为账户资金余额。
  4. 每次新碰到一个证券代码,对应的证券余额是持仓证券的数量,如果不是新的证券代码,说明前面已经显示过了,这样重复证券代码的记录直接忽略。
  5. 证券数量大于0的记录,显示证券代码,证券名称和证券数量。证券数量为零的证券说明已经清仓了,不需要显示。
  6. 根据证券代码和指定日期,查询到对应的收盘价格。根据持仓数量和收盘价格可以算出证券市值。
  7. 持仓市值加上资金余额即账户收盘资产。

注意几点:

  1. 交割单中的证券余额和资金余额要准确。如果有误,需要手工调制。尤其是有红股和分红数据时。
  2. 根据证券代码和指定日期或者收盘价格有限制,只能自动获取A股上市股票的交易日收盘价格。如果指定日期是非交易日,baostock无法获得非交易日的收盘价格。这时候需要更换为交易日的日期。如果是基金,可以将基金对应日期的净值单独存在文件中,这样程序读取文件中的收盘净值即可。

不多说了,直接上代码。


'''
Created on 2021年8月26日

@author: yangs
此程序用于计算证券账户指定日期的资产总值。

第一步:读取对账单到dataframe中,
第二步:取指定日期之后的记录,重复的证券代码的,只显示最后一条记录。数量为0的也不显示。
第三步:根据证券代码和指定日期,获得收盘价格。股票的收盘价格从baostock中获取,并从手动表中补充其他的价格
第四步:计算出收盘后的账户资产值

数据源文件位置需要根据实际情况调整,缺省是当前目录
计算结果只用于显示。本程序较小,运行速度很快,直接显示内容。
'''

import pandas as pd
from datetime import datetime
import baostock as bs

  
class MyTools(object):
    """
    工具类
    """
    def __init__(self):
        pass
    
    def read_tradeFile(self, full_file_name): 
        '''
        读取对账单文件。
        返回格式: dataframe 
        对账单为csv文件,格式如下。
    其中要用到的数据包括交收日期,证券代码,证券余额,资金余额。其他列数据暂时不用
序号,交收日期,证券代码,证券名称,交易类别,成交价格,成交数量,证券余额,成交金额,资金发生数,资金余额,,流水序号,业务标志,业务名称,发生金额,后资金额,货币类别,备注,,,,,,,,,,,,,费用合计,净佣金,规费,印花税,过户费,币种,合同号,资金账号,股东代码
1,2014-06-09,,,银行转存,,,,5475,5475.00 ,5475.00 ,,9,2041,银行转存,5475,5475,人民币,银行返回码[0000]返回信息[[0000]交易成功]|转账成功,,,,,,,,,,,,,,,,,,,,,
2,2014-06-16,,,银行转取,,,,-5475,-5475.00 ,0.00 ,,7,2042,银行转取,-5475,0,人民币,银行返回码[0000]返回信息[[0000]交易成功]|转账
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值