feat: replace all GitHub links with git.spboucher.ai (self-hosted forge)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Showing 11 changed files with +107 and −107
modified
CLAUDE.md
+19 −19
@@ -88,7 +88,7 @@ ngrok http --domain=www.spboucher.ai 3000 | ||
| 88 | 88 | - **Contact:** |
| 89 | 89 | - Academic: simon-pierre.boucher@uqo.ca |
| 90 | 90 | - Personal: contact@spboucher.ai |
| 91 | − - GitHub: https://github.com/spboucher-ai | |
| 91 | + - GitHub: https://git.spboucher.ai | |
| 92 | 92 | - **Languages:** Bilingual — French and English |
| 93 | 93 | |
| 94 | 94 | ### About / Bio |
@@ -138,39 +138,39 @@ App icons: store them in `/public/icons/` (e.g. `/public/icons/zyquo-cloud.png`) | ||
| 138 | 138 | |
| 139 | 139 | ### 1. ☁️ Zyquo Cloud — Multi-provider AI chat |
| 140 | 140 | Native macOS chat client supporting multiple AI providers (Anthropic, OpenAI, and more) in a single unified interface. |
| 141 | −- Repo: https://github.com/spboucher-ai/zyquo-cloud | |
| 142 | −- Release: https://github.com/spboucher-ai/zyquo-cloud/releases/tag/v1.0.0 | |
| 143 | −- DMG: https://github.com/spboucher-ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg | |
| 141 | +- Repo: https://git.spboucher.ai/zyquo-cloud | |
| 142 | +- Release: https://git.spboucher.ai/zyquo-cloud/releases/tag/v1.0.0 | |
| 143 | +- DMG: https://git.spboucher.ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg | |
| 144 | 144 | |
| 145 | 145 | ### 2. 💻 Zyquo Local — 100% local LLMs (MLX) |
| 146 | 146 | Run large language models entirely on-device with Apple MLX. Private, offline, no API keys required. |
| 147 | −- Repo: https://github.com/spboucher-ai/zyquo-local | |
| 148 | −- Release: https://github.com/spboucher-ai/zyquo-local/releases/tag/v1.0.0 | |
| 149 | −- DMG: https://github.com/spboucher-ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg | |
| 147 | +- Repo: https://git.spboucher.ai/zyquo-local | |
| 148 | +- Release: https://git.spboucher.ai/zyquo-local/releases/tag/v1.0.0 | |
| 149 | +- DMG: https://git.spboucher.ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg | |
| 150 | 150 | |
| 151 | 151 | ### 3. 🤖 Zyquo Agent — Autonomous agent for the Mac |
| 152 | 152 | An autonomous AI agent that can act on your Mac: tool calling, task automation, and multi-step workflows. |
| 153 | −- Repo: https://github.com/spboucher-ai/zyquo-agent | |
| 154 | −- Release: https://github.com/spboucher-ai/zyquo-agent/releases/tag/v1.0.0 | |
| 155 | −- DMG: https://github.com/spboucher-ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg | |
| 153 | +- Repo: https://git.spboucher.ai/zyquo-agent | |
| 154 | +- Release: https://git.spboucher.ai/zyquo-agent/releases/tag/v1.0.0 | |
| 155 | +- DMG: https://git.spboucher.ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg | |
| 156 | 156 | |
| 157 | 157 | ### 4. 🌍 Zyquo Atlas — AI-native web browser |
| 158 | 158 | A web browser built around AI from the ground up: page understanding, summarization, and assisted browsing. |
| 159 | −- Repo: https://github.com/spboucher-ai/zyquo-atlas | |
| 160 | −- Release: https://github.com/spboucher-ai/zyquo-atlas/releases/tag/v1.0.0 | |
| 161 | −- DMG: https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg | |
| 159 | +- Repo: https://git.spboucher.ai/zyquo-atlas | |
| 160 | +- Release: https://git.spboucher.ai/zyquo-atlas/releases/tag/v1.0.0 | |
| 161 | +- DMG: https://git.spboucher.ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg | |
| 162 | 162 | |
| 163 | 163 | ### 5. ⚒️ Zyquo MLX — On-device model forge |
| 164 | 164 | Fine-tune and quantize models directly on Apple Silicon: LoRA/QLoRA fine-tuning, quantization, and model management with MLX. |
| 165 | −- Repo: https://github.com/spboucher-ai/zyquo-mlx | |
| 166 | −- Release: https://github.com/spboucher-ai/zyquo-mlx/releases/tag/v1.0.0 | |
| 167 | −- DMG: https://github.com/spboucher-ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg | |
| 165 | +- Repo: https://git.spboucher.ai/zyquo-mlx | |
| 166 | +- Release: https://git.spboucher.ai/zyquo-mlx/releases/tag/v1.0.0 | |
| 167 | +- DMG: https://git.spboucher.ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg | |
| 168 | 168 | |
| 169 | 169 | ### 6. 🔀 Zyquo Router — Local LLM gateway |
| 170 | 170 | A local gateway that routes requests across LLM providers and local models through a single unified endpoint. |
| 171 | −- Repo: https://github.com/spboucher-ai/zyquo-router | |
| 172 | −- Release: https://github.com/spboucher-ai/zyquo-router/releases/tag/v1.0.0 | |
| 173 | −- DMG: https://github.com/spboucher-ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg | |
| 171 | +- Repo: https://git.spboucher.ai/zyquo-router | |
| 172 | +- Release: https://git.spboucher.ai/zyquo-router/releases/tag/v1.0.0 | |
| 173 | +- DMG: https://git.spboucher.ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg | |
| 174 | 174 | |
| 175 | 175 | ## Design Guidelines |
| 176 | 176 | |
modified
README.md
+8 −8
@@ -72,17 +72,17 @@ Six native macOS applications for AI and local LLMs — Swift/SwiftUI, built for | ||
| 72 | 72 | |
| 73 | 73 | | | App | Description | Links | |
| 74 | 74 | |---|-----|-------------|-------| |
| 75 | −| <img src="public/icons/zyquo-cloud.png" width="48" alt="Zyquo Cloud icon"/> | **☁️ Zyquo Cloud** | Multi-provider AI chat — Anthropic, OpenAI, and more in one unified interface | [Repo](https://github.com/spboucher-ai/zyquo-cloud) · [Release](https://github.com/spboucher-ai/zyquo-cloud/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg) | | |
| 76 | −| <img src="public/icons/zyquo-local.png" width="48" alt="Zyquo Local icon"/> | **💻 Zyquo Local** | 100% local LLMs with Apple MLX — private, offline, no API keys | [Repo](https://github.com/spboucher-ai/zyquo-local) · [Release](https://github.com/spboucher-ai/zyquo-local/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg) | | |
| 77 | −| <img src="public/icons/zyquo-agent.png" width="48" alt="Zyquo Agent icon"/> | **🤖 Zyquo Agent** | Autonomous AI agent for the Mac — tool calling, automation, multi-step workflows | [Repo](https://github.com/spboucher-ai/zyquo-agent) · [Release](https://github.com/spboucher-ai/zyquo-agent/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg) | | |
| 78 | −| <img src="public/icons/zyquo-atlas.png" width="48" alt="Zyquo Atlas icon"/> | **🌍 Zyquo Atlas** | AI-native web browser — page understanding, summarization, assisted browsing | [Repo](https://github.com/spboucher-ai/zyquo-atlas) · [Release](https://github.com/spboucher-ai/zyquo-atlas/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg) | | |
| 79 | −| <img src="public/icons/zyquo-mlx.png" width="48" alt="Zyquo MLX icon"/> | **⚒️ Zyquo MLX** | On-device model forge — LoRA/QLoRA fine-tuning, quantization, model management | [Repo](https://github.com/spboucher-ai/zyquo-mlx) · [Release](https://github.com/spboucher-ai/zyquo-mlx/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg) | | |
| 80 | −| <img src="public/icons/zyquo-router.png" width="48" alt="Zyquo Router icon"/> | **🔀 Zyquo Router** | Local LLM gateway — one unified endpoint across providers and local models | [Repo](https://github.com/spboucher-ai/zyquo-router) · [Release](https://github.com/spboucher-ai/zyquo-router/releases/tag/v1.0.0) · [DMG](https://github.com/spboucher-ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg) | | |
| 75 | +| <img src="public/icons/zyquo-cloud.png" width="48" alt="Zyquo Cloud icon"/> | **☁️ Zyquo Cloud** | Multi-provider AI chat — Anthropic, OpenAI, and more in one unified interface | [Repo](https://git.spboucher.ai/zyquo-cloud) · [Release](https://git.spboucher.ai/zyquo-cloud/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg) | | |
| 76 | +| <img src="public/icons/zyquo-local.png" width="48" alt="Zyquo Local icon"/> | **💻 Zyquo Local** | 100% local LLMs with Apple MLX — private, offline, no API keys | [Repo](https://git.spboucher.ai/zyquo-local) · [Release](https://git.spboucher.ai/zyquo-local/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg) | | |
| 77 | +| <img src="public/icons/zyquo-agent.png" width="48" alt="Zyquo Agent icon"/> | **🤖 Zyquo Agent** | Autonomous AI agent for the Mac — tool calling, automation, multi-step workflows | [Repo](https://git.spboucher.ai/zyquo-agent) · [Release](https://git.spboucher.ai/zyquo-agent/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg) | | |
| 78 | +| <img src="public/icons/zyquo-atlas.png" width="48" alt="Zyquo Atlas icon"/> | **🌍 Zyquo Atlas** | AI-native web browser — page understanding, summarization, assisted browsing | [Repo](https://git.spboucher.ai/zyquo-atlas) · [Release](https://git.spboucher.ai/zyquo-atlas/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg) | | |
| 79 | +| <img src="public/icons/zyquo-mlx.png" width="48" alt="Zyquo MLX icon"/> | **⚒️ Zyquo MLX** | On-device model forge — LoRA/QLoRA fine-tuning, quantization, model management | [Repo](https://git.spboucher.ai/zyquo-mlx) · [Release](https://git.spboucher.ai/zyquo-mlx/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg) | | |
| 80 | +| <img src="public/icons/zyquo-router.png" width="48" alt="Zyquo Router icon"/> | **🔀 Zyquo Router** | Local LLM gateway — one unified endpoint across providers and local models | [Repo](https://git.spboucher.ai/zyquo-router) · [Release](https://git.spboucher.ai/zyquo-router/releases/tag/v1.0.0) · [DMG](https://git.spboucher.ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg) | | |
| 81 | 81 | |
| 82 | 82 | ## 🚀 Quick Start |
| 83 | 83 | |
| 84 | 84 | ```bash |
| 85 | −git clone https://github.com/spboucher-ai/spboucher.ai.git | |
| 85 | +git clone https://git.spboucher.ai/spboucher.ai.git | |
| 86 | 86 | cd spboucher.ai |
| 87 | 87 | |
| 88 | 88 | npm install # install dependencies |
@@ -157,7 +157,7 @@ scripts/ Production start script (PM2) | ||
| 157 | 157 | |---|---| |
| 158 | 158 | | 🎓 Academic | [simon-pierre.boucher@uqo.ca](mailto:simon-pierre.boucher@uqo.ca) | |
| 159 | 159 | | ✉️ Personal | [contact@spboucher.ai](mailto:contact@spboucher.ai) | |
| 160 | −| 🐙 GitHub | [@spboucher-ai](https://github.com/spboucher-ai) | | |
| 160 | +| 🐙 GitHub | [@spboucher-ai](https://git.spboucher.ai) | | |
| 161 | 161 | | 📍 Office | UQO, Gatineau — Pavillon Alexandre-Taché | |
| 162 | 162 | |
| 163 | 163 | --- |
modified
app/apps/[slug]/page.tsx
+1 −1
@@ -337,7 +337,7 @@ export default async function ProjectDetailPage({ params }: PageProps) { | ||
| 337 | 337 | className={buttonVariants({ variant: "default", size: "sm" })} |
| 338 | 338 | > |
| 339 | 339 | <Github aria-hidden="true" /> |
| 340 | − View on GitHub | |
| 340 | + View source | |
| 341 | 341 | </a> |
| 342 | 342 | {project.demo && ( |
| 343 | 343 | <a |
modified
app/cv/page.tsx
+2 −2
@@ -129,13 +129,13 @@ export default function CvPage() { | ||
| 129 | 129 | contact@spboucher.ai (personal) |
| 130 | 130 | </a> |
| 131 | 131 | <a |
| 132 | − href="https://github.com/spboucher-ai" | |
| 132 | + href="https://git.spboucher.ai" | |
| 133 | 133 | target="_blank" |
| 134 | 134 | rel="noopener noreferrer" |
| 135 | 135 | className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground transition-all hover:-translate-y-px hover:border-primary/30 hover:text-foreground" |
| 136 | 136 | > |
| 137 | 137 | <IconTile icon={Github} size="sm" /> |
| 138 | − github.com/spboucher-ai | |
| 138 | + git.spboucher.ai | |
| 139 | 139 | </a> |
| 140 | 140 | <span className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground"> |
| 141 | 141 | <IconTile icon={MapPin} size="sm" /> |
modified
app/page.tsx
+1 −1
@@ -174,7 +174,7 @@ export default function HomePage() { | ||
| 174 | 174 | Apps & Open Source |
| 175 | 175 | </Link> |
| 176 | 176 | <a |
| 177 | − href="https://github.com/spboucher-ai" | |
| 177 | + href="https://git.spboucher.ai" | |
| 178 | 178 | target="_blank" |
| 179 | 179 | rel="noopener noreferrer" |
| 180 | 180 | className={cn(buttonVariants({ variant: "outline" }))} |
modified
app/research/page.tsx
+2 −2
@@ -127,13 +127,13 @@ export default function ResearchPage() { | ||
| 127 | 127 | </p> |
| 128 | 128 | <div className="mt-4 flex flex-wrap gap-2"> |
| 129 | 129 | <PillLink |
| 130 | − href="https://github.com/spboucher-ai/phd-thesis/blob/main/these-ulaval/main.pdf" | |
| 130 | + href="https://git.spboucher.ai/phd_thesis/blob/main/these-ulaval/main.pdf" | |
| 131 | 131 | icon={FileText} |
| 132 | 132 | > |
| 133 | 133 | Full thesis (PDF) |
| 134 | 134 | </PillLink> |
| 135 | 135 | <PillLink |
| 136 | − href="https://github.com/spboucher-ai/phd-thesis" | |
| 136 | + href="https://git.spboucher.ai/phd_thesis" | |
| 137 | 137 | icon={Github} |
| 138 | 138 | > |
| 139 | 139 | GitHub repository |
modified
app/teaching/page.tsx
+5 −5
@@ -41,7 +41,7 @@ export const metadata: Metadata = { | ||
| 41 | 41 | "Courses taught by Simon-Pierre Boucher at Université Laval — capital markets, financial econometrics, financial management, and financial theory.", |
| 42 | 42 | }; |
| 43 | 43 | |
| 44 | −const UQO_REPO = "https://github.com/spboucher-ai/UQO_COURS_PUBLIC"; | |
| 44 | +const UQO_REPO = "https://git.spboucher.ai/uqo_cours_public"; | |
| 45 | 45 | const UQO_RAW = |
| 46 | 46 | "https://raw.githubusercontent.com/spboucher-ai/UQO_COURS_PUBLIC/main"; |
| 47 | 47 | |
@@ -148,7 +148,7 @@ const ulavalCourses: UlavalCourse[] = [ | ||
| 148 | 148 | code: "GSF-3100", |
| 149 | 149 | title: "Capital Markets (Marché des capitaux)", |
| 150 | 150 | term: "Undergraduate · F2021–W2023", |
| 151 | − repoName: "GSF3100", | |
| 151 | + repoName: "gsf3100", | |
| 152 | 152 | description: |
| 153 | 153 | "Fixed income and capital markets — LaTeX Beamer slides for every section of the course.", |
| 154 | 154 | groups: [ |
@@ -178,7 +178,7 @@ const ulavalCourses: UlavalCourse[] = [ | ||
| 178 | 178 | code: "GSF-6053", |
| 179 | 179 | title: "Financial Econometrics I", |
| 180 | 180 | term: "Graduate · W2022", |
| 181 | − repoName: "GSF6053", | |
| 181 | + repoName: "gsf6053", | |
| 182 | 182 | description: |
| 183 | 183 | "OLS, MLE, hypothesis testing, and time-series econometrics — session slides plus Stata lab sessions.", |
| 184 | 184 | groups: [ |
@@ -209,7 +209,7 @@ const ulavalCourses: UlavalCourse[] = [ | ||
| 209 | 209 | code: "GSF-6053", |
| 210 | 210 | title: "Financial Econometrics I", |
| 211 | 211 | term: "Graduate · W2025", |
| 212 | − repoName: "GSF6053_H25", | |
| 212 | + repoName: "gsf6053_h25", | |
| 213 | 213 | description: |
| 214 | 214 | "Full W2025 edition — lecture slides, typed lecture notes, formal proofs, and 14 exercise sets with complete solutions.", |
| 215 | 215 | groups: [ |
@@ -608,7 +608,7 @@ export default function TeachingPage() { | ||
| 608 | 608 | ))} |
| 609 | 609 | <div> |
| 610 | 610 | <PillLink |
| 611 | − href={`https://github.com/spboucher-ai/${course.repoName}`} | |
| 611 | + href={`https://git.spboucher.ai/${course.repoName}`} | |
| 612 | 612 | icon={Github} |
| 613 | 613 | > |
| 614 | 614 | Full course repository |
modified
components/site-footer.tsx
+2 −2
@@ -38,10 +38,10 @@ export function SiteFooter() { | ||
| 38 | 38 | <Mail className="h-3.5 w-3.5" aria-hidden="true" /> |
| 39 | 39 | </a> |
| 40 | 40 | <a |
| 41 | − href="https://github.com/spboucher-ai" | |
| 41 | + href="https://git.spboucher.ai" | |
| 42 | 42 | target="_blank" |
| 43 | 43 | rel="noopener noreferrer" |
| 44 | − aria-label="GitHub profile" | |
| 44 | + aria-label="Git profile" | |
| 45 | 45 | className="inline-flex h-8 w-8 items-center justify-center border border-foreground/15 bg-card text-muted-foreground transition-all hover:-translate-y-px hover:border-foreground/50 hover:text-foreground" |
| 46 | 46 | > |
| 47 | 47 | <Github className="h-3.5 w-3.5" aria-hidden="true" /> |
modified
lib/apps.ts
+40 −40
@@ -66,7 +66,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 66 | 66 | description: |
| 67 | 67 | "Claude-powered financial analysis platform: 265+ market-data endpoints, a quantitative Python engine (Monte Carlo, GARCH, VaR, Black-Scholes, portfolio optimization), multi-source web research, and streaming chat with PDF/Word/Slides export.", |
| 68 | 68 | language: "TypeScript", |
| 69 | − repo: "https://github.com/spboucher-ai/vquant", | |
| 69 | + repo: "https://git.spboucher.ai/vquant", | |
| 70 | 70 | demo: "https://www.vquant.ai", |
| 71 | 71 | }, |
| 72 | 72 | { |
@@ -78,7 +78,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 78 | 78 | description: |
| 79 | 79 | "The transparent, task-based AI job-exposure index — 923 occupations scored from 18,796 O*NET tasks by a multi-model LLM panel, with confidence intervals.", |
| 80 | 80 | language: "TypeScript", |
| 81 | − repo: "https://github.com/spboucher-ai/airiskindex", | |
| 81 | + repo: "https://git.spboucher.ai/airiskindex", | |
| 82 | 82 | demo: "https://www.airiskindex.io", |
| 83 | 83 | }, |
| 84 | 84 | { |
@@ -90,7 +90,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 90 | 90 | description: |
| 91 | 91 | "Self-hosted blockchain explorer for stablecoins and major crypto — 24 chains, free public RPCs only, zero API keys. Track balances, transfers, and token supplies across EVM and non-EVM networks.", |
| 92 | 92 | language: "Python", |
| 93 | − repo: "https://github.com/spboucher-ai/coinexplorer", | |
| 93 | + repo: "https://git.spboucher.ai/coinexplorer", | |
| 94 | 94 | demo: "https://www.coinexplorer.io", |
| 95 | 95 | }, |
| 96 | 96 | { |
@@ -102,7 +102,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 102 | 102 | description: |
| 103 | 103 | "Discriminative, contamination-resistant, live LLM ranking — IRT 2PL and Bradley–Terry scoring across 12 domains, with full methodological transparency.", |
| 104 | 104 | language: "TypeScript", |
| 105 | − repo: "https://github.com/spboucher-ai/llmindex", | |
| 105 | + repo: "https://git.spboucher.ai/llmindex", | |
| 106 | 106 | demo: "https://www.llmindex.io", |
| 107 | 107 | }, |
| 108 | 108 | { |
@@ -114,7 +114,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 114 | 114 | description: |
| 115 | 115 | "Independent rental-listing aggregator for Quebec: one dedicated connector per property manager normalizes every listing into a single schema, with full photos, standardized details, and a direct link to the original ad.", |
| 116 | 116 | language: "Python", |
| 117 | − repo: "https://github.com/spboucher-ai/lou-ka", | |
| 117 | + repo: "https://git.spboucher.ai/lou-ka", | |
| 118 | 118 | demo: "https://www.lou-ka.com", |
| 119 | 119 | }, |
| 120 | 120 | { |
@@ -126,7 +126,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 126 | 126 | description: |
| 127 | 127 | "A no-black-box property valuation engine covering 3.7 million Quebec properties and 745,119 real sales — every comparable, every dollar adjustment, and every confidence interval shown in full.", |
| 128 | 128 | language: "TypeScript", |
| 129 | − repo: "https://github.com/spboucher-ai/vrai-prix", | |
| 129 | + repo: "https://git.spboucher.ai/vrai-prix", | |
| 130 | 130 | demo: "https://www.vrai-prix.com", |
| 131 | 131 | }, |
| 132 | 132 | { |
@@ -138,7 +138,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 138 | 138 | description: |
| 139 | 139 | "Quebec's specialized plex valuation engine: 393,867 multi-unit buildings and 1.7 million doors valued with a scale-proof ratio hedonic model, plus a full interactive investor pro forma.", |
| 140 | 140 | language: "TypeScript", |
| 141 | − repo: "https://github.com/spboucher-ai/valoplex", | |
| 141 | + repo: "https://git.spboucher.ai/valoplex", | |
| 142 | 142 | demo: "https://www.valoplex.com", |
| 143 | 143 | }, |
| 144 | 144 | { |
@@ -150,32 +150,32 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 150 | 150 | description: |
| 151 | 151 | "A production-grade economic-measurement platform computing hedonic, hierarchically pooled housing price indexes for Quebec — province, 17 regions, and major cities by property type, with published uncertainty on every row.", |
| 152 | 152 | language: "Python", |
| 153 | − repo: "https://github.com/spboucher-ai/qwhpi-platform", | |
| 153 | + repo: "https://git.spboucher.ai/qwhpi", | |
| 154 | 154 | demo: "https://www.indexqc.house", |
| 155 | 155 | }, |
| 156 | 156 | { |
| 157 | 157 | slug: "os-vault", |
| 158 | 158 | icon: "/icons/os-vault.png", |
| 159 | − dmg: "https://github.com/spboucher-ai/os-vault/releases/latest/download/OSVault-1.0.0.dmg", | |
| 159 | + dmg: "https://git.spboucher.ai/os-vault/releases/latest/download/OSVault-1.0.0.dmg", | |
| 160 | 160 | name: "OS Vault", |
| 161 | 161 | emoji: "🔐", |
| 162 | 162 | tagline: "Self-custody multi-chain crypto wallet", |
| 163 | 163 | description: |
| 164 | 164 | "Self-custody multi-chain crypto wallet for macOS — one phrase, six chain families (11 EVM chains, Bitcoin, Solana, Tron, XRPL, TON), zero API keys, and its own vault encryption.", |
| 165 | 165 | language: "Swift", |
| 166 | − repo: "https://github.com/spboucher-ai/os-vault", | |
| 166 | + repo: "https://git.spboucher.ai/os-vault", | |
| 167 | 167 | }, |
| 168 | 168 | { |
| 169 | 169 | slug: "metrika", |
| 170 | 170 | icon: "/icons/metrika.png", |
| 171 | − dmg: "https://github.com/spboucher-ai/metrika/releases/latest/download/Metrika.dmg", | |
| 171 | + dmg: "https://git.spboucher.ai/metrika/releases/latest/download/Metrika.dmg", | |
| 172 | 172 | name: "Metrika", |
| 173 | 173 | emoji: "📊", |
| 174 | 174 | tagline: "GPU-accelerated statistics for macOS", |
| 175 | 175 | description: |
| 176 | 176 | "Stata-class statistics for macOS, GPU-accelerated by Apple Silicon — native Swift 6, DuckDB engine, MLX/Metal compute, R-validated to 1e-10. Regression, panel FE, IV, GLMs, GPU bootstrap, Bayesian Gibbs, lasso, gradient boosting.", |
| 177 | 177 | language: "Swift", |
| 178 | − repo: "https://github.com/spboucher-ai/metrika", | |
| 178 | + repo: "https://git.spboucher.ai/metrika", | |
| 179 | 179 | }, |
| 180 | 180 | { |
| 181 | 181 | slug: "forge", |
@@ -185,19 +185,19 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 185 | 185 | description: |
| 186 | 186 | "LLM training from scratch in pure C++20 + Metal on Apple Silicon — no PyTorch, no MLX, no ML dependencies. Fused flash attention (fwd+bwd) and simdgroup_matrix GEMM at 10.8 TFLOPS.", |
| 187 | 187 | language: "C++", |
| 188 | − repo: "https://github.com/spboucher-ai/forge", | |
| 188 | + repo: "https://git.spboucher.ai/forge", | |
| 189 | 189 | }, |
| 190 | 190 | { |
| 191 | 191 | slug: "forge-studio", |
| 192 | 192 | icon: "/icons/forge-studio.png", |
| 193 | − dmg: "https://github.com/spboucher-ai/forge-studio/releases/latest/download/ForgeStudio-0.2.0.dmg", | |
| 193 | + dmg: "https://git.spboucher.ai/forge-studio/releases/latest/download/ForgeStudio-0.2.0.dmg", | |
| 194 | 194 | name: "Forge Studio", |
| 195 | 195 | emoji: "🎛️", |
| 196 | 196 | tagline: "macOS cockpit for Forge LLM training", |
| 197 | 197 | description: |
| 198 | 198 | "Native macOS cockpit for the Forge LLM training framework — SwiftUI dashboard with live loss charts, run supervision, dataset prep, checkpoints, and generation on Apple Silicon.", |
| 199 | 199 | language: "Swift", |
| 200 | − repo: "https://github.com/spboucher-ai/forge-studio", | |
| 200 | + repo: "https://git.spboucher.ai/forge-studio", | |
| 201 | 201 | }, |
| 202 | 202 | { |
| 203 | 203 | slug: "air", |
@@ -207,7 +207,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 207 | 207 | description: |
| 208 | 208 | "LLVM-style compiler infrastructure for accounting: LLMs emit economic events, a deterministic compiler produces balanced journal entries. Standalone hash-chained ledger, agent syscalls, and bank reconciliation.", |
| 209 | 209 | language: "Python", |
| 210 | − repo: "https://github.com/spboucher-ai/air", | |
| 210 | + repo: "https://git.spboucher.ai/air", | |
| 211 | 211 | }, |
| 212 | 212 | { |
| 213 | 213 | slug: "ultra-sharp-agent-skills", |
@@ -217,7 +217,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 217 | 217 | description: |
| 218 | 218 | "Research-first skill-authoring system plus 72 production-ready SKILL.md skills for AI agents — documents, frontend, databases, backend, writing, and US/CA tax & accounting. Linted, trigger-tested, validated.", |
| 219 | 219 | language: "Python", |
| 220 | − repo: "https://github.com/spboucher-ai/ultra-sharp-agent-skills", | |
| 220 | + repo: "https://git.spboucher.ai/ultra-sharp-agent-skills", | |
| 221 | 221 | }, |
| 222 | 222 | { |
| 223 | 223 | slug: "artificial-neural-networks-book", |
@@ -227,7 +227,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 227 | 227 | description: |
| 228 | 228 | "Artificial Neural Networks — Methods, Equations and Graphical Representations. A 119-page LaTeX book covering every architecture with rigorous equations, estimation algorithms, and native TikZ figures.", |
| 229 | 229 | language: "LaTeX", |
| 230 | − repo: "https://github.com/spboucher-ai/artificial-neural-networks-book", | |
| 230 | + repo: "https://git.spboucher.ai/artificial-neural-networks-book", | |
| 231 | 231 | }, |
| 232 | 232 | { |
| 233 | 233 | slug: "zyquo-cloud-web", |
@@ -238,7 +238,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 238 | 238 | description: |
| 239 | 239 | "Multi-provider AI chat (12 providers, 170 models) that runs entirely in your browser. Bring your own keys — no backend, no accounts.", |
| 240 | 240 | language: "TypeScript", |
| 241 | − repo: "https://github.com/spboucher-ai/zyquo-cloud-web", | |
| 241 | + repo: "https://git.spboucher.ai/zyquo-cloud-web", | |
| 242 | 242 | demo: "https://www.zyquo.cloud", |
| 243 | 243 | }, |
| 244 | 244 | { |
@@ -249,7 +249,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 249 | 249 | description: |
| 250 | 250 | "PhD thesis (Université Laval) — Three Essays on High-Frequency Return and Volatility Dynamics in Commodities and Financial Futures Markets. Full LaTeX source.", |
| 251 | 251 | language: "LaTeX", |
| 252 | − repo: "https://github.com/spboucher-ai/phd-thesis", | |
| 252 | + repo: "https://git.spboucher.ai/phd_thesis", | |
| 253 | 253 | }, |
| 254 | 254 | { |
| 255 | 255 | slug: "uqo-cours", |
@@ -259,7 +259,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 259 | 259 | description: |
| 260 | 260 | "Course material for UQO — Éléments d'évaluation immobilière (IMM1003) and Méthodes du coût (IMM1033): Beamer slides, practical assignments with Excel templates, and a Québec real-estate market report.", |
| 261 | 261 | language: "LaTeX", |
| 262 | − repo: "https://github.com/spboucher-ai/UQO_COURS_PUBLIC", | |
| 262 | + repo: "https://git.spboucher.ai/uqo_cours_public", | |
| 263 | 263 | }, |
| 264 | 264 | { |
| 265 | 265 | slug: "spboucher-ai", |
@@ -269,7 +269,7 @@ export const openSourceProjects: OpenSourceProject[] = [ | ||
| 269 | 269 | description: |
| 270 | 270 | "The source of this very site — Next.js 16 App Router, Tailwind CSS v4, shadcn/ui, and Framer Motion, with full dark-mode support.", |
| 271 | 271 | language: "TypeScript", |
| 272 | − repo: "https://github.com/spboucher-ai/spboucher.ai", | |
| 272 | + repo: "https://git.spboucher.ai/spboucher.ai", | |
| 273 | 273 | demo: "https://www.spboucher.ai", |
| 274 | 274 | }, |
| 275 | 275 | ]; |
@@ -283,9 +283,9 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 283 | 283 | description: |
| 284 | 284 | "Native macOS chat client supporting multiple AI providers (Anthropic, OpenAI, and more) in a single unified interface.", |
| 285 | 285 | icon: "/icons/zyquo-cloud.png", |
| 286 | − repo: "https://github.com/spboucher-ai/zyquo-cloud", | |
| 287 | − release: "https://github.com/spboucher-ai/zyquo-cloud/releases/tag/v1.0.0", | |
| 288 | − dmg: "https://github.com/spboucher-ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg", | |
| 286 | + repo: "https://git.spboucher.ai/zyquo-cloud", | |
| 287 | + release: "https://git.spboucher.ai/zyquo-cloud/releases/tag/v1.0.0", | |
| 288 | + dmg: "https://git.spboucher.ai/zyquo-cloud/releases/latest/download/ZyquoCloud.dmg", | |
| 289 | 289 | }, |
| 290 | 290 | { |
| 291 | 291 | slug: "zyquo-local", |
@@ -295,9 +295,9 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 295 | 295 | description: |
| 296 | 296 | "Run large language models entirely on-device with Apple MLX. Private, offline, no API keys required.", |
| 297 | 297 | icon: "/icons/zyquo-local.png", |
| 298 | − repo: "https://github.com/spboucher-ai/zyquo-local", | |
| 299 | − release: "https://github.com/spboucher-ai/zyquo-local/releases/tag/v1.0.0", | |
| 300 | − dmg: "https://github.com/spboucher-ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg", | |
| 298 | + repo: "https://git.spboucher.ai/zyquo-local", | |
| 299 | + release: "https://git.spboucher.ai/zyquo-local/releases/tag/v1.0.0", | |
| 300 | + dmg: "https://git.spboucher.ai/zyquo-local/releases/latest/download/ZyquoLocal.dmg", | |
| 301 | 301 | }, |
| 302 | 302 | { |
| 303 | 303 | slug: "zyquo-agent", |
@@ -307,9 +307,9 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 307 | 307 | description: |
| 308 | 308 | "An autonomous AI agent that can act on your Mac: tool calling, task automation, and multi-step workflows.", |
| 309 | 309 | icon: "/icons/zyquo-agent.png", |
| 310 | − repo: "https://github.com/spboucher-ai/zyquo-agent", | |
| 311 | − release: "https://github.com/spboucher-ai/zyquo-agent/releases/tag/v1.0.0", | |
| 312 | − dmg: "https://github.com/spboucher-ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg", | |
| 310 | + repo: "https://git.spboucher.ai/zyquo-agent", | |
| 311 | + release: "https://git.spboucher.ai/zyquo-agent/releases/tag/v1.0.0", | |
| 312 | + dmg: "https://git.spboucher.ai/zyquo-agent/releases/latest/download/ZyquoAgent.dmg", | |
| 313 | 313 | }, |
| 314 | 314 | { |
| 315 | 315 | slug: "zyquo-atlas", |
@@ -319,9 +319,9 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 319 | 319 | description: |
| 320 | 320 | "A web browser built around AI from the ground up: page understanding, summarization, and assisted browsing.", |
| 321 | 321 | icon: "/icons/zyquo-atlas.png", |
| 322 | − repo: "https://github.com/spboucher-ai/zyquo-atlas", | |
| 323 | − release: "https://github.com/spboucher-ai/zyquo-atlas/releases/tag/v1.0.0", | |
| 324 | − dmg: "https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg", | |
| 322 | + repo: "https://git.spboucher.ai/zyquo-atlas", | |
| 323 | + release: "https://git.spboucher.ai/zyquo-atlas/releases/tag/v1.0.0", | |
| 324 | + dmg: "https://git.spboucher.ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg", | |
| 325 | 325 | }, |
| 326 | 326 | { |
| 327 | 327 | slug: "zyquo-mlx", |
@@ -331,9 +331,9 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 331 | 331 | description: |
| 332 | 332 | "Fine-tune and quantize models directly on Apple Silicon: LoRA/QLoRA fine-tuning, quantization, and model management with MLX.", |
| 333 | 333 | icon: "/icons/zyquo-mlx.png", |
| 334 | − repo: "https://github.com/spboucher-ai/zyquo-mlx", | |
| 335 | − release: "https://github.com/spboucher-ai/zyquo-mlx/releases/tag/v1.0.0", | |
| 336 | − dmg: "https://github.com/spboucher-ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg", | |
| 334 | + repo: "https://git.spboucher.ai/zyquo-mlx", | |
| 335 | + release: "https://git.spboucher.ai/zyquo-mlx/releases/tag/v1.0.0", | |
| 336 | + dmg: "https://git.spboucher.ai/zyquo-mlx/releases/latest/download/ZyquoMLX.dmg", | |
| 337 | 337 | }, |
| 338 | 338 | { |
| 339 | 339 | slug: "zyquo-router", |
@@ -343,8 +343,8 @@ export const zyquoApps: ZyquoApp[] = [ | ||
| 343 | 343 | description: |
| 344 | 344 | "A local gateway that routes requests across LLM providers and local models through a single unified endpoint.", |
| 345 | 345 | icon: "/icons/zyquo-router.png", |
| 346 | − repo: "https://github.com/spboucher-ai/zyquo-router", | |
| 347 | − release: "https://github.com/spboucher-ai/zyquo-router/releases/tag/v1.0.0", | |
| 348 | − dmg: "https://github.com/spboucher-ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg", | |
| 346 | + repo: "https://git.spboucher.ai/zyquo-router", | |
| 347 | + release: "https://git.spboucher.ai/zyquo-router/releases/tag/v1.0.0", | |
| 348 | + dmg: "https://git.spboucher.ai/zyquo-router/releases/latest/download/ZyquoRouter.dmg", | |
| 349 | 349 | }, |
| 350 | 350 | ]; |
modified
lib/research-details.ts
+10 −10
@@ -22,7 +22,7 @@ export interface ResearchDetail { | ||
| 22 | 22 | export const researchDetails: ResearchDetail[] = [ |
| 23 | 23 | { |
| 24 | 24 | "slug": "wp11", |
| 25 | − "repo": "https://github.com/spboucher-ai/wp11_uqo", | |
| 25 | + "repo": "https://git.spboucher.ai/wp11_uqo", | |
| 26 | 26 | "hero": { |
| 27 | 27 | "headline": "Random cross-validation is the wrong experiment for valuation models", |
| 28 | 28 | "subheadline": "Twenty hedonic models raced on 514,212 Quebec sales under identical conditions — machine learning wins the random split and loses the forward-in-time one." |
@@ -113,7 +113,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 113 | 113 | }, |
| 114 | 114 | { |
| 115 | 115 | "slug": "wp2", |
| 116 | − "repo": "https://github.com/spboucher-ai/wp2_uqo", | |
| 116 | + "repo": "https://git.spboucher.ai/wp2_uqo", | |
| 117 | 117 | "hero": { |
| 118 | 118 | "headline": "Listing narratives carry named, priceable information", |
| 119 | 119 | "subheadline": "Do agent-written property descriptions contain price-relevant information beyond structural attributes? Yes — 20 interpretable semantic scores lift adjusted R² from 0.452 to 0.511." |
@@ -235,7 +235,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 235 | 235 | }, |
| 236 | 236 | { |
| 237 | 237 | "slug": "wp3", |
| 238 | − "repo": "https://github.com/spboucher-ai/wp3-hedonic-housing-us", | |
| 238 | + "repo": "https://git.spboucher.ai/wp3_uqo", | |
| 239 | 239 | "hero": { |
| 240 | 240 | "headline": "Random splits flatter machine learning in housing", |
| 241 | 241 | "subheadline": "How well do hedonic methods really generalize? XGBoost's R² of 0.833 under a random split collapses to 0.425–0.547 when ten entire states are held out." |
@@ -353,7 +353,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 353 | 353 | }, |
| 354 | 354 | { |
| 355 | 355 | "slug": "wp5", |
| 356 | − "repo": "https://github.com/spboucher-ai/wp5_uqo", | |
| 356 | + "repo": "https://git.spboucher.ai/wp5_uqo", | |
| 357 | 357 | "hero": { |
| 358 | 358 | "headline": "Nearby Airbnb activity is priced into Quebec rents", |
| 359 | 359 | "subheadline": "Is short-term rental density associated with higher residential rents? Each additional Airbnb listing within 500 m corresponds to roughly +0.4% monthly rent." |
@@ -471,7 +471,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 471 | 471 | }, |
| 472 | 472 | { |
| 473 | 473 | "slug": "wp7", |
| 474 | − "repo": "https://github.com/spboucher-ai/wp7_uqo", | |
| 474 | + "repo": "https://git.spboucher.ai/wp7_uqo", | |
| 475 | 475 | "hero": { |
| 476 | 476 | "headline": "What 3.8 Billion Option Contracts Know About Tomorrow", |
| 477 | 477 | "subheadline": "Do option-implied moments predict returns and volatility across assets? Weekly returns yes, daily no — and implied volatility dominates every realized-volatility benchmark." |
@@ -593,7 +593,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 593 | 593 | }, |
| 594 | 594 | { |
| 595 | 595 | "slug": "wp9", |
| 596 | − "repo": "https://github.com/spboucher-ai/wp9_uqo", | |
| 596 | + "repo": "https://git.spboucher.ai/wp9_uqo", | |
| 597 | 597 | "hero": { |
| 598 | 598 | "headline": "Location Is Worth More Than Every Wall Combined", |
| 599 | 599 | "subheadline": "What do structure and neighbourhood each contribute to Canadian home prices? Absorbing 1,153 neighbourhood fixed effects lifts explained variance from 46% to 77%." |
@@ -711,7 +711,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 711 | 711 | }, |
| 712 | 712 | { |
| 713 | 713 | "slug": "wp10", |
| 714 | − "repo": "https://github.com/spboucher-ai/wp10_uqo", | |
| 714 | + "repo": "https://git.spboucher.ai/wp10_uqo", | |
| 715 | 715 | "hero": { |
| 716 | 716 | "headline": "Quebec's Cheapest Homes Pay 65% Too Much Tax", |
| 717 | 717 | "subheadline": "Are municipal assessments equitable? Matching 522,769 sales to the roll shows systematic regressivity — 99% of municipalities fail the IAAO uniformity standard." |
@@ -836,7 +836,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 836 | 836 | }, |
| 837 | 837 | { |
| 838 | 838 | "slug": "chapter-1", |
| 839 | − "repo": "https://github.com/spboucher-ai/phd-thesis", | |
| 839 | + "repo": "https://git.spboucher.ai/phd_thesis", | |
| 840 | 840 | "hero": { |
| 841 | 841 | "headline": "Speculators Dampen Macro News Shocks in Energy Futures", |
| 842 | 842 | "subheadline": "Does speculative trading amplify macroeconomic news in commodity futures? No — greater speculation dampens price drift, volatility, and spreads while improving liquidity." |
@@ -939,7 +939,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 939 | 939 | }, |
| 940 | 940 | { |
| 941 | 941 | "slug": "chapter-2", |
| 942 | − "repo": "https://github.com/spboucher-ai/phd-thesis", | |
| 942 | + "repo": "https://git.spboucher.ai/phd_thesis", | |
| 943 | 943 | "hero": { |
| 944 | 944 | "headline": "Intraday iNAV Reveals Jump-Driven ETF Volatility Transmission", |
| 945 | 945 | "subheadline": "How does volatility flow between commodity ETFs and their underlyings? The intraday indicative NAV shows transmission runs through jumps, not diffusion." |
@@ -1034,7 +1034,7 @@ export const researchDetails: ResearchDetail[] = [ | ||
| 1034 | 1034 | }, |
| 1035 | 1035 | { |
| 1036 | 1036 | "slug": "chapter-3", |
| 1037 | − "repo": "https://github.com/spboucher-ai/phd-thesis", | |
| 1037 | + "repo": "https://git.spboucher.ai/phd_thesis", | |
| 1038 | 1038 | "hero": { |
| 1039 | 1039 | "headline": "Fed Tone Moves Prices, Novelty Moves Volatility", |
| 1040 | 1040 | "subheadline": "When the Fed speaks, what moves markets — what it says or how new it is? Tone drives directional returns; novelty drives volatility." |
modified
lib/research.ts
+17 −17
@@ -29,7 +29,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 29 | 29 | description: |
| 30 | 30 | "Adds sentence-transformer embeddings of listing descriptions to hedonic models of 17,087 Quebec houses — lifting adjusted R² from 0.452 to 0.511 beyond structural attributes alone.", |
| 31 | 31 | pdf: "/papers/wp2_uqo.pdf", |
| 32 | − repo: "https://github.com/spboucher-ai/wp2_uqo", | |
| 32 | + repo: "https://git.spboucher.ai/wp2_uqo", | |
| 33 | 33 | }, |
| 34 | 34 | { |
| 35 | 35 | slug: "wp3", |
@@ -40,8 +40,8 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 40 | 40 | "Hedonic Housing Price Models for the United States: A Multi-Method Comparison of Parametric, Quantile, and Machine Learning Approaches", |
| 41 | 41 | description: |
| 42 | 42 | "OLS, quantile regression, and gradient-boosting (XGBoost + SHAP) approaches compared on 788,842 Zillow listings covering all 50 states and DC.", |
| 43 | − pdf: "https://github.com/spboucher-ai/wp3-hedonic-housing-us/blob/main/paper/main.pdf", | |
| 44 | − repo: "https://github.com/spboucher-ai/wp3-hedonic-housing-us", | |
| 43 | + pdf: "https://git.spboucher.ai/wp3_uqo/blob/main/paper/main.pdf", | |
| 44 | + repo: "https://git.spboucher.ai/wp3_uqo", | |
| 45 | 45 | }, |
| 46 | 46 | { |
| 47 | 47 | slug: "wp5", |
@@ -53,7 +53,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 53 | 53 | description: |
| 54 | 54 | "Hedonic, spatial, quantile, and machine-learning evidence from 8,303 Quebec rental listings and 3,456 Airbnb listings — each active Airbnb within 500 m is associated with roughly 0.4% higher asking rent.", |
| 55 | 55 | pdf: "/papers/wp5_uqo.pdf", |
| 56 | − repo: "https://github.com/spboucher-ai/wp5_uqo", | |
| 56 | + repo: "https://git.spboucher.ai/wp5_uqo", | |
| 57 | 57 | }, |
| 58 | 58 | { |
| 59 | 59 | slug: "wp7", |
@@ -65,7 +65,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 65 | 65 | description: |
| 66 | 66 | "Options-implied moments forecast returns and volatility on a panel of 264,383 ticker-days (69 tickers, 2010–2025); a kurtosis long/short strategy delivers a Sharpe ratio of 2.33.", |
| 67 | 67 | pdf: "/papers/wp7_uqo.pdf", |
| 68 | − repo: "https://github.com/spboucher-ai/wp7_uqo", | |
| 68 | + repo: "https://git.spboucher.ai/wp7_uqo", | |
| 69 | 69 | }, |
| 70 | 70 | { |
| 71 | 71 | slug: "wp9", |
@@ -77,7 +77,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 77 | 77 | description: |
| 78 | 78 | "140,931 MLS listings with 1,153 neighbourhood (FSA) fixed effects — location alone adds ~30 points of R² (46% → 77%), valuing held-out homes with a 15.8% median absolute error (OOS R² = 0.764).", |
| 79 | 79 | pdf: "/papers/wp9_uqo.pdf", |
| 80 | − repo: "https://github.com/spboucher-ai/wp9_uqo", | |
| 80 | + repo: "https://git.spboucher.ai/wp9_uqo", | |
| 81 | 81 | }, |
| 82 | 82 | { |
| 83 | 83 | slug: "wp10", |
@@ -89,7 +89,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 89 | 89 | description: |
| 90 | 90 | "First province-wide audit of property-assessment equity in Canada — 522,769 sales matched to the assessment rolls. 99% of municipalities fail the IAAO uniformity standard; the median dwelling in the bottom local price decile pays ~65% more property tax than uniform assessment would imply.", |
| 91 | 91 | pdf: "/papers/wp10_uqo.pdf", |
| 92 | − repo: "https://github.com/spboucher-ai/wp10_uqo", | |
| 92 | + repo: "https://git.spboucher.ai/wp10_uqo", | |
| 93 | 93 | }, |
| 94 | 94 | { |
| 95 | 95 | slug: "wp11", |
@@ -101,7 +101,7 @@ export const uqoWorkingPapers: ResearchPaper[] = [ | ||
| 101 | 101 | description: |
| 102 | 102 | "A controlled horse race of 20 hedonic models on 514,212 roll-matched Quebec sales — spatial controls are first-order (~10 pp of MdAPE), functional form second-order (±2 pp), and gradient boosting's edge under random validation reverses under a forward-in-time split.", |
| 103 | 103 | pdf: "/papers/wp11_uqo.pdf", |
| 104 | − repo: "https://github.com/spboucher-ai/wp11_uqo", | |
| 104 | + repo: "https://git.spboucher.ai/wp11_uqo", | |
| 105 | 105 | }, |
| 106 | 106 | ]; |
| 107 | 107 | |
@@ -115,10 +115,10 @@ export const thesisChapters: ResearchPaper[] = [ | ||
| 115 | 115 | "Speculative Trading in Energy Markets: Evidence from Macroeconomic Surprises", |
| 116 | 116 | description: |
| 117 | 117 | "How speculative positioning conditions the reaction of energy futures to macroeconomic news surprises.", |
| 118 | − pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/phd_chap1_20260731/main.pdf", | |
| 118 | + pdf: "https://git.spboucher.ai/phd_thesis/blob/main/phd_chap1_20260731/main.pdf", | |
| 119 | 119 | source: |
| 120 | − "https://github.com/spboucher-ai/phd-thesis/tree/main/phd_chap1_20260731", | |
| 121 | − repo: "https://github.com/spboucher-ai/phd-thesis", | |
| 120 | + "https://git.spboucher.ai/phd_thesis/tree/main/phd_chap1_20260731", | |
| 121 | + repo: "https://git.spboucher.ai/phd_thesis", | |
| 122 | 122 | }, |
| 123 | 123 | { |
| 124 | 124 | slug: "chapter-2", |
@@ -129,10 +129,10 @@ export const thesisChapters: ResearchPaper[] = [ | ||
| 129 | 129 | "Seeing Through the ETF: Indicative NAV and Commodity Volatility Transmission", |
| 130 | 130 | description: |
| 131 | 131 | "Uses intraday indicative NAV to trace how volatility and jumps transmit between commodity ETFs and their underlying assets.", |
| 132 | − pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/phd_chap2_20260731/main.pdf", | |
| 132 | + pdf: "https://git.spboucher.ai/phd_thesis/blob/main/phd_chap2_20260731/main.pdf", | |
| 133 | 133 | source: |
| 134 | − "https://github.com/spboucher-ai/phd-thesis/tree/main/phd_chap2_20260731", | |
| 135 | − repo: "https://github.com/spboucher-ai/phd-thesis", | |
| 134 | + "https://git.spboucher.ai/phd_thesis/tree/main/phd_chap2_20260731", | |
| 135 | + repo: "https://git.spboucher.ai/phd_thesis", | |
| 136 | 136 | }, |
| 137 | 137 | { |
| 138 | 138 | slug: "chapter-3", |
@@ -143,10 +143,10 @@ export const thesisChapters: ResearchPaper[] = [ | ||
| 143 | 143 | "Returns and Volatility Around FOMC Announcements: A High-Frequency Analysis of Policy Tone and Novelty", |
| 144 | 144 | description: |
| 145 | 145 | "High-frequency evidence on how the tone and novelty of FOMC communication move returns and volatility across asset classes.", |
| 146 | − pdf: "https://github.com/spboucher-ai/phd-thesis/blob/main/PHD_chapitre3_theses_20260731/chapitre3.pdf", | |
| 146 | + pdf: "https://git.spboucher.ai/phd_thesis/blob/main/PHD_chapitre3_theses_20260731/chapitre3.pdf", | |
| 147 | 147 | source: |
| 148 | − "https://github.com/spboucher-ai/phd-thesis/tree/main/PHD_chapitre3_theses_20260731", | |
| 149 | − repo: "https://github.com/spboucher-ai/phd-thesis", | |
| 148 | + "https://git.spboucher.ai/phd_thesis/tree/main/PHD_chapitre3_theses_20260731", | |
| 149 | + repo: "https://git.spboucher.ai/phd_thesis", | |
| 150 | 150 | }, |
| 151 | 151 | ]; |
| 152 | 152 | |
| 153 | 153 | |