Эпистемикалық және алеаторикалық: Қайтарым моделі білмейтін нәрсені өлшеу
Бұл блогтың барлық позиция өлшеу ережелері белгісіздікті бір скалярлық шамаға түреді. Kelly критерийі дисперсияға бөледі. Конформалды болжау аралық еніне бөледі. Волатильдылық таргетингі GARCH болжамына бөледі. Үшеуі де дұрыс, бірақ сақта үшін саудада маңызды айырмашылықты жоғалтады: шау-шулы нарық пен білмейтін модельдің айырмашылығы.
Бұл бірдей риск емес. Нарық шуы бағаланған — оны иемізенуге ақы төленетін нәрсе. Модельдің білмесушілігі бағаланбаған, төленбейтін және дәл сіздің артықшылығыңыздың бағасы ең сенімсіз күй. Оларды тең жазатын өлшеу ережесі үстелден нәрсе қалдырады.
Бұл пост бөлінуді өлшейтін ету туралы. Нақтырақ айтқанда:
Оны Келлидің бөлгішіне жалпы дисперсия орнына қойыңыз. Мақаланың қалған бөлігі екі компонентті бағалау жөнінде (MC Dropout, терең ансамбльдер) және нақты деректердегі бөлудің көрінісі жөнінде.
Тезис: Екі белгісіздік — екеу әрекет
| Эпистемикалық | Алеаторикалық | |
|---|---|---|
| Қайнар көзі | Шектеулі деректер / модель | Деректердегі тек шум |
| Азайтылады ма? | Иә (көбірек деректер көмектеседі) | Жоқ |
| Сауда әрекеті | Позицияны азайтыңыз немесе бас тартыңыз | Стоптарды кеңіте, тіректі азайтыңыз |
| Сигнал | "Мен бұл режимді көрген жоқпын" | "Бұл нарық қазір шулы" |
"Сауда әрекеті" жолындағы асимметрия — бұл барлық дәлел. Жоғары алеаторикалық дисперсия — бұл белгілі белгісіз: оған өлшеуге болады, хеджирлеуге болады және оны ұстау үшін риск сыйлығы алуға болады деп күтуге болады. Жоғары эпистемикалық дисперсия — белгісіз белгісіз: модель экстраполяция жасайды, оның орташа бағасы дисперсия бағасы сияқты күмәнді, және өз параметрлеріңізбен қате жасауға ешқандай сыйлық жоқ.
Екеуін шатастыратын модель немесе танын емес режимдерде көп саудалайды (эпистемикалық белгісіздікті елемеу), немесе танын бірақ шулы режимдерде аз саудалайды (алеаторикалық белгісіздікті артық жазады). Жалпы дисперсияға қолданылатын стандартты Келли қай компонент басым болуына қарай екеуін де жасайды.
Бөлу
Эпистемикалық белгісіздік модель параметрлері туралы белгісіздіктен келеді. Бір орнына (maximum likelihood сияқты), біз үлестірмін сақтаймыз және интегралдаймыз:
бойынша интегралдаудан пайда болған жазықтық эпистемикалық. кіріс аймағын қамтымай өскен сайын жарылады.
Алеаторикалық белгісіздік — деректер тудыру процесінің шартты шуы. Нейрондық желіде ол кіріс тәуелді дисперсия шығаратын екінші шығару басымен модельделеді:
Ол гетероскедастикалық бас GARCH классикалық бағалайтын нәрсені бағалайды — түнгі уақытта жоғары, peak уақытта төмен жағдайға тәуелді шартты дисперсия. Криптовалюта бойынша осы объектің эмпирикалығы қажет болса, GARCH(1,1) for crypto volatility дұрыс қамтамасыз етеді, соның ішінде неге тірі шартты болжам (шартты емес үлгі дисперсиясы емес) Келли бөлгішіне жататынын қосады. NN басы орташамен бірге үйретілген сол объектіні басқа бағалаушы ғана.
GARCH бере алмайтын бұл екінші мүше. Бұл посттың қалған бөлігінің мақсаты осы.
Альдымдағы жарияланғандармен салыстырмалы орналасуы
Екі алдыңғы пост жанаса аймақты қамтиды және алдымен оқуға тұрарлық, себебі бұл пост оларды қайталамайды:
- Конформалды болжау соңғы үлгі кептілігі бар аралықтар береді, үлестіру болжамы жоқ, еніне кері өлшеу және edge ratio no-trade фильтрі бар. Егер дұрыс өлшенген аралық қана қажет болса, бұл күшті құрал.
- Temporal Fusion Transformers тікелей квантильдер шығарады және pinball-loss квантильдер үлгіден тыс автоматты түрде калибрленбейтінін ескертеді.
Айырбас таза. Конформал кептілік береді бірақ бір сан — аралық ені бөлінбейді, сондықтан ол неге кеңейтілгенін айта алмайды. Байес әдістері бөлуді береді бірақ кептілік жоқ — MC Dropout аралықтары жуық posterior сияқты ғана жақсы. Бұл мақала бөлуді сатып алу туралы. Кептілік үшін оның үстінен конформалды ұстауыңыз керек.
әдіс 1: Вариациялық қорытынды (Backprop арқылы Байес)

