检测时间序列中的趋势

4
我有一个包含各种股票时间序列值的psql数据库,我想找出股票价值是否在过去45天内增长了50%。我想检测曲线中这样突然的变化。现在,我的重点是增值。大多数是二次曲线,尽管找到线性/对数增加也很不错。我之后会研究突然下降的情况。如何检测曲线中这样的模式?是否可以在sql中完成?我也愿意学习任何数学分析工具或语言。

能否分享表定义? - Clodoaldo Neto
1个回答

2
为了获取这种类型的信息,有很多方法可以采用。如果这份报告只需要定期运行一次,那么您可以编写一个SQL查询语句,将表连接到旧日期上。假设您有日期、股票代码和价格作为字段,查询可能会像这样:
         SELECT base.date, 
                base.stock_ticker, 
                ((base.price - old.price) / old.price) as gain 
           FROM stocks as base
LEFT OUTER JOIN stocks as old
             ON base.stock_ticker = old.stock_ticker
            AND base.date = old.date + cast('45 days' as interval)

这将为您提供一个表格,其中包含日期、股票代码以及自45天前价格以来涨幅的数量。有了这个,您可以将其用作子查询、使用WITH子句别名或对其进行其他处理。
如果您不仅仅是想要一个时间段内的比率,您可以使用相同的技术获取每日平均值,并通过该数据找到移动平均线。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接