SPB Git

spb/spboucher.ai Public

spboucher.ai — personal website of Simon-Pierre Boucher.

TypeScript 93.4% HTML 5.5% CSS 1%

Teaching: UQO course material links · Research: PhD thesis chapter PDFs

Teaching — new 'Professor UQO' section with IMM1003 & IMM1033 cards
(course plan PDF, 14-session slides, 3 practical assignments each),
plus the Québec real-estate market report and full repo links.

Research — new 'PhD Thesis' section: full thesis PDF (188 pp.) and the
three chapter cards, each with Paper PDF + LaTeX source links to the
phd-thesis repo. Chapter 1 PDF was compiled and pushed to that repo
(fixed an apalike/natbib conflict).

All 11 external links verified 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 6 days ago (Aug 5, 2026) parent fa05a71

Showing 2 changed files with +217 and −3

modified app/research/page.tsx +102 −1
@@ -6,7 +6,7 @@
6 6 */
7 7
8 8 import type { Metadata } from "next";
9 import { ExternalLink } from "lucide-react";
9 +import { ExternalLink, FileText, Github } from "lucide-react";
10 10
11 11 import { Badge } from "@/components/ui/badge";
12 12 import {
@@ -46,6 +46,36 @@ const workingPapers = [
46 46 },
47 47 ];
48 48
49 +const thesisChapters = [
50 + {
51 + num: "Chapter 1",
52 + title:
53 + "Speculative Trading in Energy Markets: Evidence from Macroeconomic Surprises",
54 + status: "Revised version for The Energy Journal",
55 + pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/phd_chap1_20260731/main.pdf",
56 + source:
57 + "https://github.com/spboucher-ai/phd-thesis/tree/main/phd_chap1_20260731",
58 + },
59 + {
60 + num: "Chapter 2",
61 + title:
62 + "Seeing Through the ETF: Indicative NAV and Commodity Volatility Transmission",
63 + status: "Submission version, Journal of Futures Markets",
64 + pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/phd_chap2_20260731/main.pdf",
65 + source:
66 + "https://github.com/spboucher-ai/phd-thesis/tree/main/phd_chap2_20260731",
67 + },
68 + {
69 + num: "Chapter 3",
70 + title:
71 + "Returns and Volatility Around FOMC Announcements: A High-Frequency Analysis of Policy Tone and Novelty",
72 + status: "Manuscript, 2026",
73 + pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/PHD_chapitre3_theses_20260731/chapitre3.pdf",
74 + source:
75 + "https://github.com/spboucher-ai/phd-thesis/tree/main/PHD_chapitre3_theses_20260731",
76 + },
77 +];
78 +
49 79 const presentations = [
50 80 { event: "CRREP Research Day", detail: "2022, 2023" },
51 81 {
@@ -92,6 +122,77 @@ export default function ResearchPage() {
92 122 </Reveal>
93 123 </section>
94 124
125 + {/* PhD thesis */}
126 + <section className="mt-12">
127 + <Reveal>
128 + <h2 className="text-xl font-semibold tracking-tight">PhD Thesis</h2>
129 + <p className="mt-2 max-w-3xl text-sm text-muted-foreground">
130 + <em>
131 + Three Essays on High-Frequency Return and Volatility Dynamics in
132 + Commodities and Financial Futures Markets
133 + </em>{" "}
134 + — doctoral thesis by articles, Université Laval (188 pages).
135 + Co-authors: Marie-Hélène Gagnon &amp; Gabriel J. Power.
136 + </p>
137 + <div className="mt-3 flex flex-wrap gap-3">
138 + <a
139 + href="https://github.com/spboucher-ai/phd-thesis/blob/main/these-ulaval/main.pdf"
140 + target="_blank"
141 + rel="noopener noreferrer"
142 + className="inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline"
143 + >
144 + <FileText className="h-4 w-4" aria-hidden="true" />
145 + Full thesis (PDF)
146 + </a>
147 + <a
148 + href="https://github.com/spboucher-ai/phd-thesis"
149 + target="_blank"
150 + rel="noopener noreferrer"
151 + className="inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline"
152 + >
153 + <Github className="h-4 w-4" aria-hidden="true" />
154 + GitHub repository
155 + </a>
156 + </div>
157 + </Reveal>
158 + <div className="mt-4 space-y-4">
159 + {thesisChapters.map((chapter, i) => (
160 + <Reveal key={chapter.num} delay={i * 0.08}>
161 + <Card>
162 + <CardHeader>
163 + <Badge variant="secondary" className="w-fit">
164 + {chapter.num} · {chapter.status}
165 + </Badge>
166 + <CardTitle className="text-lg leading-snug">
167 + {chapter.title}
168 + </CardTitle>
169 + </CardHeader>
170 + <CardContent className="flex flex-wrap gap-4">
171 + <a
172 + href={chapter.pdf}
173 + target="_blank"
174 + rel="noopener noreferrer"
175 + className="inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline"
176 + >
177 + <FileText className="h-4 w-4" aria-hidden="true" />
178 + Paper PDF
179 + </a>
180 + <a
181 + href={chapter.source}
182 + target="_blank"
183 + rel="noopener noreferrer"
184 + className="inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline"
185 + >
186 + <Github className="h-4 w-4" aria-hidden="true" />
187 + LaTeX source
188 + </a>
189 + </CardContent>
190 + </Card>
191 + </Reveal>
192 + ))}
193 + </div>
194 + </section>
195 +
95 196 {/* Working papers */}
96 197 <section className="mt-12">
97 198 <Reveal>
modified app/teaching/page.tsx +115 −2
@@ -6,11 +6,13 @@
6 6 */
7 7
8 8 import type { Metadata } from "next";
9 +import { FileText, Github, Presentation, Wrench } from "lucide-react";
9 10
10 11 import { Badge } from "@/components/ui/badge";
11 12 import {
12 13 Card,
13 14 CardContent,
15 + CardDescription,
14 16 CardHeader,
15 17 CardTitle,
16 18 } from "@/components/ui/card";
@@ -22,6 +24,27 @@ export const metadata: Metadata = {
22 24 "Courses taught by Simon-Pierre Boucher at Université Laval — capital markets, financial econometrics, financial management, and financial theory.",
23 25 };
24 26
27 +const UQO_REPO = "https://github.com/spboucher-ai/UQO_COURS_PUBLIC";
28 +
29 +const uqoCourses = [
30 + {
31 + code: "IMM1003",
32 + title: "Éléments d'évaluation immobilière",
33 + description:
34 + "Foundations of real-estate appraisal — market analysis, comparison and income methods.",
35 + dir: "IMM1003-20_Elements_evaluation_immobiliere",
36 + slidesLabel: "Slides — 14 sessions (PDF)",
37 + },
38 + {
39 + code: "IMM1033",
40 + title: "Méthodes du coût",
41 + description:
42 + "Cost approach to valuation — land value, replacement cost, and depreciation analysis.",
43 + dir: "IMM1033-20_Methodes_du_cout",
44 + slidesLabel: "Slides — 14 sessions (PDF)",
45 + },
46 +];
47 +
25 48 const courses = [
26 49 {
27 50 code: "GSF-3100",
@@ -66,11 +89,101 @@ export default function TeachingPage() {
66 89 Teaching
67 90 </h1>
68 91 <p className="mt-3 max-w-2xl text-muted-foreground">
69 Lecturer at Université Laval (2021–Present) and Teaching Assistant
70 (2018–2021).
92 + Professor at Université du Québec en Outaouais (UQO), previously
93 + Lecturer (2021–Present) and Teaching Assistant (2018–2021) at
94 + Université Laval.
71 95 </p>
72 96 </Reveal>
73 97
98 + {/* UQO courses with material */}
99 + <section className="mt-12">
100 + <Reveal>
101 + <h2 className="text-xl font-semibold tracking-tight">
102 + Professor — Université du Québec en Outaouais (UQO)
103 + </h2>
104 + <p className="mt-2 max-w-3xl text-sm text-muted-foreground">
105 + Complete course material — Beamer slides, practical assignments
106 + with Excel templates, and a Québec real-estate market report — is
107 + openly available on{" "}
108 + <a
109 + href={UQO_REPO}
110 + target="_blank"
111 + rel="noopener noreferrer"
112 + className="font-medium text-primary hover:underline"
113 + >
114 + GitHub
115 + </a>
116 + .
117 + </p>
118 + </Reveal>
119 + <div className="mt-4 grid gap-4 sm:grid-cols-2">
120 + {uqoCourses.map((course, i) => (
121 + <Reveal key={course.code} delay={i * 0.08} className="h-full">
122 + <Card className="flex h-full flex-col">
123 + <CardHeader>
124 + <Badge className="w-fit font-mono">{course.code}</Badge>
125 + <CardTitle className="text-lg leading-snug">
126 + {course.title}
127 + </CardTitle>
128 + <CardDescription>{course.description}</CardDescription>
129 + </CardHeader>
130 + <CardContent className="flex flex-1 flex-col gap-2.5">
131 + <a
132 + href={`${UQO_REPO}/blob/main/${course.dir}/01_Plan_de_cours/plan_de_cours.pdf`}
133 + target="_blank"
134 + rel="noopener noreferrer"
135 + className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
136 + >
137 + <FileText className="h-4 w-4" aria-hidden="true" />
138 + Course plan (PDF)
139 + </a>
140 + <a
141 + href={`${UQO_REPO}/tree/main/${course.dir}/02_Slides/pdf`}
142 + target="_blank"
143 + rel="noopener noreferrer"
144 + className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
145 + >
146 + <Presentation className="h-4 w-4" aria-hidden="true" />
147 + {course.slidesLabel}
148 + </a>
149 + <a
150 + href={`${UQO_REPO}/tree/main/${course.dir}/03_Travaux_pratiques`}
151 + target="_blank"
152 + rel="noopener noreferrer"
153 + className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
154 + >
155 + <Wrench className="h-4 w-4" aria-hidden="true" />
156 + Practical assignments (3 TPs)
157 + </a>
158 + </CardContent>
159 + </Card>
160 + </Reveal>
161 + ))}
162 + </div>
163 + <Reveal className="mt-4">
164 + <div className="flex flex-wrap gap-4">
165 + <a
166 + href={`${UQO_REPO}/blob/main/Rapport_Immobilier_Quebec/rapport_immobilier_quebec.pdf`}
167 + target="_blank"
168 + rel="noopener noreferrer"
169 + className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
170 + >
171 + <FileText className="h-4 w-4" aria-hidden="true" />
172 + Québec real-estate market report (PDF)
173 + </a>
174 + <a
175 + href={UQO_REPO}
176 + target="_blank"
177 + rel="noopener noreferrer"
178 + className="inline-flex items-center gap-2 text-sm font-medium text-primary hover:underline"
179 + >
180 + <Github className="h-4 w-4" aria-hidden="true" />
181 + Full course repository
182 + </a>
183 + </div>
184 + </Reveal>
185 + </section>
186 +
74 187 {/* Lecturer */}
75 188 <section className="mt-12">
76 189 <Reveal>
77 190