Welcome to my Professional Log, the academic and technical side of this site. Here you will find my CV, my master's thesis, the projects I have built and a collection of written work.
In a hurry? The recruiter view has the essentials on one plain page, with no animations and the CV in English and Spanish.
Try it here. Most projects have a small demo that runs on this page: open the Command Prompt from the desktop or the start menu, or press ▶ on a project card. Each demo computes in your browser and then checks itself against the numbers the project's own Python code produced. For the breaks, Minesweeper and Jewels live in the start menu.
Note: this space is reserved for my professional and academic work. If you are looking for something more personal or relaxed, such as the blog where I will write about recent scientific papers, technology and other topics outside my thesis, head back to the main portal and select the Personal Hub.
About Me
Hello, and welcome to my professional log. My name is Luis A. Quiroz, and I am a data-science-driven physicist with a Master's degree in Astrophysics from UNAM's Institutes of Astronomy and Physics. I specialise in theoretical cosmology, numerical simulation, data visualisation and the application of computational methods to complex problems in mathematical physics.
My master's thesis, completed in 2026, is Effective Equation of State and Gravitational Particle Production in Inflationary Models, supervised by Dr Marcos A. García García. I wrote modular Python code to simulate the dynamics of the inflaton and spectator fields during reheating. For non-physicists, that means studying the energy fields of the early Universe that would become fundamental particles, and which could explain modern puzzles such as dark matter (DM) or the ongoing expansion of space itself.
Beyond theoretical cosmology, my academic and professional path draws heavily on data science (DS), machine learning (ML) and artificial intelligence (AI). I took Dr Jose Antonio Vazquez Mata's course on neural networks as an undergraduate at UNAM's Faculty of Science, I am revisiting Dr Mehryar Mohri's Foundations of Machine Learning course from New York University (NYU), and I completed Dr Zico Kolter's Introduction to Modern AI at Carnegie Mellon University (CMU), where I built a small language model from scratch.
I apply these skills in industry too. As an AI trainer I contribute to human-in-the-loop pipelines, write high-quality annotations for natural language processing (NLP) tasks and evaluate large language model (LLM) outputs for reinforcement learning from human feedback (RLHF). I have also turned the same rigour into software quality assurance: test design, API testing and regression suites, which the QA & engineering track documents.
Clear scientific communication and interdisciplinary research are central to how I work. Over the years I have built a strong foundation in academic and analytical writing, with award-winning essays (Concursos Interpreparatorianos, 2017 to 2019) in both physics and the humanities, such as Natural and Artificial Satellites and Why Study Philosophy Today? I love a good research project!
Finally, as a polyglot with English, German, Italian and Portuguese, I am used to collaborating across international and multidisciplinary teams. Whether I am modelling financial workflows, training language models or simulating the early Universe, my goal is always to use computational tools to extract meaningful insight from complex systems.
If you do not already have a copy of my CV, here it is:
Hope you have a wonderful day/night/whatever! And as John Lennon said at the end of the Beatles' rooftop concert, I hope we passed the audition!
Master's Thesis
Effective Equation of State and Gravitational Particle Production in Inflationary Models
Supervisor: Dr Marcos A. García García
Institution: Institute of Physics, UNAM
Completed: 2026
The thesis characterises the relic abundance of a dark matter candidate produced exclusively through gravitational interaction during the transition between cosmic inflation and reheating. In particular, we study the dynamical behaviour of a spectator scalar field decoupled from the inflaton sector, analysing how the coherent oscillations of the inflationary background modulate the spacetime metric and induce non-thermal particle production.
What the work covers
Exploration of T-model potentials: the first stage evaluated inflationary dynamics with T-model potentials in detail, taking recent literature as the formal reference framework (particularly the analytical formalism in arXiv:2502.20471). The slow-roll conditions and the end of inflation were derived for these potentials. The programming work focused on the dynamics of the inflaton:
The evolution of the inflaton during inflation and its transition to the oscillation phase (reheating) was studied for a T-model and several values of k, verifying that the resulting densities follow the theoretical scaling (~ a-6k/(k+2)).
The end of inflation (φend) from direct numerical evolution was compared with the analytical predictions of the slow-roll approximation.
Transition to the quartic regime (n = 4): based on arXiv:2206.08940, the thesis turns to the analytical and numerical study of the pure quartic regime (n = 4) for inflaton oscillations. This regime is of particular interest because the average equation of state during the oscillation phase mimics a radiation fluid (〈w〉 = 1/3), which fundamentally changes the Hubble rate H(a) and, with it, the instantaneous rates of gravitational particle production of the spectator field.
A precise, modular numerical code: a modular Python environment solves the coupled Friedmann and Klein-Gordon equations simultaneously. It computes the time evolution of the scale factor a(t), the inflaton field φ(t) and the energy densities without explicit couplings.
The notebook below shows the zero-coupling implementation, the base case of the study.
Data & analytics. Pipelines, statistics and dashboards that turn raw records into a decision: cleaning with lineage, KPIs that survive scrutiny and inference with its assumptions stated.
Retail delivery diagnostics: an end-to-end case Live
PythonpandasSQLStar schemaChart.jsStatistics
Diagnosis of a department-store delivery network, from 62,420 raw shipment records to an executive dashboard. The monthly report said 95.7% of deliveries were on time and in full, yet management felt deliveries were getting slower. The analysis shows where and why.
Cleaning with lineage: 62,420 raw records reduced to 59,615 shipments, with every exclusion logged.
Stores compared with their own zone through Wilson intervals, so only 1 of 61 stores is flagged as significantly worse.
The worst-stores ranking turned out to be a carrier effect, visible only after conditioning on zone.
Moving averages, MACD(12, 26, 9) and RSI implemented from first principles for a finance diploma, then extended into a batch run over 35 equities listed on the Mexican Stock Exchange and a bitcoin cost comparison across Mexican platforms.
Cross-validated against a 3,815-formula Excel model to within 5 × 10⁻¹³, recalculated in CI on every push.
Bitcoin with pesos: live Bitso and Binance order books against Mercado Pago, measured from the prices its app shows. Buying and selling at once costs 0.27% on Binance and 3.98% on Mercado Pago.
Crossovers are judged against noise: on a random walk MACD crosses its signal every 12.3 periods, and 22 of the 35 tickers cross at least that often.
82 unit tests on properties derived by hand, such as MACD equal to 7 × slope on a linear trend, all offline.
Milky Way structure: Gaia DR3 × APOGEE-2 DR17 Live
Pythonpandasastropyscikit-learnTOPCAT
Spatial and kinematic characterisation of the Milky Way's stellar populations, built by cross-matching Gaia DR3 astrometry with APOGEE-2 DR17 spectroscopy.
682,284 sources reduced to 281,612 stars through documented cuts on signal-to-noise, astrometric fit, radial-velocity scatter and parallax.
Velocity ellipsoid tilted by a vertex deviation of about −26.6°, consistent with asymmetric drift.
DBSCAN partially recovers the Hercules moving group, and the rotation curve is flat beyond 8.5 kpc.
Statistical characterisation of 240 stars from their temperature and spectral class: distribution fitting by maximum likelihood, model selection, normalisation and hypothesis tests across spectral classes.
A physically motivated Gamma model beats an Exponential fit by AIC (4,908.98 against 4,926.26).
Box-Cox failed to normalise the data and Ordered Quantile normalisation succeeded, which enabled inference.
92% confidence intervals and t and F tests across 15 pairs of spectral classes.
Turns four-hour class recordings into structured Obsidian notes with no manual steps, then answers questions about past classes citing the class and the minute: local transcription on the CPU, notes written by Claude Code in headless mode and an agent over hybrid retrieval.
Fits in 8 GB of RAM: silence-aligned ten-minute chunks cut peak audio memory from more than 6 GB to about 0.7 GB on a two-hour recording.
Hybrid retrieval over notes and transcripts, with multilingual embeddings and Spanish BM25 merged by Reciprocal Rank Fusion. The agent answers only with real citations or says the notes do not cover it.
Whatever Claude adds stays visibly separate from what was said in class, and mistakes not corrected in class are flagged.
88 tests with no network access: a fake Whisper model, a fake claude executable, the real Anthropic SDK over a fake transport and a real Chroma database.
lecture.mp4 → Whisper (CPU, int8) → transcript [P2 00:12:30] → claude -p → note + concept pages + index
Reward hacking on GSM8K: two small model organisms Live
PythonPyTorchTransformersPEFT (LoRA)Colab
SFT, DPO and GRPO written from scratch in PyTorch with Claude Code, then used to study what a 0.5B language model learns when its RL grader has a loophole: one grader also pays the answer the user suggested, the other pays any final line that contains the right number.
A grader that also pays the answer the user suggested drove copying of wrong suggestions from 7% to 97% of training samples. The habit carried over to unseen phrasings (64%) and to SVAMP problems (62%).
In 89% of the copies the reasoning itself arrives at the user's number, usually through a false equation, which a consistency monitor cannot see. Penalising what that monitor flags cut flagged copies from 10.8% to 1.8% while copying stayed at 96%.
Hedging grew only modestly under a lenient grader that pays answers such as 24 or 72: the model's hedges contained the right answer less often than its single answers were right (39% against 48% during training).
Ten hypotheses were written before any GPU run, and each loophole run has a control that differs only in the grader. Every log is in the repository, so all the numbers can be rebuilt on a CPU.
Every component of a small language model, implemented and then trained, for Carnegie Mellon University's Introduction to Modern AI (online, January to April 2026).
An autodiff engine, a BPE tokenizer and the Adam optimiser written from first principles.
A decoder-only transformer with masked multi-head attention, a KV cache, RMSNorm and a gated MLP, trained on TinyStories.
Fine-tuned with supervised fine-tuning, DPO and reinforcement learning for reasoning on GSM8K.
The code stays private under the course's academic integrity policy. Its post-training part is rebuilt in the open in the reward-hacking project.
Galaxy morphology with convolutional networks Live
Binary classification of 5,608 MaNGA galaxy images into early types and late types, from a baseline CNN to transfer learning, with the class imbalance handled explicitly.
Baseline CNN: 81.0% test accuracy, held back by a recall of only 0.68 on late types.
A deeper CNN reached 86.3% test accuracy and raised late-type recall to 0.77.
InceptionV3 transfer learning reached 85.9% with balanced recall of 0.86 on both classes.
QA & engineering. Testing as the main deliverable: requirements reviewed for testability, risk-based test design, API and database testing, and regression suites that run on every push.
A full QA cycle on a sales-commission REST API, the kind of calculation that sales performance management software automates: split credit, clawbacks on returns, a 50% gate, tiered accelerators and a cap.
92 risk-based test cases traced to the requirements, and 8 defects found in the first build, 2 of them critical.
A parallel run against an independent Excel model measured 6,566.74 MXN overpaid by the first build and 750 of 750 payouts correct after the fixes.
One critical defect only appeared on PostgreSQL, because SQLite does not enforce foreign keys by default. CI now tests on PostgreSQL.
A small polyglot platform that ingests request telemetry, reports service-level objectives and detects anomalies: Spring Boot ingestion, a Flask analytics API, a Django back office, PostgreSQL and MongoDB.
1.4 million simulated requests over ten days with three injected incidents, all three detected and nothing else.
A Monte Carlo calibration over 40 runs cut false alarms from 18 to 1 without missing an incident.
69 automated tests, run in GitHub Actions together with the calibration.
The EMA/MACD toolkit served as a REST API and tested from the outside: pytest against pandas and hand calculations, plus a Postman collection that Newman runs in CI.
Its tests found a defect shared with the toolkit: rounding noise of about 10⁻¹⁵ on flat or linear prices reported as crossovers.
Release 1.0.0 passes 28 of 28 pytest results and 59 of 59 Newman assertions.
Physics & simulation. Numerical physics from my degrees: solvers checked against conserved quantities and analytical limits, including the code of my master's thesis.
Inflation and reheating solver (MSc thesis) Live
PythonSciPyODE integrationCosmology
Modular solver for the coupled Friedmann and Klein-Gordon equations, tracking the scale factor, the inflaton and the energy densities from inflation into reheating. It covers T-model potentials and the pure quartic regime, and checks numerical results against slow-roll predictions.
Energy densities for T-model potentials follow the expected scaling with the scale factor, a^(−6k/(k+2)).
The numerical end of inflation is compared with the analytical slow-roll prediction.
Two-dimensional hydrodynamic simulation of an astrophysical jet, built up from advection and 1D Euler solvers, comparing adiabatic and radiatively cooled runs from a single configuration file.
400 × 150 cells over a 4,000 × 1,500 AU domain, run for 100 years with a MacCormack scheme and CFL = 0.1.
Neutral or ionised mean molecular weight, switched at 10⁴ K.
With radiative cooling the bow shock is narrower and the jet more compact.
How a dynamically cold stellar disc responds to the smooth growth of a galactic bar, with 10,000 test particles in a composite, collisionless potential.
Fourth-order Runge-Kutta-Nyström integration, with a time step chosen by measurement: the energy error of a circular orbit stays below 10⁻¹³.
Every particle gains energy as the bar grows, and total energy rises by 120%.