SPB Git

spb/spboucher.ai Public

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

TypeScript 93.9% HTML 5.2% CSS 0.8%
9.5 KB · 274 lines tsx
Raw Blame History
1/*2  page.tsx3  spboucher.ai Web4  Author: Simon-Pierre Boucher5  Mail: contact@spboucher.ai6*/78import type { Metadata } from "next";9import Link from "next/link";10import {11  ArrowUpRight,12  BookOpenCheck,13  ExternalLink,14  FileText,15  FlaskConical,16  Github,17  GraduationCap,18  Mic,19  ScrollText,20} from "lucide-react";2122import { Badge } from "@/components/ui/badge";23import {24  Card,25  CardContent,26  CardDescription,27  CardHeader,28  CardTitle,29} from "@/components/ui/card";30import { PillLink } from "@/components/pill-link";31import { Reveal } from "@/components/reveal";32import { SectionHeading } from "@/components/section-heading";33import { thesisChapters, uqoWorkingPapers } from "@/lib/research";3435export const metadata: Metadata = {36  title: "Research",37  description:38    "Publications, working papers, and conference presentations by Simon-Pierre Boucher — financial econometrics, commodity markets, monetary policy, and high-frequency finance.",39};4041const workingPapers = [42  {43    title:44      "Has Financialization Changed the Impact of Macro Announcements on U.S. Commodity Markets?",45    venue: "SSRN Working Paper",46    date: "May 2022",47    link: "https://ssrn.com/abstract=400929",48  },49  {50    title:51      "Modelling Volatility Dynamics Between Commodity ETFs and Their Net Asset Value using BVAR and HAR Models",52    venue: "Working Paper",53    date: "January 2023",54  },55  {56    title:57      "Returns and Volatility Around FOMC Announcements: A High-Frequency Analysis of Policy Tone and Novelty",58    venue: "Working Paper",59    date: "November 2023",60  },61];6263const presentations = [64  { event: "CRREP Research Day", detail: "2022, 2023" },65  {66    event: "Canadian Economics Association — 61st & 62nd Annual Conferences",67    detail: "2022, 2023",68  },69  {70    event: "7th Winter Workshop on Commodity Markets",71    detail: "Mont-Tremblant, 2024",72  },73];7475export default function ResearchPage() {76  return (77    <div className="mx-auto max-w-5xl px-4 py-16 sm:px-6">78      <Reveal>79        <SectionHeading80          as="h1"81          eyebrow="Publications & Papers"82          title="Research"83          icon={FlaskConical}84          description="Financial econometrics, commodity markets, monetary policy announcements, high-frequency finance, volatility modelling, textual analysis, and financialization."85        />86      </Reveal>8788      {/* Publication */}89      <section className="mt-12">90        <Reveal>91          <SectionHeading title="Publication" icon={BookOpenCheck} />92          <Card className="mt-4">93            <CardHeader>94              <Badge className="w-fit">The Energy Journal · 2025</Badge>95              <CardTitle className="text-lg leading-snug">96                Speculative Trading in Energy Markets: Evidence from97                Macroeconomic Surprises98              </CardTitle>99              <CardDescription>100                Boucher, S.-P., Gagnon, M.-H., &amp; Power, G. J. (2025)101              </CardDescription>102            </CardHeader>103            <CardContent>104              <Link105                href="/research/chapter-1"106                className="inline-flex items-center gap-1.5 rounded-[0.5rem] bg-foreground px-3 py-1.5 text-xs font-medium text-background shadow-[var(--shadow-soft)] transition-all hover:-translate-y-px hover:bg-foreground/85"107              >108                <ArrowUpRight className="h-3.5 w-3.5" aria-hidden="true" />109                Details110              </Link>111            </CardContent>112          </Card>113        </Reveal>114      </section>115116      {/* PhD thesis */}117      <section className="mt-12">118        <Reveal>119          <SectionHeading title="PhD Thesis" icon={GraduationCap} />120          <p className="mt-3 max-w-3xl text-sm text-muted-foreground">121            <em>122              Three Essays on High-Frequency Return and Volatility Dynamics in123              Commodities and Financial Futures Markets124            </em>{" "}125            — doctoral thesis by articles, Université Laval (188 pages).126            Co-authors: Marie-Hélène Gagnon &amp; Gabriel J. Power.127          </p>128          <div className="mt-4 flex flex-wrap gap-2">129            <PillLink130              href="https://git.spboucher.ai/phd_thesis/blob/main/these-ulaval/main.pdf"131              icon={FileText}132            >133              Full thesis (PDF)134            </PillLink>135            <PillLink136              href="https://git.spboucher.ai/phd_thesis"137              icon={Github}138            >139              GitHub repository140            </PillLink>141          </div>142        </Reveal>143        <div className="mt-4 space-y-4">144          {thesisChapters.map((chapter, i) => (145            <Reveal key={chapter.num} delay={i * 0.08}>146              <Card>147                <CardHeader>148                  <Badge variant="secondary" className="w-fit">149                    {chapter.num} · {chapter.status}150                  </Badge>151                  <CardTitle className="text-lg leading-snug">152                    {chapter.title}153                  </CardTitle>154                </CardHeader>155                <CardContent className="flex flex-wrap gap-2">156                  <Link157                    href={`/research/${chapter.slug}`}158                    className="inline-flex items-center gap-1.5 rounded-[0.5rem] bg-foreground px-3 py-1.5 text-xs font-medium text-background shadow-[var(--shadow-soft)] transition-all hover:-translate-y-px hover:bg-foreground/85"159                  >160                    <ArrowUpRight className="h-3.5 w-3.5" aria-hidden="true" />161                    Details162                  </Link>163                  <PillLink href={chapter.pdf} icon={FileText}>164                    Paper PDF165                  </PillLink>166                  <PillLink href={chapter.source!} icon={Github}>167                    LaTeX source168                  </PillLink>169                </CardContent>170              </Card>171            </Reveal>172          ))}173        </div>174      </section>175176      {/* UQO working paper series */}177      <section className="mt-12">178        <Reveal>179          <SectionHeading180            title="UQO Working Paper Series"181            icon={ScrollText}182            description="Applied econometrics research produced at the Département des sciences administratives, UQO — hedonic pricing, housing markets, and derivatives. Each paper is backed by a fully reproducible pipeline."183          />184        </Reveal>185        <div className="mt-4 space-y-4">186          {uqoWorkingPapers.map((paper, i) => (187            <Reveal key={paper.num} delay={i * 0.08}>188              <Card>189                <CardHeader>190                  <Badge variant="secondary" className="w-fit">191                    {paper.num} · {paper.pages}192                  </Badge>193                  <CardTitle className="text-lg leading-snug">194                    {paper.title}195                  </CardTitle>196                  <CardDescription>{paper.description}</CardDescription>197                </CardHeader>198                <CardContent className="flex flex-wrap gap-2">199                  <Link200                    href={`/research/${paper.slug}`}201                    className="inline-flex items-center gap-1.5 rounded-[0.5rem] bg-foreground px-3 py-1.5 text-xs font-medium text-background shadow-[var(--shadow-soft)] transition-all hover:-translate-y-px hover:bg-foreground/85"202                  >203                    <ArrowUpRight className="h-3.5 w-3.5" aria-hidden="true" />204                    Details205                  </Link>206                  <PillLink href={paper.pdf} icon={FileText}>207                    Paper PDF208                  </PillLink>209                  {paper.repo && (210                    <PillLink href={paper.repo} icon={Github}>211                      Code &amp; data repository212                    </PillLink>213                  )}214                </CardContent>215              </Card>216            </Reveal>217          ))}218        </div>219      </section>220221      {/* Working papers */}222      <section className="mt-12">223        <Reveal>224          <SectionHeading title="Earlier Working Papers" icon={FlaskConical} />225        </Reveal>226        <div className="mt-4 space-y-4">227          {workingPapers.map((paper, i) => (228            <Reveal key={paper.title} delay={i * 0.08}>229              <Card>230                <CardHeader>231                  <Badge variant="secondary" className="w-fit">232                    {paper.venue} · {paper.date}233                  </Badge>234                  <CardTitle className="text-lg leading-snug">235                    {paper.title}236                  </CardTitle>237                </CardHeader>238                {paper.link && (239                  <CardContent>240                    <PillLink href={paper.link} icon={ExternalLink}>241                      View on SSRN242                    </PillLink>243                  </CardContent>244                )}245              </Card>246            </Reveal>247          ))}248        </div>249      </section>250251      {/* Presentations */}252      <section className="mt-12">253        <Reveal>254          <SectionHeading title="Conference Presentations" icon={Mic} />255        </Reveal>256        <div className="mt-4 grid gap-4 sm:grid-cols-3">257          {presentations.map((p, i) => (258            <Reveal key={p.event} delay={i * 0.08}>259              <Card className="h-full hover:-translate-y-1 hover:shadow-[var(--shadow-lift)]">260                <CardHeader>261                  <CardTitle className="text-base leading-snug">262                    {p.event}263                  </CardTitle>264                  <CardDescription>{p.detail}</CardDescription>265                </CardHeader>266              </Card>267            </Reveal>268          ))}269        </div>270      </section>271    </div>272  );273}274