C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and contiguous memory storage
Bug fixes, including in DateTime, is_equal(), write() Rearranged code to make it easier to compile as DLL Significantly improved docs both in terms of format and content Implemented Percent Price Oscillator visitor Added consolidated() for 4 and 5 columns Added another version of shift() to return a copy of a single shifted column Implemented Ulcer Index visitor Completely redesigned groupby() interface and made it significantly more versatile Completely redesigned bucketize() interface and made it significantly more versatile Implemented Count visitor Added ISO date format to DateTime Implemented ability to read()/write() DateTime as strings into streams Fixed a few move semantics to improve memory efficiency
Improved documentation Minor bug fixes including a bug in MassIndexVisitor Implemented CCIVisitor (Commodity Channel Index) Implemented gen_triangular_nums() Rearranged code Implemented EntropyVisitor (information entropy) Implemented GarmanKlassVolVisitor (Garman Klass volatility) Implemented YangZhangVolVisitor (Yang Zhang volatility) Added columns_only flag to read()/write() Added non-zero flag option to DiffVisitor Implemented KamaVisitor (Kaufman's Adaptive Moving Average) Implemented FisherTransVisitor (Fisher transform) Implemented SlopeVisitor Implemented UltimateOSCIVisitor (Ultimate Oscillator)
Fixed bugs, notably:
Streamlined and simplified code Enhanced documentations Implemented gen_even_space_nums() Generalized read/write to take either file name or stream Made columns to have deterministic order. Now you can access columns either by name or index With column order, implemented left/right rotating and shifting Implemented remove_duplicates() for a single column Implemented TTestVisitor Implemented MassIndexVisitor Implemented WeightedMeanVisitor Added in_reverse to visit() methods Implemented QuadraticMeanVisitor Implemented HullRollingMeanVisitor Implemented RollingMidValueVisitor Implemented DrawdownVisitor Added single_act_visit() for 3 and 4 columns Implemented WilliamPrcRVisitor Added repeat_count to ExponentialRollAdopter, so we can have multiple smoothing in one call Added repeat_count to ExpoSmootherVisitor
Added weights and residual calculations to PolyFitVisitor Implemented LogFitVisitor Implemented ExpoSmootherVisitor (exponential smoothing) Implemented HWExpoSmootherVisitor (Holt-Winters double exponential smoothing) Implemented consolidate() Specialized std::hash for DateTime Implemented [Max|Min]SubArrayVisitor (sub-intervals with max/min sums) Replaced all Max/Min’s with Extremums visitors and typedef’ed Max/Min Implemented LowessVisitor (Locally Weighted Scatterplot Smoothing) Implemented StepRollAdopter Implemented DecomposeVisitor (STL time-series decomposer) with additive and multiplicative options Enhanced documentations Fixed bugs and compile issues
Improve single-act-visitor interface to be more flexible Bug fixes Enhanced documentation Implemented gen_log_space_nums() to generate logarithmically-spaced numbers Implemented remove_duplicates() Enhanced group-by functionality and made it more generalized Implemented io_format::csv2 to read/write files in Pandas csv format Implemented empty() and shapeless() Implemented Box-Cox visitor Implemented Normalize and Standardize visitors Implemented Hampel filter visitor Implemented Polynomial Fit visitor Implemented Hurst Exponent visitor
Enhanced documentation
Fixed all VSC++ warnings for 64bit compilation (we don’t compile 32bit anymore)
Implemented RankVisitor
Improved random number generation
Implemented SigmoidVisitor
Implemented combine() method
Added nodiscard
to some methods
Implemented RSIVisitor (Relative Strength Index)
Enhanced DateTime object Implemented get_columns_info method Implemented CategoryVisitor visitor Implemented FactorizeVisitor visitor Implemented pattern_match method Changed shrink_to_fit() to optimize for power of 2 cache line aliasing misses Implemented ClipVisitor visitor Significantly enhanced documentation both in terms of content and format Fixed a bug in DateTime object related to time zones Implemented SharpeRatioVisitor visitor
Added visit_async() and single_act_visit_async() methods Enhanced documentations Fixed many codacy complains Fixed a glitch in DateTime related to nanoseconds Added Conan package support, thanks to @yssource Added get retype_column() method Added load_align_column() method Brought the whole codebase to 100% compliance with C++ standards (using _GLIBCXX_DEBUG)
Added mid_point to fill_policy Added quantile visitor Added VWAP (Volume Weighted Average Price) visitor Added VWBAS (Volume Weighted Bid-Ask Spread) visitor Added concat() and self_concat() methods Added get_reindexed() and get_reindexed_view() methods Made all get methods (i.e. views) const Switched to HTML docs
Code reorganization Added DataFrame method get_memory_usage() Divided visitor source file into Stats, ML, and financial source files Added exponential-moving-stats adopter for visitors Added Geometric-Mean visitor Added Harmonic-Mean visitor Added Double-Cross-Over visitor Added Bollinger-Band visitor Added Moving-Average-Convergence/Divergence visitor Added Expanding-Roll-Adopter for visitors Added support for Conan file compiling Improved multi-threading + added multi-threading to more algos Added MADVisitor -- 4 different Mean-Absolute-Deviation visitor logic Added Standard-Error-of-the-Mean visitor