我是 SQL 新手,我认为我并没有真正完全掌握它。
我第二个选择的项目,在日期之后,给了我 (∑r*mv)/(∑mv),这是投资组合的加权回报。接下来的两SUM
列尝试根据我选择的值对回报进行加权。
SELECT
date,
Sum(mv*retmtd)/Sum(mv),
SUM(DISTINCT retmtd*
CASE asset
WHEN 'SP500' then 200000
WHEN 'UST2' then 200000
WHEN 'FTSE' then 600000
END)/1000000,
SUM( retmtd*
CASE
WHEN asset ='SP500' AND mv IS NOT NULL then 200000
WHEN asset ='UST2' AND mv IS NOT NULL then 200000
WHEN asset ='FTSE' AND mv IS NOT NULL then 600000
END)/
SUM( CASE
WHEN asset ='SP500' AND mv IS NOT NULL then 200000
WHEN asset ='UST2' AND mv IS NOT NULL then 200000
WHEN asset ='FTSE' AND mv IS NOT NULL then 600000
END)
FROM [dbo].[AssetRet]
WHERE
asset IN ('SP500','UST2','FTSE')
AND
date >= '12/31/2000'
无论如何,我是否 mv
在整个生命周期内手动更改设置值(例如 200000),以便我可以看到不同加权投资组合的表现如何。这应该是动态的和可重用的,所以如果我想一遍又一遍地在数据库中创建一个新列是不可行的。我的 SQL 尝试似乎都没有得到正确的答案。
本练习的目的是创建综合投资组合,以显示如果在投资组合的生命周期内对不同资产类别赋予不同的权重,投资组合的表现将如何。我希望这是有道理的。
例如,我将使用静态假设值(200000)代替mv
(头寸的市场价值)来衡量投资组合中的资产
该表是Sum(mv*retmtd)/Sum(mv)
正确的返回
Date SP500 UST2 FTSE MV MV MV RESULT
3/31/10 0.34 19878 0.34
6/30/10 -0.11 0.12 19954 840712 0.116
6/30/13 -0.48 -1.30 -0.76 9914 934892 384193 -1.135
这就是我希望其他查询检索的内容
Date SP500 UST2 FTSE MV MV MV RESULT
3/31/10 0.34 200000 0.34
6/30/10 -0.11 0.12 200000 200000 0.006
6/30/13 -0.48 -1.30 -0.76 200000 200000 600000 -0.809
有没有办法通过 SQL 做到这一点?