第一个例子
例子:计算每一个股票的统计概况和月回报
首先,随机生成两只股票在三个月的月末股价及月度交易量。
$ id=take(`ABC`XYZ, 6).sort!()
$ time=take(2015.01M..2015.03M,6)
$ price=norm(100,10,3) join norm(50,5,3)
$ volume=norm(2000,400,3) join norm(1000,300,3);
$ data=table(id, time, price.round(2) as price, volume.round(0) as volume);
$ data;
id |
time |
price |
volume |
---|---|---|---|
ABC |
2015.01M |
96.56 |
1785 |
ABC |
2015.02M |
90.07 |
1861 |
ABC |
2015.03M |
88 |
2155 |
XYZ |
2015.01M |
49.95 |
1253 |
XYZ |
2015.02M |
43.19 |
349 |
XYZ |
2015.03M |
47.68 |
890 |
然后,计算每个股票的平均,最小和最大值。我们的语法与标准SQL相同。
select avg(volume) as avgVolume, min(volume) as minVolume, max(volume) as maxVolume from data group by id;
id |
avgVolume |
minVolume |
maxVolume |
---|---|---|---|
ABC |
1933.666667 |
1785 |
2155 |
XYZ |
830.666667 |
349 |
1253 |
最后,计算每只股票每月的收益率。context by语句是DolphinDB对标准SQL的扩展之一,使得处理面板数据非常方便。
select id, time, eachPre(ratio, price)-1 as ret from data context by id;
id |
time |
ret |
---|---|---|
ABC |
2015.01M |
|
ABC |
2015.02M |
-0.067212 |
ABC |
2015.03M |
-0.022982 |
XYZ |
2015.01M |
|
XYZ |
2015.02M |
-0.135335 |
XYZ |
2015.03M |
0.103959 |