Байес нейрондық желісі салмақтарға prior орнатады және posterior іздейді. Нормаландауышы әрбір салмақ конфигурациясы бойынша интегралдауды қажет етеді, бұл бірнеше параметрден артық нәрсе үшін мүмкін емес.
Вариациялық қорытынды мүмкін емес posteriorты қолайлы отбасымен — әдетте факторланған гаусс — ауыстырады және минимизациядайды
Бұл белгісіз posteriorты қамтиды, сондықтан біз орнына Evidence Lower Bound максимизациялаймыз:
Бірінші мүше -ны деректерді түсіндіруге итермелейді, екіншісі оны priordің жанында ұстайды. Bayes by Backprop (Blundell et al., 2015) бұлды репараметеризация трюкпен дифференциалды етеді: -ден алыңыз, орнатыңыз.
Практикалық түрде VI параметр санын екі еселейді, градиент дисперсиясын көтереді (әрбір алға өту әртүрлі салмақтарды қолданады) және mean-field болжамы салмақ корреляцияларын елемейді, бұл эпистемикалық белгісіздікті төмен бағалай бастайды. Сауда стекіңізде бұл қажет болса, төмендегі екі арзан әдіс әдетте жақсы кіріс нүктесі.
әдіс 2: MC Dropout

Gal және Ghahramani (2016) dropout-пен үйретілген және тест уақытында dropout әлі қосулы бағаланатын желі терең гаусс процестегі жуық вариациялық қорытынды процедурасы екенін көрсетті. Dropout әлдеқашан subnetwork туралы үлестіруді туындайды; оны қорытынды кезінде қосып алға өтуді жүргізу сол жасырын posterior-дан сэмплдейді.
Бұл бұл блогтың басқа жерлерінде жоқ. Мұнда жарияланған код dropout-ты тек training-time regularizer ретінде қолданады (spread modeling, TFT dropout=0.1–0.3). Оны inference кезінде қосып қою — бір жолдық өзгеріс, бірақ мүлдем басқа мағына.
Болжамдық статистика
стохастикалық алға өту шығарса және әр өтудің дисперсиясы болса:
Болжамдық орташа:
Эпистемикалық (өтулер арасындағы келіспеушілік):
Алеаторикалық (болжалған шудың ортасы):
Бөлу — жалпы дисперсия заңы: шартты ортаның дисперсиясы плюс шартты дисперсияның ортасы. Жалпы болжамдық дисперсия — олардың қосындысы.
PyTorch іске асыру
import torch
import torch.nn as nn
import numpy as np
class MCDropoutNet(nn.Module):
"""
Белгісіздікті бағалау үшін MC Dropout бар қайтарым болжау желісі.
Болжамдық орташа мен лог-дисперсияны (алеаторикалық) шығарады.
"""
def __init__(self, input_dim: int, hidden_dim: int = 128, dropout_p: float = 0.1):
super().__init__()
self.net = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.ReLU(),
nn.Dropout(p=dropout_p),
nn.Linear(hidden_dim, hidden_dim),
nn.ReLU(),
nn.Dropout(p=dropout_p),
)
self.head_mu = nn.Linear(hidden_dim, 1) # болжалған қайтарым
self.head_logvar = nn.Linear(hidden_dim, 1) # log(алеаторикалық дисперсия)
def forward(self, x: torch.Tensor):
h = self.net(x)
return self.head_mu(h), self.head_logvar(h)
def heteroscedastic_loss(mu, log_var, target):
"""Үйренілген, кіріс тәуелді дисперсиясы бар гаусс үшін теріс log-likelihood."""
precision = torch.exp(-log_var)
return torch.mean(0.5 * precision * (target - mu) ** 2 + 0.5 * log_var)
@torch.no_grad()
def mc_predict(model: MCDropoutNet, x: torch.Tensor, n_samples: int = 100):
"""
MC Dropout inference: dropout-ті ҚОСЫЛЫ ҰСТАҢЫЗ, T алға өтуді жинаңыз,
болжамдық дисперсияны эпистемикалық және алеаторикалыққа бөліңіз.
"""
model.train() # NOT eval() — бұл dropout-ты белсенді ұстайды
mus, log_vars = [], []
for _ in range(n_samples):
mu, log_var = model(x)
mus.append(mu)
log_vars.append(log_var)
mus = torch.stack(mus) # (T, batch, 1)
log_vars = torch.stack(log_vars) # (T, batch, 1)
pred_mean = mus.mean(dim=0)
epistemic_var = mus.var(dim=0) # өтулер арасындағы дисперсия
aleatoric_var = log_vars.exp().mean(dim=0) # өтулер арасындағы күту
return {
"mean": pred_mean.squeeze(-1),
"epistemic_std": epistemic_var.sqrt().squeeze(-1),
"aleatoric_std": aleatoric_var.sqrt().squeeze(-1),
"total_std": (epistemic_var + aleatoric_var).sqrt().squeeze(-1),
}
Үйрету гетероскедастикалық жоғалуды қолданады, бұл дисперсия басына мағына береді. Өз-өзін реттейтін құрылымға назар аударыңыз: 0.5 * precision * (target - mu)**2 мүшесі кіші дисперсияны қалайды, 0.5 * log_var мүшесі оны жазайды, теңгерім нүктесі шартты шум деңгейі.
model = MCDropoutNet(input_dim=50, hidden_dim=128, dropout_p=0.1)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
for epoch in range(200):
model.train()
for x_batch, y_batch in train_loader:
mu, log_var = model(x_batch)
loss = heteroscedastic_loss(mu, log_var, y_batch)
optimizer.zero_grad()
loss.backward()
optimizer.step()
Әдісті тынышсыз жоятын gotcha: mc_predict ішінде model.eval() шақыру. Ол dropout-ты өшіреді, әрбір өту бірдей мәнді қайтарады, epistemic_var дәл нөлге құлайды, және өлшеу ережеңіз іштей алеаторикалық дисперсияға қарап жай Келлиге орталайды. Қате жоқ сәтсіздікке ұшырайды. Inference жолында epistemic_var > 0 тексеріңіз.
Алға өту санын таңдау
- : тұрақты орташа үшін төменгі шек
- : орташа және дисперсия үшін жұмыс істейтін әдепкі
- : құйрық квантильдері қажет болмаса diminishing returns
Әдіс 3: Терең ансамбльдер

