Skip to content

Commit b7b0487

Browse files
first edition
0 parents  commit b7b0487

File tree

3 files changed

+574
-0
lines changed

3 files changed

+574
-0
lines changed

index.html

Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1" />
6+
<title>Vikram Oberai — Statistics & Machine Learning</title>
7+
<meta
8+
name="description"
9+
content="Vikram Oberai — CMU Freshman studying Statistics + Machine Learning. Projects: ML systems, data analysis, and quantitative tools."
10+
/>
11+
<link rel="preconnect" href="https://fonts.googleapis.com" />
12+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
13+
<link
14+
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap"
15+
rel="stylesheet"
16+
/>
17+
<link rel="stylesheet" href="styles.css" />
18+
</head>
19+
<body>
20+
<header class="site-header">
21+
<div class="container header-inner">
22+
<a class="brand" href="#hero">Vikram Oberai</a>
23+
<nav class="nav" id="nav">
24+
<ul>
25+
<li><a href="#about">About</a></li>
26+
<li><a href="#education">Education</a></li>
27+
<li><a href="#projects">Projects</a></li>
28+
<li><a href="#contact">Contact</a></li>
29+
</ul>
30+
</nav>
31+
<button id="nav-toggle" aria-label="Toggle navigation"></button>
32+
</div>
33+
</header>
34+
35+
<main>
36+
<section id="hero" class="hero">
37+
<div class="container hero-grid">
38+
<div class="hero-copy">
39+
<h1>Vikram Oberai</h1>
40+
<p class="lead">
41+
Freshman at Carnegie Mellon — Statistics + Machine Learning.
42+
Building production-minded ML and data tools that turn ambiguity
43+
into measurable impact.
44+
</p>
45+
<div class="hero-cta">
46+
<a class="btn primary" href="#projects">Selected Projects</a>
47+
<a class="btn ghost" href="#contact">Contact</a>
48+
</div>
49+
</div>
50+
<div class="hero-aside" aria-hidden="true">
51+
<div class="profile-card">
52+
<div class="metrics">
53+
<div>
54+
<span class="num">3+</span
55+
><span class="label">Relevant Projects</span>
56+
</div>
57+
<div>
58+
<span class="num">CMU</span
59+
><span class="label">Statistics & ML</span>
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
</div>
65+
</section>
66+
67+
<section id="about" class="section">
68+
<div class="container">
69+
<h2>About</h2>
70+
<p>
71+
I'm a problem-solver focused on rigorous data methods and practical
72+
ML engineering. I prioritize clear assumptions, reproducible
73+
experiments, and shipping interpretable models. Looking for
74+
internships where I can apply statistical intuition to real-world
75+
systems.
76+
</p>
77+
</div>
78+
</section>
79+
80+
<section id="education" class="section muted">
81+
<div class="container">
82+
<h2>Education</h2>
83+
<div class="education">
84+
<div>
85+
<h3>Carnegie Mellon University</h3>
86+
<p>B.S. Statistics & Machine Learning — Expected 2028</p>
87+
<p class="edu-notes">
88+
Selected coursework: Probability, Linear Algebra, Intro ML, Data
89+
Structures. Activities: CS/ML study groups, research assist.
90+
</p>
91+
</div>
92+
</div>
93+
</div>
94+
</section>
95+
96+
<section id="projects" class="section">
97+
<div class="container">
98+
<h2>Selected Projects</h2>
99+
<div class="projects-grid" id="projects-grid">
100+
<article class="project-card" data-id="1">
101+
<div class="card-head">
102+
<h3>AAPL Earnings NLP Sentiment</h3>
103+
<p class="muted-sm">
104+
NLP · Sentiment Analysis · Time-series signal
105+
</p>
106+
</div>
107+
<p class="card-blurb">
108+
Built an NLP pipeline to extract sentiment from earnings calls
109+
and evaluate market reaction — combined text embeddings with
110+
event-aligned returns for causal signal detection.
111+
</p>
112+
<div class="card-actions">
113+
<button class="expand">Details</button>
114+
<a
115+
class="link"
116+
href="https://github.com/CodingGenius14/AAPL_NLP_Earning_Call_Sentiment"
117+
target="_blank"
118+
rel="noopener"
119+
>Repo</a
120+
>
121+
</div>
122+
<div class="card-details">
123+
<ul>
124+
<li>
125+
Preprocessing + speaker segmentation, transformer embeddings
126+
(fine-tuned)
127+
</li>
128+
<li>
129+
Event study aligning sentiment windows with intraday returns
130+
</li>
131+
<li>Backtested hypotheses with careful leakage controls</li>
132+
</ul>
133+
</div>
134+
</article>
135+
136+
<article class="project-card" data-id="2">
137+
<div class="card-head">
138+
<h3>Linear Regression Project — ML Practice</h3>
139+
<p class="muted-sm">
140+
Statistics · Model Diagnostics · Explainability
141+
</p>
142+
</div>
143+
<p class="card-blurb">
144+
Rigorous approach to model selection, residual analysis, and
145+
feature engineering with reproducible notebooks and automated
146+
evaluation.
147+
</p>
148+
<div class="card-actions">
149+
<button class="expand">Details</button>
150+
<a
151+
class="link"
152+
href="https://github.com/CodingGenius14/Machine-Learning-Practice/tree/main/linear_regression/project"
153+
target="_blank"
154+
rel="noopener"
155+
>Repo</a
156+
>
157+
</div>
158+
<div class="card-details">
159+
<ul>
160+
<li>
161+
Cross-validation, information criteria, and
162+
heteroskedasticity-aware inference
163+
</li>
164+
<li>
165+
Automated pipeline for feature transforms and ablation
166+
studies
167+
</li>
168+
</ul>
169+
</div>
170+
</article>
171+
172+
<article class="project-card" data-id="3">
173+
<div class="card-head">
174+
<h3>Quant Toolkit (prototype)</h3>
175+
<p class="muted-sm">Data Engineering · Automation</p>
176+
</div>
177+
<p class="card-blurb">
178+
Small, production-minded utilities for reproducible backtests
179+
and clean data ingestion used in prototyping ML trading signals.
180+
</p>
181+
<div class="card-actions">
182+
<button class="expand">Details</button>
183+
<a class="link" href="#" target="_blank" rel="noopener">More</a>
184+
</div>
185+
<div class="card-details">
186+
<ul>
187+
<li>
188+
Robust CSV ingestion, schema validation, and lightweight
189+
caching
190+
</li>
191+
<li>
192+
Focus on clear interfaces for downstream model training
193+
</li>
194+
</ul>
195+
</div>
196+
</article>
197+
</div>
198+
</div>
199+
</section>
200+
201+
<section id="contact" class="section muted">
202+
<div class="container contact-grid">
203+
<div>
204+
<h2>Contact</h2>
205+
<p>
206+
For internship inquiries or collaborative research:
207+
<a href="mailto:vikram@example.com">vikram@example.com</a>
208+
</p>
209+
<p class="muted-sm">
210+
LinkedIn · GitHub links available in resume and project pages.
211+
</p>
212+
</div>
213+
<div class="mini-cta">
214+
<a class="btn primary" href="Updated_Resume.pdf" target="_blank"
215+
>Download Resume</a
216+
>
217+
</div>
218+
</div>
219+
</section>
220+
</main>
221+
222+
<footer class="site-footer">
223+
<div class="container">
224+
<small
225+
>© Vikram Oberai — Carnegie Mellon University • Built for
226+
recruiters</small
227+
>
228+
</div>
229+
</footer>
230+
231+
<script src="scripts.js" defer></script>
232+
</body>
233+
</html>

