View · QuantFull portfolioAI engineering view

Denys Shkola

Software engineer leading an internal AI accelerator team at Erste Digital, and building market-data and quant-research systems in my own time.

Quant development and researchMarket-data pipelines, cost-aware strategy research, MSc Mathematics (martingale optimal transport)

Target roles
  • Quant development and research
Location
Vienna, Austria · authorized to work in Austria · open to EU relocation
Availability
Full-time roles from autumn 2027; internships and part-time roles before then

Start herePulse case study

I'm an MSc Mathematics student at the University of Vienna, focusing on martingale optimal transport and model calibration; in a summer 2026 research project with Prof. Julio Backhoff-Veraguas I implemented the Bass local-volatility model on SPX options. In Pulse, my solo crypto-perpetuals research program, I ran a counted search of 1,871 trials with a hash-chained pre-registration ledger, purged CPCV and deflated Sharpe ratios. Its one surviving book reached a Sharpe ratio of 3.45 on the 2026 holdout (backtest, after costs); my own adversarial review then downgraded it, and the paper reports both.

§ 1

Selected work

  • public, opens
  • private code
  • competition

01AI engineering · Quant

  • Private code

Pulse

Diagram in two lanes. On one Raspberry Pi 5: Bybit and Binance WebSockets feed Rust ingest, Redis Streams and Python services for storage, the daily digest, the console and the paper book. Offline research on public data: 1,871 trials counted, validated with CPCV, the deflated Sharpe ratio, placebo controls and a sealed holdout, written up as a working paper reporting a holdout Sharpe ratio of 3.45 (backtest).ON ONE RASPBERRY PI 5Bybit, BinanceWebSocketsRust ingestRedis StreamsPython servicesstorage · digestconsole · paper bookOFFLINE RESEARCH ON PUBLIC DATA1,871 trialscountedCPCV · deflated Sharpeplacebo · sealed holdoutWorking paperholdout Sharpe 3.45Diagram in two lanes. On one Raspberry Pi 5: Bybit and Binance WebSockets feed Rust ingest, Redis Streams and Python services for storage, the daily digest, the console and the paper book. Offline research on public data: 1,871 trials counted, validated with CPCV, the deflated Sharpe ratio, placebo controls and a sealed holdout, written up as a working paper reporting a holdout Sharpe ratio of 3.45 (backtest).ON ONE RASPBERRY PI 5Bybit, Binance WebSocketsRust ingestRedis StreamsPython servicesstorage · digestconsole · paper bookOFFLINE RESEARCH ON PUBLIC DATA1,871 trialscountedCPCV · deflated Sharpeplacebo · sealed holdoutWorking paperholdout Sharpe 3.45
Fig. 1Two lanes: capture and paper trading on the Pi, research offline on public data. Schematic.

A counted search of 1,871 trials, pre-registered in a hash-chained ledger from 12 Oct. The one surviving market-neutral book scored Sharpe 3.45 on the 2026 holdout (backtest, after costs), and my own adversarial review then downgraded it: the paper reports the result and the downgrade.

Rigor
Every result deflated for 1,871 counted trials; from 12 Oct 2026 every test hash-chained into a ledger, with its pass and kill bars, before it ran
Best result
Holdout Sharpe 3.45, +23.0 bp/day net, HAC t 2.61, worst drawdown 7.9% (backtest); downgraded on my own review because part of its design had seen the window

Rust · Redis Streams · Python, on one Raspberry Pi 5

02Quant

  • Private code

Multi-exchange crypto market-data platform

Data-flow diagram. Exchange feeds enter Rust collectors (19 of 33 exchange integrations implemented by me), which publish normalized events on NATS. Go services, a gateway and a market engine, consume them and use ClickHouse, PostgreSQL and Redis; a Node API, which is also the control plane, serves the React/TypeScript web clients.Exchangesvenue feedsRust collectors19 of 33 by meNATSbusGo gatewaymarket engineClickHousePostgreSQL · RedisNode APIcontrol planeReact / TS UIweb clientsData-flow diagram. Exchange feeds enter Rust collectors (19 of 33 exchange integrations implemented by me), which publish normalized events on NATS. Go services, a gateway and a market engine, consume them and use ClickHouse, PostgreSQL and Redis; a Node API, which is also the control plane, serves the React/TypeScript web clients.Exchangesvenue feedsRust collectors19 of 33 by meNATS busGo gatewaymarket engineClickHousePostgreSQL · RedisNode APIcontrol planeReact / TS UIweb clients
Fig. 2High-level data flow of the platform. Schematic.

Production crypto market-data platform, co-developed in a team of two: I implemented 19 of its 33 Rust exchange integrations and the shared normalization layer.

Scope
Co-developer, two-person team

Rust · NATS · Go · ClickHouse

03Quant

  • Private code
  • Competition, team entry

IMC Prosperity 4

Team entry: I built the fair-value models, quoting logic and research tooling. My team reached Phase 2. Round-1 test-run PnL rose from 1,817 to 4,789 XIRECs.

Python 3.12 · pandas, NumPy · SciPy (optimize), statsmodels · Jupyter, ipywidgets, Plotly

04Quant

