- Area Economico-Statistica
- Corso di Laurea Magistrale
- Economia e Finanza [F1602M - F1601M]
- Insegnamenti
- A.A. 2026-2027
- 1° anno
- Machine Learning for Finance
- Introduzione
Syllabus del corso
Obiettivi formativi
Conoscenza e capacità di comprensione. Il corso si propone di fornire allo studente una solida competenza nella programmazione in Python e i concetti fondamentali dell'elaborazione dei dati e dell'apprendimento automatico: la rappresentazione dei dati con vettori, matrici e tabelle, i modelli che apprendono dai dati e le reti neurali artificiali.
Conoscenza e capacità di comprensione applicate. Al termine del corso lo studente sarà in grado di scrivere programmi in Python che leggono ed elaborano dati finanziari ed economici, di simulare fenomeni aleatori, di analizzare dati tabellari con le librerie NumPy e pandas, di rappresentarli graficamente e di costruire e addestrare semplici reti neurali con PyTorch.
Autonomia di giudizio. Lo studente imparerà a scegliere in modo autonomo, tra gli strumenti e le tecniche apprese, quelli più adatti a risolvere problemi pratici di moderata complessità legati alla manipolazione e all'analisi di dati in ambito finanziario, e a valutare criticamente la correttezza dei risultati ottenuti.
Abilità comunicative. Lo studente sarà in grado di descrivere in modo chiaro e rigoroso, sia oralmente sia per iscritto, algoritmi, programmi e modelli di apprendimento automatico, utilizzando la terminologia appropriata e scrivendo codice leggibile e ben documentato.
Capacità di apprendere. Lo studente acquisirà le competenze necessarie per un apprendimento autonomo e continuo nel campo della programmazione e dell'analisi dei dati: in particolare, sarà capace di consultare la documentazione ufficiale dei linguaggi e delle librerie per approfondire nuovi strumenti e applicarli a problemi diversi da quelli affrontati nel corso.
Contenuti sintetici
Il corso fornisce una solida competenza nella programmazione in Python, dai fondamenti del linguaggio alle librerie per il calcolo numerico (NumPy), per l'analisi dei dati tabellari (pandas) e per i grafici (matplotlib), e presenta le reti neurali artificiali, realizzate con PyTorch, come strumento di supporto all'analisi dei dati finanziari.
Programma esteso
-
Algoritmi e programmi: definizione e proprietà di un algoritmo; problemi, istanze, dati e risultati; dall'algoritmo al programma; paradigmi di programmazione.
-
L'ambiente di sviluppo PyCharm: l'interprete Python, progetti e file, esecuzione di un programma, la Python Console, il debugger. Il lessico del linguaggio: parole chiave e identificatori.
-
Tipi di dato e collezioni: numeri interi e in virgola mobile, booleani, stringhe, None, conversioni tra tipi; espressioni aritmetiche, relazionali e logiche; liste, tuple, insiemi e dizionari.
-
Istruzioni composte: la selezione (if, elif, else), le iterazioni for e while, le istruzioni break e continue.
-
Numeri pseudo-casuali e simulazione: il modulo random, distribuzioni discrete e distribuzione normale, simulazione di fenomeni aleatori, processi di Markov.
-
File di testo: apertura e lettura con open e with; file con più campi per riga; righe di intestazione; costruzione di tabelle a partire dai dati letti; parametri letti da file o da tastiera.
-
Funzioni: definizione e chiamata, annotazioni di tipo, parametri e argomenti, valori restituiti, variabili locali e globali, passaggio dei parametri, ricorsione, moduli e import.
-
La libreria NumPy: vettori e matrici, indicizzazione e sottomatrici, operazioni componente per componente e operazioni vettoriali, funzioni di sintesi, maschere booleane, elementi di algebra lineare, lettura di matrici da file, numeri casuali; vettori e matrici nell'apprendimento automatico: la regressione lineare e la discesa del gradiente.
-
La libreria pandas: Series e DataFrame; lettura dei dati con read_csv e read_excel; selezione di righe e colonne con loc, iloc e maschere; etichette comuni (isin, intersection); operazioni aritmetiche e relazionali e allineamento delle etichette; valori di sintesi; aggregazione con groupby e agg; trasposta; ordinamento, aggiunta, ridenominazione ed eliminazione di righe e colonne; unione di tabelle (concat, merge, join); valori mancanti; variabili qualitative; tabelle a doppia entrata; serie storiche; normalizzazione e standardizzazione; covarianza, correlazione e retta di regressione.
-
Grafici con matplotlib: grafici a linee, a dispersione, a barre e istogrammi; più serie, legende e stili; più grafici in una figura; i grafici di pandas.
-
Classi e oggetti: definizione di una classe, metodi, attributi della classe e dell'istanza, metodi speciali, ereditarietà e ridefinizione dei metodi, classi astratte, il metodo call.
-
Reti neurali artificiali: il neurone artificiale e il percettrone; le funzioni di attivazione; il percettrone multistrato; l'addestramento di una rete con la discesa del gradiente e la retropropagazione dell'errore. Realizzazione con PyTorch: tensori (torch.tensor), calcolo automatico del gradiente (backward), ottimizzatori (torch.optim, step, zero_grad), strati e classe della rete (torch.nn.Linear, torch.nn.ReLU), funzioni di errore, Dataset e DataLoader, ciclo di addestramento, dropout e normalizzazione dei lotti (torch.nn.Dropout, torch.nn.BatchNorm1d), preparazione dei dati; introduzione alle reti profonde.
Prerequisiti
Le conoscenze matematiche e logiche acquisite nella scuola secondaria superiore; nozioni di base di algebra lineare (vettori, matrici, prodotto scalare) e di statistica (media, varianza, distribuzioni di probabilità). Sono inoltre richieste capacità di base di programmazione in Python: tipi di dato, istruzioni di selezione e di iterazione, funzioni.
Metodi didattici
Lezioni frontali con esercitazioni guidate. Le lezioni si svolgono nei laboratori didattici, per consentire agli studenti di applicare immediatamente al calcolatore i concetti presentati.
Modalità di verifica dell'apprendimento
L'esame prevede una prova scritta, che si svolge nei laboratori didattici di Ateneo e consiste nello sviluppo di programmi in Python per la soluzione di problemi di elaborazione e analisi dei dati. La prova verte su tutti gli argomenti del corso: la programmazione in Python di base, l'elaborazione dei dati con le librerie NumPy e pandas e le reti neurali artificiali. Per superare l'esame è necessario dimostrare una conoscenza sufficiente di ciascuno di questi argomenti; una carenza grave in uno di essi non può essere compensata dal risultato ottenuto negli altri. Nella valutazione si considerano la correttezza dei risultati, la capacità di scegliere gli strumenti adeguati al problema e la chiarezza del codice. Durante la prova è consentita la consultazione della sola documentazione ufficiale di Python e delle librerie utilizzate.
Testi di riferimento
Paul J. Deitel, Harvey M. Deitel, Introduzione a Python. Per l'informatica e la data science, Pearson, 2021 (ISBN 978-8891915924).
Appunti del docente, esempi ed esercizi disponibili sulla piattaforma e-learning del corso.
Documentazione ufficiale: docs.python.org, numpy.org/doc, pandas.pydata.org/docs, matplotlib.org, pytorch.org/docs.
Periodo di erogazione dell'insegnamento
Primo semestre
Lingua di insegnamento
Italiano
Sustainable Development Goals
Learning objectives
Knowledge and understanding. The course aims to provide students with solid skills in Python programming and with the fundamental concepts of data processing and machine learning: the representation of data through vectors, matrices and tables, models that learn from data, and artificial neural networks.
Applying knowledge and understanding. At the end of the course, students will be able to write Python programs that read and process financial and economic data, simulate random phenomena, analyse tabular data with the NumPy and pandas libraries, represent data graphically, and build and train simple neural networks with PyTorch.
Making judgements. Students will learn to choose independently, among the tools and techniques studied, those best suited to solving practical problems of moderate complexity related to the manipulation and analysis of financial data, and to assess critically the correctness of the results obtained.
Communication skills. Students will be able to describe clearly and rigorously, both orally and in writing, algorithms, programs and machine learning models, using appropriate terminology and writing readable, well-documented code.
Learning skills. Students will acquire the skills needed for independent and lifelong learning in programming and data analysis; in particular, they will be able to consult the official documentation of languages and libraries in order to explore new tools and apply them to problems different from those addressed in the course.
Contents
The course provides solid skills in Python programming, from the fundamentals of the language to the libraries for numerical computing (NumPy), tabular data analysis (pandas) and plotting (matplotlib), and introduces artificial neural networks, implemented with PyTorch, as a tool supporting the analysis of financial data.
Detailed program
-
Algorithms and programs: definition and properties of an algorithm; problems, instances, data and results; from algorithms to programs; programming paradigms.
-
The PyCharm development environment: the Python interpreter, projects and files, running a program, the Python Console, the debugger. The lexicon of the language: keywords and identifiers.
-
Data types and collections: integers and floating-point numbers, booleans, strings, None, type conversions; arithmetic, relational and logical expressions; lists, tuples, sets and dictionaries.
-
Compound statements: selection (if, elif, else), for and while loops, the break and continue statements.
-
Pseudo-random numbers and simulation: the random module, discrete distributions and the normal distribution, simulation of random phenomena, Markov processes.
-
Text files: opening and reading with open and with; files with several fields per line; header lines; building tables from the data read; parameters read from a file or from the keyboard.
-
Functions: definition and call, type annotations, parameters and arguments, return values, local and global variables, parameter passing, recursion, modules and import.
-
The NumPy library: vectors and matrices, indexing and submatrices, element-wise and vector operations, summary functions, boolean masks, elements of linear algebra, reading matrices from files, random numbers; vectors and matrices in machine learning: linear regression and gradient descent.
-
The pandas library: Series and DataFrame; reading data with read_csv and read_excel; selecting rows and columns with loc, iloc and masks; common labels (isin, intersection); arithmetic and relational operations and label alignment; summary statistics; aggregation with groupby and agg; transposition; sorting, adding, renaming and dropping rows and columns; combining tables (concat, merge, join); missing values; categorical variables; cross tabulations; time series; normalisation and standardisation; covariance, correlation and regression line.
-
Plotting with matplotlib: line plots, scatter plots, bar charts and histograms; multiple series, legends and styles; several plots in one figure; pandas plotting.
-
Classes and objects: defining a class, methods, class and instance attributes, special methods, inheritance and method overriding, abstract classes, the call method.
-
Artificial neural networks: the artificial neuron and the perceptron; activation functions; the multilayer perceptron; training a network with gradient descent and error backpropagation. Implementation with PyTorch: tensors (torch.tensor), automatic differentiation (backward), optimisers (torch.optim, step, zero_grad), layers and the network class (torch.nn.Linear, torch.nn.ReLU), loss functions, Dataset and DataLoader, the training loop, dropout and batch normalisation (torch.nn.Dropout, torch.nn.BatchNorm1d), data preparation; introduction to deep networks.
Prerequisites
The mathematical and logical knowledge acquired in secondary school; basic notions of linear algebra (vectors, matrices, dot product) and of statistics (mean, variance, probability distributions). Basic Python programming skills are also required: data types, selection and loop statements, functions.
Teaching methods
Lectures with guided exercises. Lessons take place in the teaching laboratories, so that students can immediately apply the concepts presented on the computer.
Assessment methods
The exam consists of a written test, held in the University's teaching laboratories, in which students develop Python programs to solve data processing and analysis problems. The test covers all the topics of the course: basic Python programming, data processing with the NumPy and pandas libraries, and artificial neural networks. To pass the exam, students must demonstrate sufficient knowledge of each of these topics; a serious gap in one of them cannot be compensated by the results obtained in the others. The assessment considers the correctness of the results, the ability to choose the tools appropriate to the problem, and the clarity of the code. During the test, only the official documentation of Python and of the libraries used may be consulted.
Textbooks and Reading Materials
Paul J. Deitel, Harvey M. Deitel, Intro to Python for Computer Science and Data Science, Pearson (Italian edition: Introduzione a Python. Per l'informatica e la data science, Pearson, 2021, ISBN 978-8891915924).
Lecture notes, examples and exercises provided by the lecturer on the course e-learning platform.
Official documentation: docs.python.org, numpy.org/doc, pandas.pydata.org/docs, matplotlib.org, pytorch.org/docs.
Semester
First semester
Teaching language
Italian
Sustainable Development Goals
Scheda del corso
Staff
-
Alessandro Avellone