Lakshminarayanan et al. (2017) әртүрлі кездейсоқ инициализациялардан тәуелсіз желілерді үйретеді және агрегациялайды. Ресми Байес болмаса да, терең ансамбльдер белгісіздік калибрациялық бенчмарктерде үнемі принципалды әдістерді жеңеді.
Мүшелер арасындағы келіспеушілік — эпистемикалық бағалау. Ансамбльдер бұл блогтың басқа жерлерінде агрегация құрылғылары ретінде пайда болады — аномалия анықтау, HMM режим анықтау, конформалдың EnbPI block bootstrap — бірақ мүшелер арасындағы spread арқылы белгісіздік бағалаушы ретінде емес. Бұл осындағы қолдану.
Ансамбль іске асыру
Әртүрлілік тәуелсіз үйретуден келеді, объект құрудан емес. Үйретілмеген немесе бірдей үйретілген мүшелердің ансамблі не шумді не нөл эпистемикалық дисперсияны қайтарады:
class DeepEnsemble:
def __init__(self, input_dim: int, n_models: int = 5, hidden_dim: int = 128):
self.models = []
for seed in range(n_models):
torch.manual_seed(seed) # әр мүше үшін әртүрлі init
self.models.append(
MCDropoutNet(input_dim, hidden_dim, dropout_p=0.0)
)
def fit(self, train_loader, epochs: int = 200, lr: float = 1e-3):
"""Әр мүше тәуелсіз үйретіледі. Мұнда әртүрлілік пайда болады —
әртүрлі init, әртүрлі shuffle реті. Бұлды өткізіп жіберу
epistemic_var == 0 (бірдей мүшелер) немесе таза шум (үйретілмеген) береді."""
for seed, model in enumerate(self.models):
torch.manual_seed(1000 + seed) # әртүрлі shuffle/dropout stream
opt = torch.optim.AdamW(model.parameters(), lr=lr, weight_decay=1e-4)
model.train()
for _ in range(epochs):
for x_batch, y_batch in train_loader:
mu, log_var = model(x_batch)
loss = heteroscedastic_loss(mu, log_var, y_batch)
opt.zero_grad()
loss.backward()
opt.step()
return self
@torch.no_grad()
def predict(self, x: torch.Tensor):
mus, variances = [], []
for model in self.models:
model.eval() # мұнда дұрыс: dropout sampling жоқ
mu, log_var = model(x)
mus.append(mu.squeeze(-1))
variances.append(log_var.exp().squeeze(-1))
all_mus = torch.stack(mus)
all_vars = torch.stack(variances)
epistemic_var = all_mus.var(dim=0) # мүшелер арасындағы spread
aleatoric_var = all_vars.mean(dim=0)
return {
"mean": all_mus.mean(dim=0),
"epistemic_std": epistemic_var.sqrt(),
"aleatoric_std": aleatoric_var.sqrt(),
"total_std": (epistemic_var + aleatoric_var).sqrt(),
}
model.eval() DeepEnsemble.predict-те дұрыс, mc_predict-те бұрын екенін ескеріңіз. Стохастикалық көзі әртүрлі: ансамбльдер тәуелсіз үйретуден алады, MC Dropout live dropout mask-тен алады.
Трейдоффтар: MC Dropout vs Терең ансамбльдер
| MC Dropout | Терең ансамбльдер | |
|---|---|---|
| Үйрету құны | 1x (жалғыз модель) | x ( модель) |
| Inference құны | алға өту | алға өту |
| Жады | 1x параметрлер | x параметрлер |
| Белгісіздік сапасы | Эпистемиканы төмен бағалай бастайды | Жалпы жақсырақ калибрленген |
| Іске асыру оңайлығы | әдетті (flag flip) | әдетті ( модельді үйретіңіз) |
| Параллелдік | Кезек пасалар (сол модель) | Қып-қынатай параллель |
Прагматикалық гибрид: кіші ансамбльді () үйретіңіз, әр мүше де MC Dropout қолдансын, интермодельді келіспеушілік пен интрамодельді стохастикалықтықтың екеуін де ұстап алыңыз.
Ақша төлеу: Асимметриялық өлшеу

