Как настроить скользящее среднее для еженедельного анализа? - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно построить скользящее среднее на основе еженедельных интервалов, таких как 3-недельный интервал или 21 день, но при корректировке на пропущенные даты он теперь считается 0 и, следовательно, дает неверный результат.

from nsepy import get_history as gh
from datetime import date
import pandas as pd

nifty = gh(symbol="NIFTY IT", 
                    start=date(2015,1,1), 
                    end=date(2016,1,3),
                    index=True)
idx = pd.date_range('01-01-2015', '01-01-2016')
nifty.index = pd.DatetimeIndex(nifty.index)
nifty = nifty.reindex(idx, fill_value=0)
nifty["3weekMA"]=nifty["Close"].rolling(21).mean()
nifty[nifty.Open != 0]

Что можно сделать для решения этой проблемы.

Это фактический результат: ![enter image description here

И желаемый результат должен быть примерно таким:

![enter image description here

Это потому, что скользящее среднее для закрытия должно находиться в диапазоне 11000, а не 8000.

1 Ответ

0 голосов
/ 04 декабря 2018

Самое простое, что приходит на ум, - это просто удалить значения выходных из ваших данных:

nifty=nifty[nifty['Close']!=0]

и затем выполнить скользящее среднее:

nifty["3weekMA"]=nifty["Close"].rolling(15).mean()

Просто вместо 21, используйте 15 и хорошо, это будет работать так, как должно.Есть несколько указателей на это, хотя.Скользящее среднее даст среднее из последних 15 значений, но проблема в том, что оно приводит к 15-му или 21-му значению в вашем случае, поэтому результирующий график будет выглядеть примерно так:

enter image description here

Итак, чтобы решить эту проблему, все, что нам нужно сделать, это, возможно, сдвинуть новую найденную скользящую среднюю вверх или, может быть, просто построить значения Close после первых 7 и до последних 7 вместе со значениями скользящей средней, и это будет выглядеть как-токак:

plt.figure(figsize=(10,8))
plt.plot(nifty['Close'].values.tolist()[7:-7])
plt.plot(nifty['3weekMA'].values.tolist()[14:])

enter image description here

Хорошо, но визуализация только для целей представления;Я надеюсь, вы понимаете, что делать с такими данными.Я надеюсь, что это решит вашу проблему, и да, значение скользящего среднего действительно приходит в 11Ks, а не в 8Ks.

Пример вывода:

        Date         Open       High        Low         Close       Volume      Turnover        3weekMA
        -------------------------------------------------------------------------------------------------
        2015-01-15  11672.30    11774.50    11575.10    11669.85    13882213    1.764560e+10    NaN
        2015-01-16  11708.85    11708.85    11582.85    11659.60    12368107    1.714690e+10    NaN
        2015-01-19  11732.50    11797.60    11629.05    11642.75    13696381    1.183750e+10    NaN
        2015-01-20  11681.80    11721.90    11635.70    11695.00    11021415    1.234730e+10    NaN
        2015-01-21  11732.45    11838.30    11659.70    11813.70    18679282    1.973070e+10    11418.113333
        2015-01-22  11832.55    11884.50    11782.95    11850.85    15715515    1.655670e+10    11460.456667
        2015-01-23  11877.90    11921.00    11767.40    11885.15    30034833    2.001210e+10    11494.660000
        2015-01-27  11915.60    11917.25    11679.55    11693.45    17005337    1.866840e+10    11524.320000
        2015-01-28  11712.55    11821.80    11693.80    11809.55    16876897    1.937590e+10    11580.963333
        2015-01-29  11812.35    11861.50    11728.75    11824.15    15520902    2.160790e+10    11641.506667
        2015-01-30  11998.35    12003.35    11799.35    11824.75    18559078    2.905950e+10    11695.280000
        2015-02-02  11871.35    11972.60    11847.80    11943.95    17272113    2.304050e+10    11731.566667
        2015-02-03  11963.75    12000.65    11849.00    11963.90    21053605    1.770590e+10    11759.583333
...