---
title: "Level 0: Python from scratch and a data mindset"
description: "Level 0 of the Python Trading Course: environment with uv and Git, Python, NumPy 2, pandas 3.0, Polars, DuckDB, visualisation and minimum statistics."
url: "https://pythonparatrading.com/en/python-trading-course/level-0/"
lang: "en"
image: "https://pythonparatrading.com/og/en/python-trading-course/level-0.png"
---

# Level 0: Python from scratch and a data mindset

> The entry point for anyone who has never programmed: a modern environment, the language, numerical computing with data and the minimum statistics needed to measure return and risk.

- Hours: 80–100
- Prerequisite: None
- Profile: No programming experience
- Course: [Python Trading Course](https://pythonparatrading.com/en/python-trading-course/)

## Welcome and expectations

- `0.1.1` What systematic, algorithmic and quantitative trading are, compared with discretionary trading.
- `0.1.2` Realistic expectations: costs, time, risk of loss.
- `0.1.3` Course structure, entry tests and personal repository; ethics of learning with AI.

## Modern working environment

- `0.2.1` Installing Python 3.13/3.14 with uv; versions and support cycle (3.10 out of support in October 2026; 3.15 released).
- `0.2.2` Virtual environments and dependencies: `uv init`, `uv add`, `pyproject.toml`, lockfiles.
- `0.2.3` Editors (VS Code, Cursor, PyCharm) and Jupyter, JupyterLab or Marimo.
- `0.2.4` Basic terminal, paths, environment variables, `.env` files.
- `0.2.5` Git and GitHub: commits, branches, pull requests, `.gitignore`. Never commit API keys.
- `0.2.6` Introduction to AI coding assistants: prompts, review and tests.

## Language fundamentals

- `0.3.1` Variables, types and operators; floating point and `decimal` for prices and ticks.
- `0.3.2` Strings, f-strings, number and date formatting.
- `0.3.3` Lists, tuples, dictionaries, sets; comprehensions.
- `0.3.4` Control flow: `if/elif/else`, `for`, `while`, `match-case`.
- `0.3.5` Functions: arguments, `*args`/`**kwargs`, lambdas, scope.
- `0.3.6` Exceptions; modules and packages (lazy imports in 3.15 as a new feature).

## Intermediate Python

- `0.4.1` OOP: classes, inheritance, composition, dataclasses.
- `0.4.2` Typing: type hints, mypy or ty, Pydantic for configuration.
- `0.4.3` Iterators, generators, decorators, context managers.
- `0.4.4` Files (CSV, JSON, YAML, TOML, `pathlib`); dates with `zoneinfo` and market time zones.
- `0.4.5` Professional logging and testing with pytest.
- `0.4.6` Concurrency: threading, multiprocessing and asyncio (the basis for APIs and websockets); free-threading in 3.14+.

## Numerical computing and data

- `0.5.1` NumPy 2: arrays, broadcasting, vectorisation, linear algebra, random generators.
- `0.5.2` pandas 3.0: Series and DataFrame, time indexes, Copy-on-Write, PyArrow-backed `str` type, `pd.col()`.
- `0.5.3` Selection, filtering, `groupby`, `merge`/`join`, `pivot`, `resample`, `rolling`/`expanding`.
- `0.5.4` Polars: lazy versus eager API, expressions, performance; when to choose Polars over pandas.
- `0.5.5` DuckDB and essential SQL: `SELECT`, `JOIN`, `GROUP BY` and window functions on Parquet.

## Visualisation

- `0.6.1` Matplotlib (object-oriented API), Seaborn and Plotly; candlesticks with mplfinance or Plotly.
- `0.6.2` Quick dashboards with Streamlit.

## Minimum mathematics and statistics

- `0.7.1` Simple and log returns, compound interest; descriptive statistics (mean, variance, skewness, kurtosis).
- `0.7.2` Basic probability and distributions (normal, Student's t); correlation versus causation; simple regression.
- `0.7.3` Intuitive linear algebra: vectors and matrices, as preparation for portfolios.

## Level project

A script or CLI that downloads an ETF's prices, computes returns, volatility and drawdown, generates an HTML report and is versioned on GitHub with tests.

Next level: [Level 1: Financial data, markets and analysis](https://pythonparatrading.com/en/python-trading-course/level-1/)
