请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3365816 新帖:23

TTM指标的计算方式

我是小编发表于:5 月 10 日 02:52回复(1)

所谓的TTM,其实就是Trailing twelve months的缩写,是最近12个月的意思。

为什么要使用TTM这个概念呢?

因为同比的数据时效性太慢,环比的数据噪音又太多,而TTM可以在一定程度上弥补这样的缺陷。

TTM数据,其实就是滚动过去12个月,始终包含各个季度的财报数据,如:

1、2、3、4
2、3、4、1
3、4、1、2
4、1、2、3

这样两个季度之间的TTM数据比较,其中会有3个季度数据的重合,1个季度的数据存在差异。

这样就能过滤一些小差异,例如季节性差异带来的影响,进而更加客观地反应上市公司的真实情况。

TTM数据的具体计算方式,可以参考中证指数计算方法:

例如:

date = '2017-03-01'

# 年
year = int(date[:4])
# 月日
month_and_day = date[5:10]

# 季度列表
if month_and_day < '05-01':
    statDate_list = [str(year-2) + "q4", str(year-1) + "q1", str(year-1) + "q2", str(year-1) + "q3"]
elif month_and_day >= '05-01' and month_and_day < '09-01':
    statDate_list = [str(year-1) + "q2", str(year-1) + "q3", str(year-1) + "q4", str(year) + "q1"]
elif month_and_day >= '09-01' and month_and_day < '11-01':
    statDate_list = [str(year-1) + "q3", str(year-1) + "q4", str(year) + "q1", str(year) + "q2"]
elif month_and_day >= '11-01':
    statDate_list = [str(year-1) + "q4", str(year) + "q1", str(year) + "q2", str(year) + "q3"]

print date
print statDate_list
2017-03-01
['2015q4', '2016q1', '2016q2', '2016q3']
def get_factor(statDate):
    # 获取多只股票在某一日期的市值, 利润
    df = get_fundamentals(query(
            valuation.code, income.net_profit
        ).filter(
            # 这里不能使用 in 操作, 要使用in_()函数
            valuation.code.in_(['000001.XSHE','601939.XSHG','600789.XSHG'])
        ), statDate = statDate)

    df['statDate']=statDate
    return df
from pandas import DataFrame
import pandas as pd
df_list = []
for statDate in statDate_list:
    df_temp = get_factor(statDate)
    df_list.append(df_temp)
   
fac_df = pd.concat(df_list)
fac_df.pivot(index='statDate',columns='code',values='net_profit').sum()
code
000001.XSHE    2.284400e+10
600789.XSHG    2.905930e+07
601939.XSHG    2.314800e+11
dtype: float64
 

全部回复

0/140

量化课程

    移动端课程