I’m trying to find how the “50D” rolling mean is being calculated in the following example because really I cannot find the way.
import pandas as pd
values = [np.nan, -0.00076194, -0.01189744, -0.00062106, -0.00534628, -0.00331957, -0.00337944, 0.00630714, -0.00330637, -0.0045095 , 0.00064805, -0.01268343, -0.00614887, 0.00275657, -0.00440909, 0.00590626, -0.02339615, -0.01969567, 0.01092916, 0.01058356, -0.00758719, 0.00478345, -0.0023437 , 0.00288798, 0.0101454 , -0.0121736 , 0.01344621, -0.01383092, 0.00110947, -0.0004417 , -0.00088272, 0.00809808, -0.00034199, -0.00580861, 0.00621907, -0.00041045, -0.00292563, 0.00129668, -0.00427033, 0.00053285, 0.0021681 , -0.01402614, -0.00388071, 0.00153033, 0.00027945, -0.00899464, -0.00452222, -0.01700942, -0.00115979, -0.01157867, -0.01504971, 0.00732653, -0.01370921, 0.00867434, 0.00237124, 0.02349419, -0.01682703, 0.01467014, 0.01087479, -0.00393254, 0.00534539, -0.00678344, -0.00013054, -0.00503799, -0.00854087, 0.00295728, 0.00931616, 0.01194195, -0.00606532, -0.01017215, -0.003598 , -0.01083424, -0.00556437, -0.00348464, 0.006992 , 0.00278279, 0.00735125, 0.00506792, -0.00582055, -0.00053721, -0.00148132, 0.00828239, 0.00497641, 0.00082642, 0.00834549, 0.01315036, 0.00898724, -0.00256485, -0.00329441, 0.00332798, 0.01377536, -0.00836893, -0.0047126 , -0.00444542, 0.00688868, 0.01143246, 0.00478997, 0.00350752, -0.01044042, -0.01597756]
index = pd.to_datetime(['2015-01-01', '2015-01-02', '2015-01-05', '2015-01-06', '2015-01-07', '2015-01-08', '2015-01-09', '2015-01-12', '2015-01-13', '2015-01-14', '2015-01-15', '2015-01-16', '2015-01-19', '2015-01-20', '2015-01-21', '2015-01-22', '2015-01-23', '2015-01-26', '2015-01-27', '2015-01-28', '2015-01-29', '2015-01-30', '2015-02-02', '2015-02-03', '2015-02-04', '2015-02-05', '2015-02-06', '2015-02-09', '2015-02-10', '2015-02-11', '2015-02-12', '2015-02-13', '2015-02-16', '2015-02-17', '2015-02-18', '2015-02-19', '2015-02-20', '2015-02-23', '2015-02-24', '2015-02-25', '2015-02-26', '2015-02-27', '2015-03-02', '2015-03-03', '2015-03-04', '2015-03-05', '2015-03-06', '2015-03-09', '2015-03-10', '2015-03-11', '2015-03-12', '2015-03-13', '2015-03-16', '2015-03-17', '2015-03-18', '2015-03-19', '2015-03-20', '2015-03-23', '2015-03-24', '2015-03-25', '2015-03-26', '2015-03-27', '2015-03-30', '2015-03-31', '2015-04-01', '2015-04-02', '2015-04-03', '2015-04-06', '2015-04-07', '2015-04-08', '2015-04-09', '2015-04-10', '2015-04-13', '2015-04-14', '2015-04-15', '2015-04-16', '2015-04-17', '2015-04-20', '2015-04-21', '2015-04-22', '2015-04-23', '2015-04-24', '2015-04-27', '2015-04-28', '2015-04-29', '2015-04-30', '2015-05-01', '2015-05-04', '2015-05-05', '2015-05-06', '2015-05-07', '2015-05-08', '2015-05-11', '2015-05-12', '2015-05-13', '2015-05-14', '2015-05-15', '2015-05-18', '2015-05-19', '2015-05-20'])
df = pd.DataFrame(data=values, index=index, columns=["returns"])
df["rolling_50"] = df["returns"].rolling(50).mean()
df["rolling_50D"] = df["returns"].rolling("50D").mean()
df.dropna()
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>returns</th>
<th>rolling_50</th>
<th>rolling_50D</th>
</tr>
</thead>
<tbody>
<tr>
<th>2015-03-12</th>
<td>-0.015050</td>
<td>-0.002742</td>
<td>-0.002511</td>
</tr>
<tr>
<th>2015-03-13</th>
<td>0.007327</td>
<td>-0.002580</td>
<td>-0.002472</td>
</tr>
<tr>
<th>2015-03-16</th>
<td>-0.013709</td>
<td>-0.002616</td>
<td>-0.002203</td>
</tr>
<tr>
<th>2015-03-17</th>
<td>0.008674</td>
<td>-0.002430</td>
<td>-0.001415</td>
</tr>
<tr>
<th>2015-03-18</th>
<td>0.002371</td>
<td>-0.002276</td>
<td>-0.001653</td>
</tr>
<tr>
<th>2015-03-19</th>
<td>0.023494</td>
<td>-0.001740</td>
<td>-0.001294</td>
</tr>
<tr>
<th>2015-03-20</th>
<td>-0.016827</td>
<td>-0.002009</td>
<td>-0.001551</td>
</tr>
<tr>
<th>2015-03-23</th>
<td>0.014670</td>
<td>-0.001841</td>
<td>-0.001276</td>
</tr>
<tr>
<th>2015-03-24</th>
<td>0.010875</td>
<td>-0.001558</td>
<td>-0.000909</td>
</tr>
<tr>
<th>2015-03-25</th>
<td>-0.003933</td>
<td>-0.001546</td>
<td>-0.001098</td>
</tr>
<tr>
<th>2015-03-26</th>
<td>0.005345</td>
<td>-0.001452</td>
<td>-0.001232</td>
</tr>
<tr>
<th>2015-03-27</th>
<td>-0.006783</td>
<td>-0.001334</td>
<td>-0.001082</td>
</tr>
<tr>
<th>2015-03-30</th>
<td>-0.000131</td>
<td>-0.001214</td>
<td>-0.001459</td>
</tr>
<tr>
<th>2015-03-31</th>
<td>-0.005038</td>
<td>-0.001370</td>
<td>-0.001215</td>
</tr>
<tr>
<th>2015-04-01</th>
<td>-0.008541</td>
<td>-0.001452</td>
<td>-0.001483</td>
</tr>
<tr>
<th>2015-04-02</th>
<td>0.002957</td>
<td>-0.001511</td>
<td>-0.001388</td>
</tr>
<tr>
<th>2015-04-03</th>
<td>0.009316</td>
<td>-0.000857</td>
<td>-0.001105</td>
</tr>
<tr>
<th>2015-04-06</th>
<td>0.011942</td>
<td>-0.000224</td>
<td>-0.000998</td>
</tr>
<tr>
<th>2015-04-07</th>
<td>-0.006065</td>
<td>-0.000564</td>
<td>-0.001157</td>
</tr>
<tr>
<th>2015-04-08</th>
<td>-0.010172</td>
<td>-0.000979</td>
<td>-0.001279</td>
</tr>
<tr>
<th>2015-04-09</th>
<td>-0.003598</td>
<td>-0.000900</td>
<td>-0.001551</td>
</tr>
<tr>
<th>2015-04-10</th>
<td>-0.010834</td>
<td>-0.001212</td>
<td>-0.001841</td>
</tr>
<tr>
<th>2015-04-13</th>
<td>-0.005564</td>
<td>-0.001276</td>
<td>-0.001914</td>
</tr>
<tr>
<th>2015-04-14</th>
<td>-0.003485</td>
<td>-0.001404</td>
<td>-0.002047</td>
</tr>
<tr>
<th>2015-04-15</th>
<td>0.006992</td>
<td>-0.001467</td>
<td>-0.001734</td>
</tr>
<tr>
<th>2015-04-16</th>
<td>0.002783</td>
<td>-0.001168</td>
<td>-0.001672</td>
</tr>
<tr>
<th>2015-04-17</th>
<td>0.007351</td>
<td>-0.001290</td>
<td>-0.001528</td>
</tr>
<tr>
<th>2015-04-20</th>
<td>0.005068</td>
<td>-0.000912</td>
<td>-0.000997</td>
</tr>
<tr>
<th>2015-04-21</th>
<td>-0.005821</td>
<td>-0.001050</td>
<td>-0.001051</td>
</tr>
<tr>
<th>2015-04-22</th>
<td>-0.000537</td>
<td>-0.001052</td>
<td>-0.001109</td>
</tr>
<tr>
<th>2015-04-23</th>
<td>-0.001481</td>
<td>-0.001064</td>
<td>-0.001157</td>
</tr>
<tr>
<th>2015-04-24</th>
<td>0.008282</td>
<td>-0.001060</td>
<td>-0.000678</td>
</tr>
<tr>
<th>2015-04-27</th>
<td>0.004976</td>
<td>-0.000954</td>
<td>-0.000414</td>
</tr>
<tr>
<th>2015-04-28</th>
<td>0.000826</td>
<td>-0.000821</td>
<td>0.000082</td>
</tr>
<tr>
<th>2015-04-29</th>
<td>0.008345</td>
<td>-0.000779</td>
<td>0.000346</td>
</tr>
<tr>
<th>2015-04-30</th>
<td>0.013150</td>
<td>-0.000508</td>
<td>0.001033</td>
</tr>
<tr>
<th>2015-05-01</th>
<td>0.008987</td>
<td>-0.000269</td>
<td>0.001700</td>
</tr>
<tr>
<th>2015-05-04</th>
<td>-0.002565</td>
<td>-0.000347</td>
<td>0.001426</td>
</tr>
<tr>
<th>2015-05-05</th>
<td>-0.003294</td>
<td>-0.000327</td>
<td>0.001715</td>
</tr>
<tr>
<th>2015-05-06</th>
<td>0.003328</td>
<td>-0.000271</td>
<td>0.001566</td>
</tr>
<tr>
<th>2015-05-07</th>
<td>0.013775</td>
<td>-0.000039</td>
<td>0.001883</td>
</tr>
<tr>
<th>2015-05-08</th>
<td>-0.008369</td>
<td>0.000074</td>
<td>0.000998</td>
</tr>
<tr>
<th>2015-05-11</th>
<td>-0.004713</td>
<td>0.000057</td>
<td>0.001335</td>
</tr>
<tr>
<th>2015-05-12</th>
<td>-0.004445</td>
<td>-0.000062</td>
<td>0.000804</td>
</tr>
<tr>
<th>2015-05-13</th>
<td>0.006889</td>
<td>0.000070</td>
<td>0.000693</td>
</tr>
<tr>
<th>2015-05-14</th>
<td>0.011432</td>
<td>0.000479</td>
<td>0.001120</td>
</tr>
<tr>
<th>2015-05-15</th>
<td>0.004790</td>
<td>0.000665</td>
<td>0.001104</td>
</tr>
<tr>
<th>2015-05-18</th>
<td>0.003508</td>
<td>0.001075</td>
<td>0.001390</td>
</tr>
<tr>
<th>2015-05-19</th>
<td>-0.010440</td>
<td>0.000890</td>
<td>0.001104</td>
</tr>
<tr>
<th>2015-05-20</th>
<td>-0.015978</td>
<td>0.000802</td>
<td>0.000800</td>
</tr>
</tbody>
</table>
</div>
As you can see, after 50 rows (preceding rows are np.nan in the column “rolling_50”) the value of the column “rolling_50” is different than the value in “rolling_50D”. Shouldn’t both have been calculated in the same way (because each row is a day) ?