A. NADEEM  /  KUALA LUMPUR

CH1 · Golden-cross backtest
20 yr SPY · net of costs · honest vs. buy&hold

SR · Operations data at Edgepoint
data errors −98% · reporting 4h → 1h

Aiman Nadeem Bin Che Razani / Electronics & Comms Engineer / Data & Quant

I turn noisy signals into decisions.

In markets, in operations data, and—soon—on microcontrollers. I build the whole path: acquire the signal, model it in Python, and ship the result as something people actually run.

BEng Electronics & Communications Engineering, University of Sheffield
Now Operations Data Support, Edgepoint Infrastructure (telecom towers), Kuala Lumpur
Before Forex trading desks & independent algo trading, 2022–2024

01Now

Operations data, made to run itself

At Edgepoint Infrastructure I keep the operational data behind Malaysia’s telecom-tower estate clean, and I automate the parts that shouldn’t need a person. Most of it is small, local Python—ETL scripts, Selenium jobs, an OCR pipeline—wired into proprietary systems and surfaced in Power BI for management.

The recurring pattern: find a manual process that leaks errors, model it, and replace it with something measured.

  • −98%data-entry errors, after adding Python validation controls
  • 4h → 1hMalaysia operations reporting, via local ETL pipelines
  • −98%manual entry for compliance data, via an OpenCV + Tesseract OCR pipeline
  • 30 h/mosaved on bulk site-permit admin, via a batch tool
02Selected work

Things I built, with the results attached

Live demoPythonpandasPlotlyBacktesting

Golden Cross Tearsheet — an honest SPY backtest

A textbook SMA 50/200 trend rule, 20 years of real S&P 500 data, evaluated against buy-and-hold with the shortcuts that flatter backtests deliberately removed: next-bar execution, transaction costs, a shared evaluation window, and every metric reported—including the ones where the strategy loses.

Result, net of 5 bps costs: total return 475% vs. 608% for buy-and-hold—it earns less. In exchange, max drawdown −34% vs. −55%, and Sharpe 0.74 vs. 0.63. The point is the methodology and the honesty, not a winning strategy.
Open the interactive tearsheet →
In progressESP32TinyMLint8 quantisation

Sensor-side machine learning on a microcontroller

Capture vibration on an ESP32, train a small anomaly-detection model, quantise it to int8, deploy it to the chip, and benchmark it there—accuracy, the float → int8 drop, latency, and memory footprint. Same honest-reporting rules as the tearsheet. Building now.

Compliance OCR pipeline

OpenCV + PyTesseract extraction of equipment and lat/long data from tower-site PDFs, feeding compliance tracking. −98% manual entry.

Trade-entry management app

Android front end with push notifications over a Python FastAPI service talking to MetaTrader 5. Cloud-hosted, used live.

IT asset tracking

Equipment and software inventory for the department—Android client, Flask + REST API back end.

03Track record

A path through engineering, markets, and data

2024 — now

Operations Data Support

Edgepoint Infrastructure — Kuala Lumpur

Data integrity and automation for telecom-tower operations: Python validation controls, ETL pipelines, an OCR solution, Power BI dashboards, and assistant system administration for proprietary software.

2023 — 2024

Data Analyst

iGlobsys Technology — Kuala Lumpur

Traded forex on a proprietary hedging strategy; combined technical and fundamental analysis for entry and exit timing; built custom indicators to consolidate market signals.

2022 — 2023

Day Trader / Programmer

Independent — Cyberjaya

Built a Python financial-analysis app for markets, entries, ML and macro news; a cloud-hosted trade-entry app on FastAPI + MetaTrader 5; computer-vision side projects.

2022

Trainee Trader

Fortitude Funds — Cyberjaya

Completed a three-month self-funded trading assessment; Emperous Trading Academy programme.

2018 — 2022

Executive, Education

Yayasan UEM — Kuala Lumpur

Ran scholarship selection and disbursement; digitised operations; database-system improvements; budgeting and stakeholder work.

2016 — 2018

Engineering roles

SUJV (Samsung–UEM) · DreamEDGE

M&E engineer on the PNB118 tower build; earlier, a trainee engineer building a web prototype, facial-recognition software, and Arduino projects for automotive manufacturing.

04Toolkit

What I reach for

Languages

Python, Go, TypeScript / JavaScript, C, SQL, MQL5 & PineScript

ML & analysis

