1

我刚刚开始使用 Python 并使用 pandas 编写一个小的股票投资组合应用程序。我遇到的问题是在我的仓位类中,它创建了 pandas Series 来表示基于交易的每只股票随着时间的推移所拥有的股票数量。因此,如果我在 2012 年 10 月 10 日买入 50 股 IBM 并在 2012 年 10 月 14 日卖出 10 股,我希望 IBM 的 position.shares 系列为:

  • 2012 年 10 月 10 日:50
  • 2012 年 10 月 11 日:50
  • 2012 年 10 月 12 日:50
  • 2012 年 10 月 13 日:50
  • 2012 年 10 月 14 日:40
  • 2012 年 10 月 15 日:40

我计划通过添加从交易日期到当前日期的系列,然后将这些系列中的每一个相加为一个来做到这一点。我正在尝试使用 Series.add 函数,因为我需要一个填充值来确保代表新交易的新股票系列不是旧头寸的 NaN。问题是我不知道如何初始化可以正确添加的可行系列。我在下面的代码中尝试 Series(0) 只是返回:

Series([], dtype=float64)

我还尝试使用一些随机日期初始化它,其值为 0,但即使在添加了不同的系列之后,我也只是不断地取回该系列。

这是我的代码:

class Position: 
    def __init__(self, trades):
        self.ticker = trades[0].ticker #grab the ticker we are dealing with
        self.shares = Series()
        for trade in trades:
            if trade.tranType == 0 or trade.tranType == 2:
                direction = 1 #a buy increases share amount
            else:
                direction = -1 # a sell decreases share amount
            dateRangeInFolio = pd.DateRange(trade.date, datetime.datetime.today())     #from the event date through today
            shareSer = Series(trade.shares * direction, index=dateRangeInFolio)
            self.shares.add(shareSer, fill_value=0)
        print self.shares        

谢谢你的帮助。如果我遗漏了一些非常基本的东西,我深表歉意。

4

1 回答 1

1

所以 Series.add返回总和系列...我认为它只是将其添加到已经存在的系列对象中。所以我这样做了:

self.shares = self.shares.add(shareSer, fill_value=0)

代替

self.shares.add(shareSer, fill_value=0)

它有效。

于 2012-10-21T14:46:13.557 回答