Bass local vol

An exact Gaussian convolution restored the martingale property that quadrature broke on the real smile (max |z| 17.8 → 1.8) and cut the fixed point from 254/499 to 10/12 iterations.

Python · NumPy and SciPy · Jupyter · pytest

05AI engineering · Quant

QNN forecasting

BSc thesis graded 1: Qiskit and PyTorch QNNs forecasting returns and covariances of five assets, with a pipeline that reproduces the thesis results bit for bit and is benchmarked on 121 held-out days.

Python · Qiskit and Qiskit Aer · PyTorch · Optuna

06Quant

  • Private code

Order-book spoofing-pattern detector

Detector for a pattern consistent with spoofing on a crypto perpetual: over 14 h, about 97% of 4,961 large placements were cancelled essentially unfilled.

Python 3.11+ · websockets, aiohttp · Polars · PyArrow / Parquet

07AI engineering · Quant

  • Private code

Prediction-market matching and arbitrage

An LLM contract-matching pipeline over ≈ 255k Kalshi and Polymarket markets, feeding a fee-aware arbitrage scanner. Built solo, with 529 automated tests.

Python 3.12 · Polars · scikit-learn · sentence-transformers

§ 2

Experience

  1. Erste Digital

    Erste Group’s technology subsidiary · Vienna, Austria

    Sep 2024 – PresentCurrent

    Software Engineer

    • Lead an internal AI accelerator team and built an AI modernization pipeline for legacy Natural/Adabas mainframe code: call-chain mapping → source ingestion → AI analysis and as-is documentation (screens, business rules) → generated Java/OSB integration connectors → review-ready pull requests.
    • Delivered 5 complete use cases and 10+ connectors; typical use-case cycle time fell by over 80%, from more than three monthly release cycles to under one work week and a single release (n = 5).
    Feb 2024 – Aug 2024

    Intern, Mainframe (Natural) Developer

    • Customer-database business logic in Natural/Adabas and internal analysis tooling, 25 h/week alongside the BSc.
  2. Student society

    WUTIS, Algorithmic Trading division (Vienna student investment society)

    Vienna, Austria

    Oct 2024 – Summer 2026

    Senior Associate, Workshop Leader and Recruiter

    • Progression: Fellow Analyst (winter 2024/25) → Analyst / Project Lead (summer 2025) → Associate / Project Lead (winter 2025/26) → Senior Associate, Workshop Leader and Recruiter (summer 2026).
    • Led a 3-person CRNN volatility-forecasting team (summer 2025) and a 5-person quantum-ML portfolio team (winter 2025/26).

Full CV

§ 3

Education & awards

Education

Education
YearDegree
2027expected autumnMSc Mathematics (in progress)University of Vienna · Mar 2026 – expected autumn 2027Research direction: martingale optimal transport and model calibration (Bass-type).
2026BSc MathematicsUniversity of Vienna · Oct 2023 – Jun 2026Thesis (within the Bachelor seminar): “Quantum Neural Networks: Theory and Application for Financial Time Series Forecasting”, supervised by Priv.-Doz. Dr. Lukas Exl.Thesis code and results

Awards

Awards
YearAward
2026IMC Prosperity 4: team reached Phase 2Team entry in IMC's Prosperity 4 algorithmic-trading competition (Apr 2026); Phase 2 required at least 200,000 XIRECs over rounds 1–2. I built fair-value models and quoting logic and iterated round-1 hidden-run PnL about 2.6x across 8 versions (1,817 to 4,789 XIRECs in competition test runs).
2023Jugend forscht 2023: Saxony-Anhalt state final 2nd prize and Carl Zeiss “Sonderpreis Digitalisierung”
2018–202110 olympiad prizes in mathematics and physics, 6 of them first prizes

§ 4

Skills

Quant research methods and tools
  • Pre-registration and hash-chained trial ledgers
  • Walk-forward testing and purged CPCV with embargo
  • HAC t-statistics, deflated Sharpe ratio, PBO
  • Placebo and label-permutation controls
  • Backtesting (backtrader, hftbacktest)
  • Alpaca API
Mathematics
  • Probability and stochastic calculus
  • Martingales and martingale optimal transport
  • SDEs and SPDEs
  • Measure theory
  • Black–Scholes, Heston, local and stochastic volatility
  • Bass calibration
  • Statistics and time series
  • Numerical analysis
  • Optimization
  • Machine learning
Programming languages
  • Python
  • Rust
  • Go
  • TypeScript
  • Java
  • SQL
  • Bash
  • Natural (Adabas)
  • Swift
ML and scientific Python
  • pandas
  • NumPy
  • scikit-learn
  • PyTorch
  • TensorFlow/Keras
  • statsmodels
  • LightGBM
  • Optuna
  • Qiskit
  • sentence-transformers
Data, streaming and storage
  • Kafka
  • NATS
  • Redis (Streams, Bull)
  • ClickHouse
  • PostgreSQL
  • MongoDB
  • Parquet

§ 5

Contact

Open to roles in

  • Quant development and research

Vienna, Austria · authorized to work in Austria · open to EU relocation

Full-time roles from autumn 2027; internships and part-time roles before then