pandas, NumPy, scikit-learn, XGBoost / LightGBM, PyTorch, TensorFlow, Optuna, SHAP, statsmodels

Data engineering

Spark (PySpark), Kafka, Airflow, Delta Lake, PostgreSQL, Redis, InfluxDB, BigQuery

Embedded & hardware

ESP32, Arduino, MQTT, OPC UA, RISC-V, electronics & circuitry

Trading & quant

MetaTrader 5, backtesting, technical & fundamental analysis, risk management, DCF & valuation

Delivery

Docker, Kubernetes, GitHub Actions, Terraform, Prometheus & Grafana, FastAPI, Django

§Note

Unified memory & the coherence it rides on

Unified memory architecture puts every processor on a chip—the CPU, the GPU, whatever accelerators sit alongside them—on one physical pool of RAM, under one address space. No processor keeps a private bank the others can’t reach.

What it removes is the copy. In a discrete design the GPU has its own VRAM, so using a buffer on both sides means shipping it across a bus—PCIe, NVLink—which costs time, bandwidth and energy, and forces you to size each pool up front. Under unified memory, the buffer the CPU wrote is already where the GPU reads it.

DISCRETE CPU system RAM GPU GPU VRAM load / store copy across the bus UNIFIED CPU GPU NPU one shared memory pool load / store
Discrete memory keeps a pool per processor, so shared data is copied across the bus. Unified memory gives every processor the same pool and the same addresses—the copy disappears; the cost is that they now share one bandwidth budget and one fixed capacity.

What it buys

  • No host↔device copies—shared data is already in place.
  • Flexible split: a 40 GB model needs 40 GB free, not 40 GB of dedicated VRAM.
  • Lower latency and energy for fine-grained CPU / GPU sharing.

What it costs

  • One bandwidth budget—CPU and GPU workloads contend for the same channels.
  • Capacity is fixed at manufacture; there is no discrete card to upgrade.
  • Cache coherence traffic, and no near / far locality to schedule around.

Where the coherence bill comes from

Give every core its own L1 (split into instruction and data) and a private L2 for speed—which every modern CPU does—and the moment two cores cache the same line you have a consistency problem: one writes it, the other must not keep reading the old value.

The fix is a coherence protocol—MESI and its relatives— coordinated through the last-level cache. Each LLC slice keeps a directory of which cores hold which lines, so a core that wants to write sends a read-for-ownership to the line’s home slice; the directory invalidates only the cores that actually have it, waits for their acknowledgements, then hands over the line. It works, but every write to shared data becomes a small round trip across the interconnect, and the traffic grows with how much the cores share—which is exactly what a unified pool encourages.

Core 0 L1i L1d M L2 · private Core 1 L1i L1d I L2 · private Core 2 L1i L1d I L2 · private coherent mesh / ring interconnect · MESI-family protocol L3 slice 0 + directory L3 slice 1 directory: home of X L3 slice 2 + directory each slice: an LLC bank + the coherence directory for its part of the address space integrated memory controllers DRAM — the unified pool · several channels 1 · RFO X read for ownership 2 · invalidate only the sharers
A modern multicore chip: split L1i / L1d and a private L2 per core; a last-level cache split into slices on a mesh or ring, each slice holding the coherence directory for its part of the address space; then the memory controllers and DRAM. To write line X, Core 0 sends a read-for-ownership to X’s home slice. The directory already knows Cores 1 and 2 hold it, so it sends invalidates only to them—not a bus-wide broadcast—waits for their acks, and grants Core 0 the line in Modified state while their copies go to Invalid. That request / invalidate / ack round trip is the latency every write to shared data pays.

None of this is new: integrated graphics carved a slice of system RAM for decades, and game consoles have shipped unified pools for generations. What changed is bandwidth—wide on-package LPDDR and HBM made a shared pool fast enough for serious GPU and ML work, not just the budget tier.

05Background

Education & credentials

BEng, Electronics & Communications Engineering

University of Sheffield

Google Advanced Data Analytics Specialization

Coursera

Python and Statistics for Financial Analysis

Coursera

CompTIA training track

A+, Network+, Security+, PenTest+, Cloud+, CySA+ — coursework via Mammoth Club.

Tutoring

Mathematics, Additional / Further Mathematics, and Physics at A-level.

06Contact

Open to data science, quant, and applied-ML roles

Based in Kuala Lumpur; open to remote. The fastest way to judge the work is the interactive tearsheet—the methodology notes there are the real portfolio piece.