├── README.md ├── code ├── Brian Blandin │ └── algotradingsummit_code.py ├── Hui Liu │ ├── AlgoTradingSummit_Live_trade.html │ ├── AlgoTradingSummit_TEST_ME_easiest.html │ ├── AlgoTradingSummit_TEST_ME_localHistFile.html │ ├── AlgoTradingSummit_TEST_ME_simulated_by_daily_bars.html │ └── algoTradingSummit_buyLowSellHighModel.html ├── README.md └── Rob Carver │ └── random.py └── slides ├── AlgoTrading_Summit_Session_Nitesh_QuantInsti.pdf ├── Algo_Summit_Rob_Carver_July_2021.pdf ├── Applying Machine Learning to Pairs Trading - Illya Barziy.pdf ├── Feature Selection is the New Factor Modeling - Ernest Chan.pdf ├── From idea to a trading robot - Hui Liu.pdf ├── Scientific Approach to Market Prediction - Brian Blandin.pdf ├── Smart-Beta Portfolios - Alexandr Proskurin.pdf └── Why Dirty Data is Your Best Friend - Chris Bartlett.pdf /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > [Tradologics](https://tradologics.com) is proud to have hosted the [AlgoTrading Summit](https://algotradingsummit.com/) 4 | 💜 5 |
6 | 7 | # AlgoTrading Summit 8 | 9 | This repository contains link to videos of the [2021 AlgoTrading Summit](https://algotradingsummit.com/) talks, along with slides and code made available by the speakers. 10 | 11 | 📺 **[Watch all the videos](https://www.youtube.com/playlist?list=PLlmbulluktVRAg-h4vp-u4iEElCERgIAP)** (YouTube playlist) 12 | 13 |
14 | 15 | --- 16 | 17 |
18 | 19 | ## 📚 Tradologics platform demo 20 | 🔗 Check out the **[Tradologics platform demo](https://tradologics.com/ats)** and see just how easy it is to launch a trading strategy on the Tradologics cloud platform for traders. 21 | 22 | 23 |
24 | 25 | --- 26 | 27 |
28 | 29 | ## 📺 Talks: 30 | 31 | > _**NOTE:** We've made available the slides and code that were given to us by the speakers. If there's no link to download the slides and/or code for a talk - it was not provided to us (yet) by the speaker._ 32 | 33 |
\*\*\*\*\*\*\*\*\*\* 34 | 35 | ### ⭐️ Algorithmic Short Selling 36 | 37 | If investment is a process, then automation is the only logical conclusion. In this session Laurent will explain why short-selling is the key to raising AUM, and how to generate more Long/Short ideas than you will ever have capital to allocate. 38 | 39 | > **Laurent Bernut**, 20+ Years Long/Short, Short-Seller expert, and Algorithmic Trader 40 | 41 | [Video](https://youtu.be/pTw_0YnvRdY) | 42 | [Twitter](https://twitter.com/lb_ASC) | 43 | [LinkedIn](https://www.linkedin.com/in/laurent-bernut-97056812/) 44 | 45 | 46 |
\*\*\*\*\*\*\*\*\*\* 47 | 48 | 49 | ### ⭐️ Integrating Alternative Data Into Your Strategies 50 | 51 | In this presentation, based on The Book of Alternative Data, we will introduce the topic of alternative data and how it can be used by investors. We show specific use cases where it can be used by traders in markets including FX. 52 | 53 | > **Saeed Amen**, Founder at Cuemacro, Author, Visiting Lecturer at QMUL 54 | 55 | [Video](https://youtu.be/XD7OfnUaTEs) | 56 | [Twitter](https://twitter.com/saeedamenfx) | 57 | [LinkedIn](https://www.linkedin.com/in/saeedamen/) | 58 | [Website](https://www.cuemacro.com/?ref=algotradingsummit) 59 | 60 | 61 |
\*\*\*\*\*\*\*\*\*\* 62 | 63 | 64 | ### ⭐️ Feature Selection is the New Factor Modeling 65 | 66 | Traditional factor model is based on linear regression, with all its attendant shortcomings. The machine learning technique of feature selection can take into account nonlinearity, collinearity, and interdependence of such factors in returns prediction or attribution. 67 | 68 | > **Ernest Chan**, CEO at PredictNow.ai, Managing Member of QTS Capital Management 69 | 70 | [Video](https://youtu.be/i2zNCyKbEkw) | 71 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 72 | [Twitter](https://twitter.com/chanep) | 73 | [LinkedIn](https://www.linkedin.com/in/epchan/) | 74 | [Website](https://www.predictnow.ai/?ref=algotradingsummit) 75 | 76 | 77 |
\*\*\*\*\*\*\*\*\*\* 78 | 79 | 80 | ### ⭐️ A look inside the world of HFT: What lies beneath the surface? 81 | 82 | The session will cover the various important aspects of building & running a HFT setup, and the potential sources of alpha for such strategies. 83 | 84 | > **Nitesh Khandelwal**, CEO & Co-Founder at QuantInsti, Partner & Co-founder at iRage 85 | 86 | [Video](https://youtu.be/HeLTQ912Apk) | 87 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 88 | [Twitter](https://twitter.com/niteshkh) | 89 | [LinkedIn](https://www.linkedin.com/in/niteshkh/) | 90 | [Website](https://www.quantinsti.com/?ref=algotradingsummit) 91 | 92 | 93 |
\*\*\*\*\*\*\*\*\*\* 94 | 95 | 96 | ### ⭐️ From idea to a trading robot. Quickly 97 | 98 | In this talk, we'll be building a simple machine learning model to trade the "buy low sell high" daily strategy, and use tools like Jupyter Lab to backtest our strategy using Python. 99 | 100 | > **Dr. Hui Liu**, Creator of IBridgePy & CEO of Running River Investment LLC. BS, MS, Phd and MBA 101 | 102 | [Video](https://youtu.be/HnQyvWXjBmo) | 103 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 104 | [Code](https://github.com/tradologics/AlgoTradingSummit/tree/master/code) | 105 | [LinkedIn](https://www.linkedin.com/in/hui-liu-18356a14/) | 106 | [Website](https://ibridgepy.com/) 107 | 108 | 109 |
\*\*\*\*\*\*\*\*\*\* 110 | 111 | 112 | ### ⭐️ Why Dirty Data is Your Best Friend 113 | 114 | Overview of the importance of working with real data... and real data is not clean 115 | 116 | > **Chris Bartlett**, CEO @ AlgoSeek 117 | 118 | [Video](https://youtu.be/LiNjD7i_z1g) | 119 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 120 | [Twitter](https://twitter.com/AlgoseekData) | 121 | [LinkedIn](https://www.linkedin.com/in/chrisnbartlett/) | 122 | [Website](https://www.algoseek.com/?ref=algotradingsummit) 123 | 124 | 125 |
\*\*\*\*\*\*\*\*\*\* 126 | 127 | 128 | ### ⭐️ Smart-Beta Portfolios - a Machine Learning Approach 129 | 130 | In this session we'll talk about how to build better-factor, smart-beta portfolios using Hierarchical Risk Parity Algorithm. We'll also take a look at how fundamental data is used to filter-out the stock universe to replicate specific factors, and how to mix various factors inside of one portfolio using ML allocation techniques. 131 | 132 | > **Alexandr Proskurin**, CIO at Principia Invest, Head of Consulting at Hudson and Thames 133 | 134 | [Video](https://youtu.be/TR4WtaOXOOo) | 135 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 136 | [Twitter](https://twitter.com/proskurinalex) | 137 | [LinkedIn](https://www.linkedin.com/in/proskurinolexandr/) | 138 | [Website](https://hudsonthames.org/) 139 | 140 | 141 |
\*\*\*\*\*\*\*\*\*\* 142 | 143 | 144 | ### ⭐️ A Scientific Approach to Market Prediction 145 | 146 | Discussion of the elements of price action, including direction, volatility/range, and trend, as well as go over the metrics/ways to measure and categorize these factors - and their practical implications on trading strategies 147 | 148 | > **Brian Blandin**, Co-Founder at Markets Science, Writer @ Quantfiction 149 | 150 | [Video](https://youtu.be/uttGcfgFSyA) | 151 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 152 | [Code](https://github.com/tradologics/AlgoTradingSummit/tree/master/code) | 153 | [Twitter](https://twitter.com/quantfiction) | 154 | [LinkedIn](https://www.linkedin.com/in/brian-blandin/) | 155 | [Website](https://quantfiction.com/?ref=algotradingsummit) 156 | 157 | 158 |
\*\*\*\*\*\*\*\*\*\* 159 | 160 | 161 | ### ⭐️ Down, Down, Deeper and Down 162 | 163 | Is the drawdown a useful statistic for risk scaling? 164 | 165 | > **Robert Carver**, Independent futures trader and Best-selling author 166 | 167 | [Video](https://youtu.be/XD7OfnUaTEs) | 168 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 169 | [Code](https://github.com/tradologics/AlgoTradingSummit/tree/master/code) | 170 | [Twitter](https://twitter.com/investingidiocy) | 171 | [LinkedIn](https://www.linkedin.com/in/robert-stuart-carver/) | 172 | [Website](https://www.systematicmoney.org/?ref=algotradingsummit) 173 | 174 | 175 |
\*\*\*\*\*\*\*\*\*\* 176 | 177 | 178 | ### ⭐️ Hedge Fund Misadventures (& How We Eventually Raised Funding) 179 | 180 | Christina started Domeyard, a hedge fund focused on HFT, almost 10 years ago. In this rapid-fire talk, Christina will open up about her biggest mistakes and lessons learned from fundraising, to hiring, to building strategies, to launching the fund. 181 | 182 | > **Christina Qi**, CEO of Databento, Founding Partner of Domeyard LP, Forbes 30 Under 30 183 | 184 | [Video](https://youtu.be/x_s1u3EoBsQ) | 185 | [Twitter](https://twitter.com/christinaqi) | 186 | [LinkedIn](https://www.linkedin.com/in/christinaqi/) | 187 | [Website](https://www.databento.com/) 188 | 189 | 190 |
\*\*\*\*\*\*\*\*\*\* 191 | 192 | 193 | ### ⭐️ Applying Machine Learning to Pairs Trading 194 | 195 | In this presentation, based on The Book of Alternative Data, we will introduce the topic of alternative data and how it can be used by investors. We show specific use cases where it can be used by traders in markets including FX. 196 | 197 | > **Illya Barziy**, Quantitatve Research Lead @ Hudson & Thames 198 | 199 | [Video](https://youtu.be/7RIs8MvZt8I) | 200 | [Slides](https://github.com/tradologics/AlgoTradingSummit/tree/master/slides) | 201 | [Twitter](https://twitter.com/IllyaBarziy) | 202 | [LinkedIn](https://www.linkedin.com/in/illyabarziy/) | 203 | [Website](https://hudsonthames.org/) 204 | 205 | 206 |
207 | 208 | --- 209 | 210 |
211 | 212 | ## 📚 Books: 213 | Get the [books written by the speakers](https://www.amazon.com/hz/wishlist/ls/1IJ81BAGM9JUU) on Amazon (not an affiliate link). 214 | -------------------------------------------------------------------------------- /code/Brian Blandin/algotradingsummit_code.py: -------------------------------------------------------------------------------- 1 | # Useful Transformations 2 | 3 | def calc_log_ratio(s1, s2, eps=0): 4 | return np.log(s1 + eps) - np.log(s2 + eps) 5 | 6 | def relative_series_log(series, lookback=20, eps=0): 7 | s1 = series 8 | s2 = series.rolling(lookback, min_periods=2).mean().shift(1) 9 | return calc_log_ratio(s1, s2, eps) 10 | 11 | # Price Direction 12 | 13 | def calc_log_return(ohlc): 14 | x1 = ohlc['open'].shift(-1) 15 | x2 = ohlc['open'].shift(-2) 16 | log_return = calc_log_ratio(x1, x2) 17 | 18 | return log_return 19 | 20 | def calc_mpe(ohlc, lookforward=0): 21 | max_high = ( 22 | ohlc["high"] 23 | .rolling(lookforward + 1) 24 | .max() 25 | .shift(-lookforward) 26 | ) 27 | mpe = max_high - ohlc["open"] 28 | 29 | return mpe 30 | 31 | def calc_mne(ohlc, lookforward=0): 32 | min_low = ( 33 | ohlc["low"] 34 | .rolling(lookforward + 1) 35 | .min() 36 | .shift(-lookforward) 37 | ) 38 | mne = ohlc["open"] - min_low 39 | 40 | return mne 41 | 42 | def calc_edge_ratio_log(ohlc, lookforward=1, eps=1e-6, max_val=25): 43 | mpe = calc_mpe(ohlc, lookforward) 44 | mne = calc_mne(ohlc, lookforward) 45 | edge_ratio_log = calc_log_ratio(mpe, mne, eps=eps).clip(-max_val, max_val) 46 | 47 | return edge_ratio_log 48 | 49 | # Range / Volatility 50 | 51 | def calc_true_range(ohlc): 52 | h, l, c = split_ohlc(ohlc)[1:4] 53 | method_1 = h - l 54 | method_2 = (h - c.shift(1)).abs() 55 | method_3 = (l - c.shift(1)).abs() 56 | true_range = pd.concat((method_1, method_2, method_3), axis=1).max(axis=1) 57 | 58 | return true_range 59 | 60 | def calc_average_true_range(ohlc, lookback): 61 | true_range = calc_true_range(ohlc) 62 | average_true_range = true_range.rolling(lookback).mean() 63 | 64 | return average_true_range 65 | 66 | def ATR_perc(ohlc, lookback): 67 | true_range = TR(ohlc) 68 | true_range_percent = true_range / ohlc["open"] 69 | average_true_range_percent = true_range_percent.rolling(lookback).mean() 70 | return average_true_range_percent 71 | 72 | def calc_tape_length(price_series): 73 | abs_diffs = price_series.diff().abs() 74 | tape_length = abs_diffs.sum() 75 | 76 | return tape_length 77 | 78 | def calc_total_move(price_series): 79 | total_move = abs(price_series[-1] - price_series[0]) 80 | 81 | return total_move 82 | 83 | # Trend 84 | 85 | def calc_efficiency_ratio(series): 86 | total_diff = abs(series[-1] - series[0]) 87 | sum_diffs = series.diff().abs().sum() 88 | return total_diff / sum_diffs 89 | 90 | def calc_moving_average_dominance(series, lookback): 91 | ema = series.ewm(span=lookback).mean() 92 | over_ema = series > ema 93 | mad_raw = over_ema.sum() / len(series) 94 | moving_average_dominance = max(mad_raw, 1-mad_raw) 95 | 96 | return moving_average_dominance 97 | -------------------------------------------------------------------------------- /code/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/code/README.md -------------------------------------------------------------------------------- /code/Rob Carver/random.py: -------------------------------------------------------------------------------- 1 | 2 | import matplotlib 3 | matplotlib.use("TkAgg") 4 | matplotlib.rcParams.update({'font.size': 22}) 5 | from matplotlib.pyplot import hist, plot 6 | import pandas as pd 7 | import numpy as np 8 | 9 | # libraries from https://github.com/robcarver17/pysystemtrade 10 | from syscore.dateutils import BUSINESS_DAYS_IN_YEAR, ROOT_BDAYS_INYEAR 11 | from syscore.accounting import accountCurveSingleElementOneFreq as accountCurve 12 | 13 | def arbitrary_timeindex(Nperiods, index_start=pd.datetime(2000, 1, 1)): 14 | """ 15 | For nice plotting, convert a list of prices or returns into an arbitrary pandas time series 16 | """ 17 | 18 | ans = pd.bdate_range(start=index_start, periods=Nperiods) 19 | 20 | return ans 21 | 22 | 23 | def skew_returns_annualised(annualSR=1.0, want_skew=0.0, voltarget=0.20, size=10000): 24 | annual_rets = annualSR * voltarget 25 | daily_rets = annual_rets / BUSINESS_DAYS_IN_YEAR 26 | daily_vol = voltarget / ROOT_BDAYS_INYEAR 27 | 28 | return skew_returns(want_mean=daily_rets, want_stdev=daily_vol, want_skew=want_skew, size=size) 29 | 30 | 31 | def skew_returns(want_mean, want_stdev, want_skew, size=10000): 32 | EPSILON = 0.0000001 33 | shapeparam = (2 / (EPSILON + abs(want_skew))) ** 2 34 | scaleparam = want_stdev / (shapeparam) ** .5 35 | 36 | sample = list(np.random.gamma(shapeparam, scaleparam, size=size)) 37 | 38 | if want_skew < 0.0: 39 | signadj = -1.0 40 | else: 41 | signadj = 1.0 42 | 43 | natural_mean = shapeparam * scaleparam * signadj 44 | mean_adjustment = want_mean - natural_mean 45 | 46 | sample = [(x * signadj) + mean_adjustment for x in sample] 47 | 48 | return sample 49 | 50 | 51 | """ 52 | Do the bootstrap of many random curves 53 | """ 54 | 55 | def generate_account_curves(annualSR=1.0, want_skew=0.0, voltarget=0.20,length_backtest_years = 10, number_of_random_curves=1000): 56 | length_bdays = int(length_backtest_years * BUSINESS_DAYS_IN_YEAR) 57 | random_curves=[skew_returns_annualised(annualSR=annualSR, want_skew=want_skew, size=length_bdays, voltarget = voltarget) 58 | for NotUsed in range(number_of_random_curves)] 59 | 60 | ## Turn into a dataframe 61 | 62 | random_curves_npa=np.array(random_curves).transpose() 63 | pddf_rand_data=pd.DataFrame(random_curves_npa, index=arbitrary_timeindex(length_bdays), columns=[str(i) for i in range(number_of_random_curves)]) 64 | 65 | ## This is a nice representation as well 66 | acccurves_rand_data=[accountCurve(pddf_rand_data[x], 1.0) for x in pddf_rand_data] 67 | 68 | return acccurves_rand_data 69 | 70 | ## Get results for various things 71 | 72 | ## standard deviation 73 | length_backtest_years=10 74 | annualSR=0.5 75 | list_of_vol_targets = [0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.5] 76 | results = [] 77 | for voltarget in list_of_vol_targets: 78 | print(voltarget) 79 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, 80 | length_backtest_years=length_backtest_years) 81 | 82 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 83 | 84 | results.append( np.median(drawdown_list)) 85 | 86 | plot(list_of_vol_targets, results) 87 | 88 | voltarget = 0.2 89 | length_backtest_years = 10 90 | 91 | SR_list = [0,.1,.25,.5,.75,1,1.5,2] 92 | results = [] 93 | for annualSR in SR_list: 94 | print(annualSR) 95 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, 96 | length_backtest_years=length_backtest_years) 97 | 98 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 99 | 100 | results.append( np.median(drawdown_list)) 101 | 102 | plot(SR_list, results) 103 | 104 | annualSR=0.5 105 | voltarget = 0.2 106 | 107 | length_list = [1,2,5,10,20,30] 108 | results = [] 109 | for length_backtest_years in length_list: 110 | 111 | print(length_backtest_years) 112 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, 113 | length_backtest_years=length_backtest_years) 114 | 115 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 116 | 117 | results.append( np.median(drawdown_list)) 118 | 119 | plot(length_list, results) 120 | 121 | length_backtest_years=10 122 | annualSR=0.5 123 | voltarget = 0.2 124 | 125 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, length_backtest_years = length_backtest_years) 126 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 127 | 128 | hist(drawdown_list, 100) 129 | np.median(drawdown_list) 130 | 131 | 132 | 133 | voltarget = 0.2 134 | length_backtest_years = 10 135 | SR_list = [0,.1,.25,.5,.75,1,1.5,2] 136 | results = [] 137 | for annualSR in SR_list: 138 | length_bdays = int(length_backtest_years * BUSINESS_DAYS_IN_YEAR) 139 | print(annualSR) 140 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, 141 | length_backtest_years=length_backtest_years) 142 | 143 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 144 | 145 | results.append( np.median(drawdown_list)) 146 | 147 | poss_vol_targets = [voltarget*0.5/-dd for dd in results] 148 | kelly_vol_targets = [sr/2.0 for sr in SR_list] 149 | plot(SR_list, kelly_vol_targets) 150 | plot(SR_list, poss_vol_targets) 151 | 152 | length_backtest_years=10 153 | annualSR=0.5 154 | voltarget = 0.20 155 | """ 156 | Do the bootstrap of many random curves 157 | """ 158 | 159 | acccurves_rand_data = generate_account_curves(annualSR=annualSR, voltarget=voltarget, 160 | length_backtest_years=length_backtest_years) 161 | 162 | drawdown_list = [acc.worst_drawdown() for acc in acccurves_rand_data] 163 | 164 | hist(drawdown_list, 100) 165 | max_vol_target = [voltarget*0.5/-dd for dd in drawdown_list] 166 | hist(max_vol_target, bins=50) 167 | 168 | sr_vol_target_list = [acc.sharpe()/2.0 for acc in acccurves_rand_data] 169 | hist(sr_vol_target_list) 170 | {"mode":"full","isActive":false} 171 | -------------------------------------------------------------------------------- /slides/AlgoTrading_Summit_Session_Nitesh_QuantInsti.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/AlgoTrading_Summit_Session_Nitesh_QuantInsti.pdf -------------------------------------------------------------------------------- /slides/Algo_Summit_Rob_Carver_July_2021.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Algo_Summit_Rob_Carver_July_2021.pdf -------------------------------------------------------------------------------- /slides/Applying Machine Learning to Pairs Trading - Illya Barziy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Applying Machine Learning to Pairs Trading - Illya Barziy.pdf -------------------------------------------------------------------------------- /slides/Feature Selection is the New Factor Modeling - Ernest Chan.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Feature Selection is the New Factor Modeling - Ernest Chan.pdf -------------------------------------------------------------------------------- /slides/From idea to a trading robot - Hui Liu.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/From idea to a trading robot - Hui Liu.pdf -------------------------------------------------------------------------------- /slides/Scientific Approach to Market Prediction - Brian Blandin.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Scientific Approach to Market Prediction - Brian Blandin.pdf -------------------------------------------------------------------------------- /slides/Smart-Beta Portfolios - Alexandr Proskurin.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Smart-Beta Portfolios - Alexandr Proskurin.pdf -------------------------------------------------------------------------------- /slides/Why Dirty Data is Your Best Friend - Chris Bartlett.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tradologics/AlgoTradingSummit/1610f02574eb5c325c0f65dedf5b4d1f9501e6d8/slides/Why Dirty Data is Your Best Friend - Chris Bartlett.pdf --------------------------------------------------------------------------------