scripts.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Smooth scroll for internal links, mobile nav toggle, project card interactions
2+
document.addEventListener("DOMContentLoaded", function () {
3+
// Smooth scroll for same-page anchors
4+
document.querySelectorAll('a[href^="#"]').forEach((a) => {
5+
a.addEventListener("click", function (e) {
6+
const href = this.getAttribute("href");
7+
if (href.length > 1) {
8+
const el = document.querySelector(href);
9+
if (el) {
10+
e.preventDefault();
11+
el.scrollIntoView({ behavior: "smooth", block: "start" });
12+
history.replaceState(null, "", href);
13+
}
14+
}
15+
});
16+
});
17+
18+
// Mobile nav toggle
19+
const navToggle = document.getElementById("nav-toggle");
20+
const nav = document.getElementById("nav");
21+
navToggle &&
22+
navToggle.addEventListener("click", () => {
23+
nav.classList.toggle("open");
24+
});
25+
26+
// Project card expand/collapse
27+
document.querySelectorAll(".project-card").forEach((card) => {
28+
const btn = card.querySelector(".expand");
29+
const details = card.querySelector(".card-details");
30+
btn &&
31+
btn.addEventListener("click", () => {
32+
const open = details.classList.toggle("open");
33+
btn.textContent = open ? "Hide" : "Details";
34+
});
35+
});
36+
37+
// Gentle reveal on scroll for sections
38+
const observer = new IntersectionObserver(
39+
(entries) => {
40+
entries.forEach((entry) => {
41+
if (entry.isIntersecting) {
42+
entry.target.classList.add("reveal");
43+
observer.unobserve(entry.target);
44+
}
45+
});
46+
},
47+
{ threshold: 0.12 },
48+
);
49+
50+
document
51+
.querySelectorAll(".section, .project-card, .hero-copy")
52+
.forEach((el) => observer.observe(el));
53+
});

0 commit comments

Comments
 (0)