08.10 | DNF | | | Il Lombardia (1.UWT) | 253 | | | more |
06.10 | 97 | | | Gran Piemonte (1.Pro) | 198 | | | more |
03.10 | 107 | | | Coppa Bernocchi - GP BPM (1.Pro) | 190.7 | | | more |
29.09 | 28 | | | Coppa Agostoni - Giro delle Brianze (1.1) | 193 | | | more |
15.09 | 24 | | | Coppa Sabatini - Gran Premio città di Peccioli (1.Pro) | 198.9 | 2 | 5 | more |
14.09 | 23 | | | Giro della Toscana - Memorial Alfredo Martini (1.1) | 199.2 | | 3 | more |
24.08 › 28.0824-28/8 | | | | Deutschland Tour (2.Pro) | 186.6 | | | more |
28.08 | DNF | | | S4Stage 4 - Schiltach › Stuttgart | 186.6 | | | |
27.08 | 22 | 17 | | S3Stage 3 - Freiburg › Schauinsland | 148.9 | | | |
26.08 | 14 | 10 | | S2Stage 2 - Meiningen › Marburg | 200.7 | | | |
25.08 | 12 | 11 | | S1Stage 1 - Weimar › Meiningen | 171.7 | | | |
24.08 | 12 | 12 | | ProloguePrologue - Weimar › Weimar | 2.6 | | | |
30.07 › 05.0830-5/7 | | | | Tour de Pologne (2.UWT) | | | | more |
| 14 | | | Mountains classificationMountains classification | | | | |
| 21 | | | General classificationGeneral classification | | 18 | 16 | |
05.08 | 53 | | | S7Stage 7 - Valsir › Kraków | 177.8 | | | |
04.08 | 21 | 21 | | S6 (ITT)Stage 6 (ITT) - Nowy Targ (Gronków) › Stacja Narciarska Rusiński | 11.8 | | | |
03.08 | 86 | 22 | | S5Stage 5 - Łańcut › Rzeszów 167k | 178.1 | | | |
02.08 | 25 | 23 | | S4Stage 4 - Lesko › Sanok | 179.4 | | | |
01.08 | 27 | 24 | | S3Stage 3 - Kraśnik › Przemyśl | 237.9 | | | |
31.07 | 21 | 37 | | S2Stage 2 - Chełm › Zamość | 205.6 | | | |
30.07 | 53 | 54 | | S1Stage 1 - Kielce › Lublin | 218.8 | | | |
25.07 | 62 | | | Prueba Villafranca - Ordiziako Klasika (1.1) | 165.7 | | | more |
26.06 | 7 | | | National Championships United States ME - Road Race (NC) | 186.1 | | 20 | more |
05.06 › 12.065-12/6 | | | | Critérium du Dauphiné (2.UWT) | | | | more |
| 19 | | | Youth classificationYouth classification | | | | |
| 18 | | | Points classificationPoints classification | | | | |
| 80 | | | General classificationGeneral classification | | 5 | | |
12.06 | 89 | | | S8Stage 8 - Saint-Alban-Leysse › Plateau de Salaison | 138.8 | | | |
11.06 | 102 | 76 | | S7Stage 7 - Saint-Chaffrey › Vaujany | 134.8 | | | |
10.06 | 61 | 69 | | S6Stage 6 - Rives › Gap | 196.5 | | | |
09.06 | 33 | 76 | | S5Stage 5 - Thizy-les-Bourgs › Chaintré | 162.3 | | | |
08.06 | 69 | 85 | | S4 (ITT)Stage 4 (ITT) - Montbrison › La Bâtie d’Urfé | 31.9 | | | |
07.06 | 96 | 83 | | S3Stage 3 - Saint-Paulien › Chastreix-Sancy | 169 | | | |
06.06 | 22 | 8 | | S2Stage 2 - Saint-Péray › Brives-Charensac | 169.8 | | | |
05.06 | 3 | 3 | | S1Stage 1 - La Voulte-sur-Rhône › Beauchastel | 191.8 | 18 | 10 | |
26.04 › 01.0526-1/4 | | | | Tour de Romandie (2.UWT) | | | | more |
| 4 | | | Youth classificationYouth classification | | | | |
| 23 | | | Points classificationPoints classification | | | | |
| 18 | | | General classificationGeneral classification | | 28 | 30 | |
01.05 | 32 | | | S5 (ITT)Stage 5 (ITT) - Aigle › Villars | 15.84 | | | |
30.04 | 16 | 15 | | S4Stage 4 - Aigle › Zinal (Val d'Anniviers) | 180.1 | | | |
29.04 | 23 | 33 | | S3Stage 3 - Valbroye › Valbroye | 165.1 | | | |
28.04 | 5 | 34 | | S2Stage 2 - Échallens › Échallens | 168.2 | 10 | | |
27.04 | 46 | 34 | | S1Stage 1 - La Grande Beroche › Romont | 178 | | | |
26.04 | 15 | 15 | | ProloguePrologue - Lausanne › Lausanne | 5.12 | | | |
18.04 › 22.0418-22/4 | | | | Tour of the Alps (2.Pro) | | | | more |
| 4 | | | Youth classificationYouth classification | | | | |
| 15 | | | General classificationGeneral classification | | 20 | 10 | |
22.04 | 24 | | | S5Stage 5 - Lienz › Lienz | 114.5 | | | |
21.04 | 6 | 14 | | S4Stage 4 - Villabassa › Kals am Grossglockner | 142.4 | 3 | | |
20.04 | 8 | 17 | | S3Stage 3 - Lana › Villabassa | 154.6 | 1 | | |
19.04 | 22 | 20 | | S2Stage 2 - Primiero/S. Martino di Castrozza › Lana | 154.1 | | | |
18.04 | 23 | 23 | | S1Stage 1 - Cles › Primiero/S. Martino di Castrozza | 160.9 | | | |
05.04 › 08.045-8/4 | | | | Circuit Cycliste Sarthe - Pays de la Loire (2.1) | | | | more |
| 5 | | | Youth classificationYouth classification | | | | |
| 3 | | | Mountains classificationMountains classification | | | | |
| 15 | | | Points classificationPoints classification | | | | |
| 21 | | | General classificationGeneral classification | | | 3 | |
08.04 | 30 | | | S4Stage 4 - La Chapelle-Saint-Aubin › La Chapelle-Saint-Aubin | 136.4 | | | |
07.04 | 20 | 8 | | S3Stage 3 - Sablé-sur-Sarthe › Sablé-sur-Sarthe | 176.5 | | | |
06.04 | 26 | 8 | | S2Stage 2 - Le Lude › Le Lude | 174.7 | | | |
05.04 | 8 | 8 | | S1Stage 1 - Mamers › Mamers | 192.3 | 1 | | |
20.02 › 26.0220-26/2 | | | | UAE Tour (2.UWT) | 148 | | | more |
26.02 | DNF | | | S7Stage 7 - Al Ain › Jebel Hafeet | 148 | | | |
25.02 | 123 | 46 | | S6Stage 6 - Expo 2020 Dubai › Expo 2020 Dubai | 180 | | | |
24.02 | 77 | 45 | | S5Stage 5 - Ras al Khaimah Corniche › Al Marjan Island | 182 | | | |
23.02 | 52 | 45 | | S4Stage 4 - Fujairah Fort › Jebel Jais | 181 | | | |
22.02 | 38 | 30 | | S3 (ITT)Stage 3 (ITT) - Ajman › Ajman | 9 | | | |
21.02 | 19 | 30 | | S2Stage 2 - Hudayriyat Island › Abu Dhabi Breakwater | 176 | | | |
20.02 | 49 | 52 | | S1Stage 1 - Madinat Zayed › Madinat Zayed | 184 | | | |
14.02 | 14 | | | Clásica Jaén Paraiso Interior (1.1) | 187.8 | 7 | 5 | more |
13.02 | 110 | | | Clasica de Almeria (1.Pro) | 188.2 | | | more |
12.02 | 28 | | | Vuelta Ciclista a la Region de Murcia Costa Calida (1.1) | 183.2 | | | more |