Бұл нақты үлес. Гаусс Келли ; шығару, өсу параболасы, drawdown ықтималдығ кестесі және fraction Kelly емес full Kelly жүргізудің төрт себебінің барлығы The Kelly Criterion for Strategies бар, және қайталанбайды. Төрттің бірінші-Kelly fraction-дағы берік деп алыңыз.
Өзгерту — бөлгіш. Жалпы болжамдық дисперсия орнына:
үшін дәлел: алеаторикалық дисперсия — нарықтың шуы, ол бағаланған, және оны ұстау стратегияның табыс табу жолы. Эпистемикалық дисперсия — сіздің білмесушілігіңіз — оның премиясы жоқ, тіптей нашарыған, ол сіздің бағалауыңызбен корреляцияланған кезде қате болуы мүмкін. үлкен кезде, Келлидің саны бөлгішпен бірге сенімсіз, сондықтан өлшеу қатесі күрделене түседі. Нарық шуына қарағанда оны superlinearly жазу — оның тікелей өрнегі.
def uncertainty_adjusted_position_size(
pred_mean: float,
epistemic_std: float,
aleatoric_std: float,
max_position: float = 1.0,
lam: float = 2.0, # эпистемикалық penalty; validation-те tune
max_epi_ratio: float = 0.5, # осы epi/alea қатынасынан жоғары abstain
base_kelly_fraction: float = 0.25,
) -> float:
"""Эпистемикалық дисперсия алеаторикалыққа қарағанда қатты жазатын Kelly өлшеу."""
effective_var = aleatoric_std ** 2 + lam * epistemic_std ** 2
if effective_var < 1e-10:
return 0.0
position = (pred_mean / effective_var) * base_kelly_fraction
epi_ratio = epistemic_std / (aleatoric_std + 1e-8)
if epi_ratio > max_epi_ratio:
position *= max(0.0, 1.0 - epi_ratio)
return float(np.clip(position, -max_position, max_position))
Шлюзге ескерту қажет. Сенімділік порогынан төмен позицияларды нөлдеу — мұнда жаңа емес — конформал мақала ноу-трейд фильтрін min_edge порогымен жалпы түрде сипаттайды және кодтайды, соның ішінде порогты қалай таңдау және нөлді айналатын аралықтың геометриялық оқылуы. Ол машинаға conformal prediction қараңыз. Жаңасы — бөлгіш: бойынша гейтинг модель нарықтан гөрі өз параметрлері туралы шатысқанда арнайы өтеді — жалпы белгісіздік гейтинг алайтын күй, себебі тыныш бірақ танын емес режим төмен жалпы дисперсия және жаман эпистемикалық қатынасы болуы мүмкін.
Калибрация: Бұл басқаға беріңіз
Белгісіздік бағасы калибрацияланған кезде ғана пайдалы: номиналды 95% аралық шынның шамамен 95% уақытын қамтуы керек. Мұнда өз Гаусс-квантильді сенімділік тексеруді құрыңыз — қалың құйрықты қайтарым қалдықтарындағы параметрлік аралық — conformal prediction болатын сәтсіздік режимі, және ол артқы жағында соңғы үлгі кептілігімен target vs empirical coverage хабарлайтын жұмыс істейтін evaluate() жібереді. TFT пост та квантиль бастары үшін сол нүктені жасайды.
Пост-хок рескейлинг ( validation set-те fit) арзан түзету, және бұл Adaptive Conformal Inferenceдің әлсіз ініс. ACI online miscoverage деңгейі -ні ұзақ мерзімді кептілік шекарасымен ұстайды, статикалық рескейл емес. ACI — күштірек нұсқа; сызықты рескейлді қалаудың жалғыз себебі — ол эпистемикалық/алеаторикалық қатынасты сақтайды, ACI-дің жекпе-жек ені емес.
Бұл жарияланғанға дейін өлшенуі қажет
Жоғарыдағы әдістер белгілі. Бөлудің саудада ешнәрсені сататыны — жоқ, және бұл блог тек аргумент бойынша sizing ережелерін жарияламайды. Бар:
1. Деректор және мақсат. Аспапты, бар өлшемді, нақты күн ауқымын, feature set-ті, болжау мақсатын атап атыңыз.
2. Бөлу өзі. Жалпы болжамдық дисперсияның қанша пайызы эпистемикалық ал алеаторикалық, және бұл қатынас аталған тыныш терезеден аталған волатиль терезеге қалай қозғалатыны. Бұл ақша диаграммасы және әлі жоқ. Жалпыланбаған гипотеза: қатынас жүзілік волатильділіктен бұрын шығады, себебі танынбаушылық бұзылыстан бұрын келеді.
3. Конформалмен кептілік. Сол деректердегі жарияланған мақаладанғы split-conformal аралықтарымен салыстырғанда, MC Dropout аралықтарының үлгіден тыс кептілігінің өлшенгені. Ол head-to-head өзі жаңа нәтиже және екі посттың табиғи көпірі.
4. ешнәрсені сатады ма? Validation-да эпистемикалық penalty-ті sweep етіңіз және baseline-ке қарсы PnL және макс drawdown хабарлаңыз. Ештеңе сатпаса, солай айтыңыз — The Honest Negative сол нәтиже үшін шаблон және жарияланатын нәтиже.
5. Inference құны. Target hardware-да әр -де өлшенген.
Мұндағы кез келген бағалау walk-forward optimization тәртіпімен жүреді — гиперпараметр, және толық үлгіде tune-делген нәтиже емес.
Өндіріске қолданбалы кеңестер
1. Prior-ды жылыңыз. Вариациялық қорытындыда, вариациялық орташаны random емес pretrained deterministic network-тен инициализациялаңыз. Әдетте конвергенция уақыты жартылай кемиді.
2. Дисперсия құлдырауын бақылаңыз. Үйренілген дисперсиялар шамамен нөлге drift жасап, BNN-ді тыныш deterministic network-ке қайтаруы мүмкін. Training кезінде орташа -ті бақылаңыз; қажет болса KL annealing қосыңыз.
3. Фиксированған validation set емес rolling basis қайта калибрлаңыз. Нарықтар стационар емес және бір рет fit-телген калибрациялауdecay. Walk-forward тәртіпімен rolling window-да қайта үйретіңіз немесе ACI-ге модельдің staleness-ті онлайн сіңіріңіз — конформал пост retraining frequency trade-off-ты тікелей қамтиды.
4. Ансамбль әртүрлілігі маңызды. Әртүрлі тұқымдар, әртүрлі shuffle-лер, опциялық түрде мүше бойынша әртүрлі гиперпараметрлер. Инициализация әртүрлілігі — ансамбль сапасының басты драйвері, сондықтан жоғарыдағы fit() циклы опциялық емес.
5. Бөліністі, жалпы ғана емес, жазыңыз. Екеуін де де репозициялармен сақтаңыз. Олсыз шолуда маңызды жалғыз сұраққа жауап бере алмайсыз: sizer exposition-ді қысқартқанда, бұл нарық шулы болғандықтан па, модель жоғолғандықтан па — және ол дұрыс болды ма?
6. Белгісіздік feature ретінде. Rolling эпистемикалық статистика өзі drawdown-дарды болжауы мүмкін. әбден мүмкін, өлшенбеген, жеке постқа лайық.
Шектеулер және шынайы келтірулер
- Жуық posterior-лар әлі жуық. MC Dropout және VI шын posterior-дың шектеулі көрінісін береді. Ештеңеден жақсы, шындық емес, және екеуіне де кептілік кептігі жоқ.
- Калибрация қажет кезінде нашарлайды. Шынайы жаңа режимде модель әлі де miscalibrated болуы мүмкін — ол тек deterministic-ке қарағанда азірақ miscalibrated болуы қайталанады. Distribution out input-тан белгісіздік бағалары өзі distribution out output-тар.
- Алеаторикалық дисперсия эпистемикалық сигналды сіңіре алады. Егер гетероскедастикалық бас жеткілікті икемді болса, ол модель белгісіздікті деректер шуы ретінде түсіндіруге үйренеді, -ні нөлге қарай құлайды және бүкіл бөлуді тынышсыз бұзады. Бұл бұл посттағы ең маңызды сәтсіздік режимі және ол өзін хабарламайды. Режимдер арасындағы қатынасты бақылаңыз; ешқашан қозғалмайтын қатынас — сынық бөлу, тұрақты нарық емес.
- еркін параметр. Tunable knob-ты sizing rule-ге енгізу — overfit sizing rules-тар қалай жасалатыны. Ол walk-forward justification-ды қажет етеді немесе 1-де бекітуі керек.
Қорытынды
Конформал болжау бұл блогқа кептілігі бар аралық ендерімен қамтамасыз етеді, Kelly бізге sizing rule береді. Екеуі де бермейтін — неге аралық кең деген сұраққа жауап. Болжамдық дисперсияны эпистемикалық және алеаторикалыққа бөлу оған жауап береді, және жауап — жалпы сияқты емес әрекеттегі: нарық шуы төленген риск, модель білмесушілігі жоқ, және sizing бөлгіші солай айтуы керек.
MC Dropout бөлуді дерлік тегін қылады — бір жол (inference-де model.train()) кез келген dropout желісін жуық Байеске айналдырады. Терең ансамбльдер x құнымен жақсырақ калибрлейді. Екеуі де сол асимметриялық бөлгішке қоралайды.
шын мәнінде төлейді ме — бұл қараға жауабы жоқ эмпирикалық сұрақ. Жоғарыда аталған өлшеулер — оны жариялау бағасы.
Әдебиеттер:
- Blundell, C., Cornebise, J., Kavukcuoglu, K., & Wierstra, D. (2015). Weight Uncertainty in Neural Networks. ICML.
- Gal, Y. & Ghahramani, Z. (2016). Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning. ICML.
- Lakshminarayanan, B., Pritzel, A., & Blundell, C. (2017). Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles. NeurIPS.
- Kendall, A. & Gal, Y. (2017). What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? NeurIPS.
- Gibbs, I. & Candes, E. (2021). Adaptive Conformal Inference Under Distribution Shift. NeurIPS.
- Kelly, J. L. (1956). A New Interpretation of Information Rate. Bell System Technical Journal.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.