我有一张股票价格表,我想从中计算下跌金额。
Ticker Date price
ABC 01/01/13 100.00
ABC 01/02/13 101.50
ABC 01/03/13 99.80
ABC 01/04/13 95.50
ABC 01/05/13 78.00
XYZ 01/01/13 11.50
XYZ 01/02/13 12.10
XYZ 01/03/13 13.15
XYZ 01/04/13 14.10
XYZ 01/05/13 15.55
我将亏损定义为最高价格(最高和包括该日期)减去当前价格除以最高价格之间的差额。
这里的每日最高价格和每日缩编应该是这样的:
Ticker Date price max drawdown
ABC 01/01/13 100.00 100.00 0.0%
ABC 01/02/13 101.50 101.50 0.0%
ABC 01/03/13 99.80 101.50 1.7%
ABC 01/04/13 95.50 101.50 5.9%
ABC 01/05/13 78.00 101.50 23.2%
XYZ 01/01/13 11.50 11.50 0.0%
XYZ 01/02/13 12.10 12.10 0.0%
XYZ 01/03/13 13.15 17.15 0.0%
XYZ 01/04/13 14.10 14.10 17.8%
XYZ 01/05/13 15.55 15.55 9.3%
我知道如何为整个数据集计算一个最大亏损,但我正在努力改进适用于个别股票的每日亏损。
;WITH x AS
( SELECT [drop] = ((s.price-e.price)/s.price) *100
FROM [temp] AS s
INNER JOIN [temp] AS e
ON s.[Date] < e.[Date]
AND s.price > e.price
)
SELECT [Largest Drawdown] = MAX([drop]) FROM x;
Largest Drawdown
87.900000000000000
此缩编计算整个数据集的最高价格(ABC为101.50)和数据集的最低价格(XYZ = 11.50),以获得最大的降幅87.9%
如何计算每只股票的每日下跌?
答案 0 :(得分:1)
这听起来像一个窗口功能:
[]