【问题标题】:How to process buy sell history csv如何处理买卖历史csv
【发布时间】:2021-01-18 13:54:02
【问题描述】:

我有一个这样的 csv:

symbol  date                           side    quantity   average_price
AAPL    2020-12-31T14:28:48.019000Z    buy     1          112.01
AMD     2020-12-29T19:14:21.111000Z    buy     1          91.33
AMD     2020-12-29T14:28:48.019000Z    sell    5          92.42
AAPL    2020-12-28T19:14:21.111000Z    sell    3          115.45
AAPL    2020-12-23T14:28:48.019000Z    buy     1          108.11
AAPL    2020-12-20T19:14:21.111000Z    sell    2          110.03
AMD     2020-12-18T14:28:48.019000Z    buy     7          88.74
AAPL    2020-12-16T19:14:21.111000Z    buy     4          100.93

这只是数据的一小部分样本,只有 2 家公司 AAPL 和 AMD。对于更多的公司,实际的 csv 比这长得多。

鉴于我拥有 1 股 AAPL 和 3 股 AMD。我需要弄清楚我购买这些股票的交易日期和价格。所以我要找的结果是:

1 share of APPL on 2020-12-31T14:28:48.019000Z for 112.01

1 share of AMD on 2020-12-29T19:14:21.111000Z for 91.33
2 shares of AMD on 2020-12-18T14:28:48.019000Z for 88.74

基本上这是基于 FIFO 计算的。 AMD:7-5+1=3 和 APPL:4-2+1-3+1=1...

我真的不知道该怎么做...我在想也许使用队列?不知何故?但在走这条路之前......我想我应该发布这个,看看是否有更好的方法?

仅供参考...当前的 csv 是 700 行...将来可能会更大。也许7000行?如果任何解决方案涉及遍历 csv,则可能是相关的。

【问题讨论】:

    标签: python csv queue stock fifo


    【解决方案1】:

    以分析的方式看待它,就好像您是软件一样,并为自己制定有关流程的(可靠的)规则。通过文本文件逐行反向查找(相对)较慢,因此可能首先将行导入结构或 sqlite 内存数据库中查找速度较快的地方。

    您可以按公司进行子查询,并按日期排序。然后您可以通过该子查询为您的“FIFO”反转。

    我无法真正了解订购和排序以及您如何组合买卖,但这对您来说可能很简单。

    希望这能给你一些启发。

    【讨论】:

    • 我自己的一条可靠规则是,我使用“import robin_stocks as rs”作为投资 API 的库。这个库有“rs.export.export_completed_stock_orders()”作为我能找到获取“购买”日期的唯一方法。此函数创建一个 csv 文件。似乎我唯一的选择是使用这个 csv 文件。我不知道该怎么做。显然,我不希望我的代码变慢,但在这种情况下,慢并不是真正的问题。我最多可以每天运行一次此代码。也许每周一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2021-02-07
    • 2013-10-27
    相关资源
    最近更新 更多