Как подсчитать общий тренд?
Построить линию линейной регрессии. По знаку коэффициента  a  ( в некоторых книгах он называется коэффициентом b1, в общем - это коэффициент при Х ) определяется возрастающий или ниспадающий тренд у набора.  
В Python, в библиотеке sklearn для этих целей есть функция LinearRegression.
На самом деле, самое трудное - определить то, что вы очевидно назвали "flat" -  т.е. отсутствие тренда. Для этого мало определить сам указанный коэффициент, но надо посчитать его доверительный интервал и понять, захватывает-ли он 0.
Написал такую функцию, для моих целей то что нужноfrom sklearn.linear_model import LinearRegression


def get_trand(l):
    data = [[i] for i in l]
    x = [[i] for i in range(len(l))]
    lr = LinearRegression().fit(x, data)
    a = lr.coef_[0][0]
    a = round(a, ndigits=1)

    if a > 0:
        return 'up'
    elif a < 0:
        return 'down'
    else:
        return 'flat'

l = [29, 21, 40, 23, 19, 50, 34, 10, 42, 59]
print(get_trand(l))