Отследите исторический временной ряд для торговой стратегии настроения рынка.Ошибка: аргумент типа 'numpy.bool_' не повторяется - PullRequest
0 голосов
/ 08 апреля 2019

Визуализация проблемы Здравствуйте!

Я занимаюсь разработкой торговой стратегии настроения рынка для своего инвестиционного класса.По сути, в настоящее время стратегия состоит из продажи рыночного индекса в зонах 1 и 3 и покупки (удержания) рыночного индекса в зонах 2 и 4. Зоны разделены на три линии: верхняя (среднеквадратическое отклонение + отклонение от стандартного отклонения), нижняя (среднегодовая оценка).- стандартное отклонение) и среднее значение предыдущего рассчитанного индикатора Market Sentiment.

Я хочу улучшить программу, покупая рыночный индекс, как только вы входите в зону 4, и выходите из рынка только после того, как вы попали в зону 1.и наоборот.Поэтому зоны 2 и 3 имеют свои результаты, основанные на том, откуда исходит тренд (если он вошел в зону 1 или зону 4).

Как я могу это сделать?

Спасибо за вашу помощь!

 for i in range(data.shape[0]) :


        Zone_1 = data.loc[i,"Market Sentiment"] > data.loc[i,'Upper Bound']
        Zone_2 = data.loc[i,"Market Sentiment"] > data.loc[i,'Average Sentiment'] and data.loc[i,"Market Sentiment"] <= data.loc[i,'Upper Bound']
        Zone_3 = data.loc[i,"Market Sentiment"] > data.loc[i,'Lower Bound'] and data.loc[i,"Market Sentiment"] <= data.loc[i,'Average Sentiment']
        Zone_4 = data.loc[i,"Market Sentiment"] <= data.loc[i,'Lower Bound']

        if Zone_1:
            tracker = "n"
            list1.append(data.loc[i,'risk free rate']) 

        elif Zone_2 and data.loc[i-1,"Market Sentiment"] in Zone_1:
            tracker = 'down'
            list1.append(data.loc[i,'risk free rate']) 
        elif Zone_2 and data.loc[i-1,"Market Sentiment"] in Zone_2:
            if data.loc[i-1,'tracker'] == 'down':
                list1.append(data.loc[i,'HS300 Index Return'])
            else:
                list1.append(data.loc[i,'risk free rate'])

        elif Zone_2 and data.loc[i-1,'Market Sentiment'] in Zone_3:
            tracker = 'up'
            list1.append(data.loc[i,'HS300 Index Return'])

        elif Zone_3 and data.loc[i-1,'Market Sentiment'] in Zone_2:
            tracker = 'down'
            list1.append(data.loc[i,"risk free rate"])

        elif Zone_3 and data.loc[i-1,'Market Sentiment'] in Zone_3:
            if data.loc[i-1,'tracker'] == 'down':
                list1.append(data.loc[i,'risk free rate'])
            else:
                list1.append(data.loc[i,'HS300 Index Return'])
            list1.append(data.loc[i,'HS300 Index Return'])

        elif Zone_3 and data.loc[i-1,'Market Sentiment'] in Zone_4:
            tracker = 'up'
            list1.append(data.loc[i,'HS300 Index Return'])

        elif Zone_4:
            list1.append(data.loc[i,"HS300 Index Return"]) 

    data['Strategy Return'] = list1
    data['Tracker'] = tracker
    pd.options.display.float_format = '{:.4f}'.format
    return data
...