<p>根据我的记忆,提款是指你的投资组合利润低于最高水平的数额。(将来,你应该明确地定义你想要的输出,不要假设别人知道你在问什么。)</p>
<p>可能有更好的方法,但是您可以使用<code>itertuples()</code>在<code>pandas</code>中计算:</p>
<pre><code>import pandas as pd
from StringIO import StringIO
# read the data
df = pd.DataFrame.from_csv(StringIO("""Date Profit Cumulative
1/6/2005 248.8500 248.85
1/12/2005 48.3500 297.20
1/13/2005 29.2900 326.49
1/13/2005 -500.0000 -173.51
1/13/2005 -250.9500 -424.46
1/14/2005 126.6600 -297.80
1/16/2005 58.7400 -239.06
1/19/2005 68.3500 -170.71
1/21/2005 140.0000 -30.71
1/23/2005 200.0000 169.29
1/26/2005 -250.6800 -81.39
1/27/2005 162.5000 81.11
1/27/2005 135.5100 216.62
1/27/2005 -650.0000 -433.38
1/28/2005 96.8800 -336.50
1/28/2005 -1000.0000 -1336.50
1/31/2005 140.0000 -1196.50
2/1/2005 140.0000 -1056.50"""), sep="\s+").reset_index()
# calculate drawdown
prev_high = 0
for i, date, profit, cumulative in df.itertuples():
prev_high = max(prev_high, cumulative)
dd = cumulative - prev_high
df.loc[i, 'Drawdown'] = dd if dd < 0 else 0
</code></pre>
<p>生成的数据帧:</p>
^{pr2}$
<hr/>
<p>Investopedia对<a href="https://www.investopedia.com/terms/d/drawdown.asp" rel="nofollow noreferrer">drawdown</a>的定义。在</p>