我有一个 psql 数据库,其中包含各种股票的时间序列值。我想知道,如果股票价值在过去 45 天内增加了 50%。我想检测曲线的这种突然变化。现在,我的重点是增加价值。主要是二次曲线,尽管找到线性/对数增加也很好。
稍后我会突然下降。关于我如何检测曲线中的这种模式的任何指示?是否可以在sql中做到这一点?我也愿意学习任何数学分析工具或语言。
我有一个 psql 数据库,其中包含各种股票的时间序列值。我想知道,如果股票价值在过去 45 天内增加了 50%。我想检测曲线的这种突然变化。现在,我的重点是增加价值。主要是二次曲线,尽管找到线性/对数增加也很好。
稍后我会突然下降。关于我如何检测曲线中的这种模式的任何指示?是否可以在sql中做到这一点?我也愿意学习任何数学分析工具或语言。
为了获得这种信息,可以采取许多方法。如果此报告将每隔一段时间运行一次,那么您可以有一个 SQL 查询,该查询将在较早的日期将表连接到自身。假设您有日期、stock_ticker 和 price 作为字段,查询可能如下所示:
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 子句为其命名,或对其进行其他工作。
如果您不只是在寻找一段时间内的比率,您可以使用相同的技术来获取每日平均值,并使用该数据找到移动平均线。