Take the calculation formula of Alpha#98 for example, and the data we use is the daily data from the New York Stock Exchange.
Expand|Select|Wrap|Line Numbers
- Kakushadze et al 2015 Alpha #98:
- (rank(decay_linear(correlation(vwap, sum(adv5, 26.4719), 4.58418), 7.18088)) -
- rank(decay_linear(Ts_Rank(Ts_ArgMin(correlation(rank(open), rank(adv15), 20.8187), 8.62571), 6.95668), 8.07206)))
Image description
calculation formula of Alpha#98
We can significantly reduce the development cost of complex calculations such as Alpha#98 by using DolphinDB’s built-in functions with panel data (in matrix form).
Image description
code of Python
⬇️
Image description
code of DolphinDB
Why is DolphinDB’s code so concise and elegant? 😲
On the one hand, using panel data provided by DolphinDB to implement the Alpha#98 factor simplifies the calculation logic and makes the code very precise. Panel data is a matrix that combines cross-sectional data and time-series data.
Image description
DolphinDB panel data
On the other hand, DolphinDB has more than 1,500 built-in functions and many of them are optimized. You can implement all 101 alphas with DolphinDB built-in functions.
Image description
DolphinDB built-in functions
Let’s take a look at DolphinDB script, which is very similar to the original formulas.
Expand|Select|Wrap|Line Numbers
- def alpha98Panel(vwap, open, vol){
- return tsRank(mavg(mcorr(vwap, msum(mavg(vol, 5), 26), 5), 1..7)) - tsRank(mavg(mrank(9 - mimin(mcorr(tsRank(open),
- tsRank(mavg(vol, 15)), 21), 9), true, 7), 1..8))
- }
Image description
time cost in DolphinDB
Furthermore, DolphinDB supports unified stream and batch processing. It provides the streamEngineParser function to automatically form a pipeline of stream engines to carry out the specified metrics calculation. You can directly use the Alpha#98 function as the metrics, with no need to modify the script for metrics calculation.
Click the demo below to get more info!
https://youtu.be/B0lYBAI_FEc