├── 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
--------------------------------------------------------------------------------