如何显示账面余额?

How to show a carrying account balance?

对于股票“策略”,我有一个 DataFrame(称为“concat”)显示位置“I”的交易利润。 假设我有一个名为“起始余额”的变量 = 1,000

我想根据初始起始余额计算每行中的可用余额,给定 profit/or 交易损失。

(上面说不允许嵌入图片所以在link中就是我要实现的例子)

我试图创建一个循环,该循环应该在每个“I”位置进行计算:

    
    if concat['Sell at'][i] > 0:
        strt_bal = Starting_Balance
        number_of_shares = np.round(strt_bal / concat['Bought at'][i], 0)
        trade_profit = number_of_shares * concat['Win / (loss) $ Long'][i]
        strt_bal = strt_bal + trade_profit
        test.append(strt_bal)

为了查看它是否有效,我检查了列表中的值,但这些值是错误的,因为它总是使用变量“起始余额”来计算。

如何才能达到 Excel 文件的预期效果?

首先,我将根据您提供的 Excel 数据创建一个模拟数据框:

import pandas as pd

df = pd.DataFrame([2500]+[None]*9,
                  [0]*6+[-51.2548,0,0,198.8144]).reset_index(drop=False)

df.columns = ['profit','balance']

df
    profit  balance
0   0.0000  2500.0
1   0.0000  NaN
2   0.0000  NaN
3   0.0000  NaN
4   0.0000  NaN
5   0.0000  NaN
6   -51.2548    NaN
7   0.0000  NaN
8   0.0000  NaN
9   198.8144    NaN

我们有利润值和期初余额,没有别的。我们要填写余额列的其余部分,替换 NaN 值。

快速修复:

for i in df.index:
    df.balance[i] = list(df[~df.balance.isnull()].balance)[-1]+df.profit[i]

对于每一行,我们将在余额列中找到最后一个非空值,并将其与行中的利润值相加。这将代表该行的余额值。

现在数据框:

    profit  balance
0   0.0000  2500.0000
1   0.0000  2500.0000
2   0.0000  2500.0000
3   0.0000  2500.0000
4   0.0000  2500.0000
5   0.0000  2500.0000
6   -51.2548    2448.7452
7   0.0000  2448.7452
8   0.0000  2448.7452
9   198.8144    2647.5596