Я - пользователь Stata и пытаюсь скопировать некоторый код на Python.
В частности, я хочу создать новый столбец с именем port
.
В Stata мой код для достижения желаемого результата:
egen port = xtile(marketcap), nquantiles(10) by(date)
Функция xtile()
является частью пакета , предоставленного сообществом egenmore
.
Приведенная выше команда egen
создает переменную с именем port
, которая возвращает число от 1
до 10
для каждого наблюдения, которое зависит от переменной marketcap
для каждой даты.
Функция xtile
определяет используемую нами переменную (marketcap
), а опция nquantiles
разбивает данные на теркилы.Тикеры, рыночная капитализация которых находится в верхнем терциле, кодируются как 1
, второй по величине терциль как 2
и т. Д., Пока тикеры, рыночная капитализация которых находится в нижней терциле, не будут кодироваться как 10
.Результатом является число в переменной port
для каждого тикера на каждую дату.Это происходит из-за того, что рыночная капитализация компаний меняется между месяцами и, следовательно, будет находиться в разных территориях в разные месяцы.
Я использую месячные данные временных рядов (10+ лет), но включаю данные за 10 тикеров за 2 месяца:
df.head()
date ticker return marketcap
2004m1 A 0.02500 2.500117e+10
2004m1 B 0.04000 3.600111e+10
2004m1 C -0.01500 4.900222e+11
2004m1 D -0.02500 1.400134e+10
2004m1 E -0.04000 3.200288e+10
2004m1 F -0.01200 9.300110e+10
2004m1 G 0.03500 5.500512e+12
2004m1 H 0.04600 2.100177e+11
2004m1 I 0.00500 3.300155e+10
2004m1 J 0.00750 2.400999e+13
2004m1 K 0.02500 7.700155e+10
2004m2 A 0.03500 2.600118e+10
2004m2 B 0.02000 3.300333e+10
2004m2 C -0.00500 4.500477e+11
2004m2 D 0.01100 1.800155e+10
2004m2 E -0.02000 3.500288e+10
2004m2 F 0.01200 3.001109e+11
2004m2 G 0.04200 5.700442e+12
2004m2 H 0.01100 2.800888e+11
2004m2 I 0.01900 3.600115e+10
2004m2 J 0.00550 2.100333e+13
2004m2 K -0.01500 5.001550e+10