2013-08-01 57 views
4

我有一个psql数据库,包含各种股票的时间序列值。我想找到,如果在过去的45天内股票价值增加了​​50%。我想检测曲线中的这种突然变化。现在,我的重点是增加价值。大多是二次曲线,尽管找到线性/对数增量也不错。检测时间序列趋势

以后我会突然下降。任何指向我如何检测曲线中的这种模式?是否有可能在SQL中做到这一点?我也乐于学习任何数学分析工具或语言。

+0

小心共享表定义? –

回答

2

要获得这样的信息,可以采取很多方法。如果这个报告将每隔一段时间运行一次,那么你可以有一个SQL查询,它会在旧的日期将表加入到自己的表中。假设你有一个日期,STOCK_TICKER和价格作为字段,查询可能是这个样子:

  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子句对其进行别名,或者对其进行其他工作。

如果您不是在一段时间内只是寻找一个比例,您可以使用相同的技术来获取日平均值,并且该数据找到移动平均值。