10 分钟数据如何计算分钟收益率

有一个分钟级别的数据table,有以下几列,date(日期,如2022-01-01),time(现在第几分钟,如9:00:00),stock_name,close(每分钟的收盘价)。我要计算,每分钟的收益率。得到一张新的表格,有date,stock_name ,time,pct_change这几列,其中pct_change列是计算的分钟收益率。


想到的是用 select date, stock_name, time, close/mfirst(close,2)-1 as pct_change from tablecontext by stock_name date sort by time
不知道哪些细节上或者函数上用的不对,小白求指导

请先 登录 后评论

1 个回答

wfHuang
n = 100000
date = take(2019.11.07 2019.11.08, n)
time = (09:30:00.000 + rand(2*60*60*1000, n/2)).sort!() join (13:00:00.000 + rand(2*60*60*1000, n/2)).sort!()
timestamp = concatDateTime(date, time)
price = 100+cumsum(rand(0.02, n)-0.01)
volume = rand(1000, n)
symbol = rand(`600519`000001`600000`601766, n)
trade = table(symbol, timestamp, price, volume).sortBy!(`symbol`timestamp)

select
    min,
    close,
    ratios(close) - 1 as pct_change
from (
select last(price) as close
from trade group by bar(timestamp, 1m) as min
)


min                     close               pct_change        
----------------------- ------------------- ------------------
2019.11.07T09:30:00.000 100.07555613060947                    
2019.11.07T09:31:00.000 99.91424092340749   -0.001611934156943
2019.11.07T09:32:00.000 99.881479845819995  -0.000327891973003
2019.11.07T09:33:00.000 99.969592652334824  0.000882173618681
请先 登录 后评论
  • 1 关注
  • 0 收藏,247 浏览
  • tinaye 提出于 2024-03-13 22:05

相似问题