第一个例子

例子:计算每一个股票的统计概况和月回报

首先,随机生成两只股票在三个月的月末股价及月度交易量。

$ 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