Previsione andamento vendite

paggisan
Ciao a tutti,
non ho molta esperienza nell'ambito dei modelli previsionali, per questo mi rivolgo a voi.
L'obiettivo è prevedere le vendite di un negozio di abbigliamento in futuro.... ho a disposizione i dati storici di anni passati giorno per giorno.
Secondo voi, quali sono i passi che dovrei eseguire?
Quali modelli possono servirmi e quindi quali dovrei studiare?
Grazie.

Risposte
fede.unive
Ciao paggisan,
non so quanto tu sappia di analisi delle serie storiche & co. (statistica economica, econometria...). Secondo me dipende da "come" vuoi spiegare il futuro delle vendite:

1) in base alla storia passata della variabile vendita (analisi delle serie storiche classica);
2) in base alla storia passata delle variabile vendita e in base ad altre variabili (variabili interne tipo costi, numero di scontrini, ecc...; variabili esterne quali indice della produzione industriale, inflazione, ecc...).

Nel caso 1 i modelli da usare sono quelli della classe ARIMA (approccio Box-Jenkins). Nel caso 2 i modelli possono essere modelli della classe VARIMA o ADL. Di ognuno degli approcci ci sono valanghe di cose da sapere.
Inoltre, visto la particolarità della variabile vendite e la frequenza dei dati, potresti dover considerare altri fattori quali la presenza di stagionalità (quindi modelli chiamati di solito SARIMA - seasonal ARMA) o la presenza di eteroschedasticità nei residui del modello stimato (e quindi ricordo a più complessi modelli che riescono a gestire tale fenomeno ARCH-GARCH).

RIcorda inoltre che, per "ragionare bene" in ambito di serie storiche bisogna sempre lavorare su serie stazionarie e quindi I(0).

Se hai bisogno di qualche altro chiarimento, chiedi pure.

paggisan
Ringrazio molto tutti per le ottime risposte date.

L'idea è di calcolare la previsione in base alla storia passata delle variabile vendita e in base ad altre variabili (a cui sto pensando), il periodo è a medio termine (1-2 mesi)....

Stavo iniziando a leggere un pò delle serie storiche... non mi sono chiare un pò di cose... per cui sapreste consigliarmi qualche sito o fonte in cui si spiega un pò il calcolo dei parametri e come procedere nella loro analisi?

Inoltre dal momento che è importante la stagionalità, il modello SARIMA potrebbe essere quello su cui indirizzarmi?

fede.unive
Allora, come dice Sergio, come prima cosa è importante capire che tipo di conoscenze di base hai. Sei un ingegnere, un matematico, un economista? Non amo le classi, ma in questo caso determinante.

Inoltre SARIMA non è un modello, ma una classe di modelli.

S: Seasonal
AR: AutoRegressive
MA: MovingAverage
I: Integrated

Sono quattro "diverse componenti" e non è detto che debbano essere presenti tutte. Dipende ovviamente dai dati

paggisan
Sono un quasi ing. e lo scopo è la tesi... non ho competenze economiche. :(

fede.unive
"Sergio":
[quote="paggisan"]Sono un quasi ing. e lo scopo è la tesi... non ho competenze economiche. :(

Non avere le competenze economiche non è un problema se ti limiti a previsioni di così breve termine (uno o due mesi). Essere un "quasi ing." può invece essere una buona cosa: la teoria delle serie storiche ha molto in comune con la teoria dei segnali (in entrambe, ad esempio, l'autocorrelazione svolge un ruolo fondamentale).[/quote]

Pienamente d'accordo. Anzi potresti essere avvantaggiato sotto certi punti di vista.

"Sergio":

b) una volta individuato un modello ragionevole, si tratta di esaminare i residui, cioè le differenze tra i valori calcolati dal modello e quelli osservati; se appare ragionevole considerare i residui come mero "rumore", si è finito; se invece i residui risultano "strutturati", in particolare se presentano autocorrelazione, allora si può migliorare la previsione solo ricorrendo a metodi più sofisticati. Ma non è detto che sia sempre necessario; in fondo, tutto dipende dalla "regolarità" della serie storica.


Non so quanto ti intenda di statistica, regressioni, metodi di stima, ecc... però effettivamente cosa fondamentale è che i residui "si comportino bene". Se così non fosse, le stime dei parametri (di qualsiasi) modello sarebbero inficiate ab origine. Qualora dovesse succedere si può procedere in vari modi:
1) Cambiare struttura del modello (ad esempio cambiare la struttura dei ritardi ovvero togliere/aggiungeri variabili esplicative);
2) Utilizzare tecniche di stima più sofisticate.

Comunque i problemi che possono saltar fuori posso essere molti e molto disparati. Ti faccio notare una cosa che sicuramente dovrai risolvere. Se non ho capito male disponi di dati giornalieri. A mio avviso ti conviene come minimo mensilizzarli per almeno due ragioni:
a) molti dati scaricabili dalle varie banche dati non hanno frequenza giornaliera, ma mensile se non trimestrale (a meno che non ti interessino variabili quali indici azionari...tuttavia trattandosi di un negozio di abbigliamento mi sembrerebbe una forzatura);
b) i dati ad alta frequenza sono più difficili da modellare (ci possono essere più problemi).

Ricorda poi un'altra cosa (consiglio da economista quale sono). Come diceva il mio professore di econometria: "I dati basta maltrattarli e possono fare tutto". Ovviamente lo diceva per spiegarci come NON bisogna fare econometria. Tutto può "spiegare" (numericamente) tutto. Tuttavia prima di stimare e costruire un modello bisognerebbe avere delle idee sensate sul perché potrebbe esserci un legame tra due variabili (ad esempio l'indice della produzione industriale può spiegare la tua variabile; il prezzo del petrolio probabilmente anche, ma, economicamente ha poco senso).

fede.unive
Inoltre un bellissimo libro, che forse puoi trovare anche in italiano è:

"Hamilton. Econometria delle serie storiche". http://www.ibs.it/code/9788832354300/hamilton-james/econometria-delle-serie-storiche.html

paggisan
Ringrazio tutti per l'aiuto.
Mi inizio a leggere uno dei libri proposti. :)
Di sicuro richiederò presto il vostro aiuto! :D

fede.unive
"Sergio":

Curiosamente questo aspetto è quasi ignorato dai testi fin qui citati, probabilmente perché appartiene a una fase preliminare dell'analisi (se è presente un cosiddetto cambiamento strutturale - vedi qui - si spezza la serie prima di lavorarci sopra, e si lavora separatamente sui diversi "spezzoni").
Se ti serve, puoi trovare qualcosa sull'argomento in:
- C. Kleiber e A. Zeileis, Applied Econometrics with R, paragonabile a C&M;
- Fumio Hayashi, Econometrics.


Per il cambiamento strutturale vedi anche (in italiano):
"Johnston. Econometrica"

paggisan
Allora, giusto per capire se ho capito bene.
Ho letto che Box-Jenkins da delle indicazioni sulla procedura da applicare per trovare modelli del tipo ARIMA o SARIMA. Le prime operazioni da fare sono:
1) plot dei dati storici. Io ho i dati di diversi anni, supponiamo di raggrupparli per mesi. Quindi ad esempio nel grafico avrò mese per mese la quantità di oggetti venduti dal 2005 al 2011. Per vedere se il modello è valido, l’idea è di prevedere cosa accadrà nei primi mesi del 2012 (di cui ho i dati).
2) individuazione di eventuali "anomalie", come dicevate voi l'esempio degli outliers.
3) scomporre la serie nelle componenti quali in particolare trend e stagionalità.
Primo problema, come trovo il Trend?
Ho visto che esistono varie funzioni quali trend polinomiale o trend esponenziale, etc...
Ma dunque come faccio a capire quale tra le varie funzioni è la migliore? E poi a stimare i parametri?

fede.unive
punto 1): esatto.
punto 2): esatto (se trovi outliers dovresti capire da cosa sono stati causati; individui eventualmente break strutturali e spieghi da cosa sono dovuti).
punto 3): esatto. Ma qui le cose cominciano a complicarsi. Devo fare delle premesse.

Una serie storica si può considerare "rappresentativa" del processo generatore dei dati (che è un processo stocastico) solo se è stazionaria ed ergodica. Quindi puoi fare inferenza e previsione sui dati solo se si verificano queste due condizioni. Posto che non esiste un test per verificare l'ergodicità (e quindi la devi assumere come verificata) per la stazionarietà vi sono vari test. Il più famoso, forse, è il test di Dikey-Fuller esteso (test ADF). Puoi trovare nei vari libri le spiegazioni teoriche di quello che dico. Io ti do una spiegazione terra-terra per la stazionarietà. Da un punto di vista grafico, significa in prima approssimazione che i dati tendono a muoversi attorno ad una media (quindi procedono avanti nel tempo senza "salire o scendere troppo").
Se invece i dati crescono o decrescono visibilmente significa che esiste un trend. Ora attento. Questo trend può essere deterministico oppure stocastico. Se il trend è deterministico (ossia l'idea che hai tu di trend, quello di cui parli nel messaggio), significa che oltre alla parte stocastica c'è una componente deterministica. Questa può avere le più svariate forme (alcuni esempi):

$f(t)= \alpha_1 * t$ $ $ trendi lineare
$f(t)= \alpha_1 * t + \alpha_2 * t^2$ $ $ trend quadratico
$f(t)= \sum_{i=1}^\n \alpha_i * t^i $ $ $ trend polinomiale
$f(t)= \alpha^t$ $ $ trend esponenziale

Esistono vari test statistici per verificare la presenza di un trend (almeno io ne conosco per il trend lineare e quadratico). Se il trend è deterministico significa inoltre che questo può essere rimosso dai dati (stimati i paramtri del trend bastrà togliere espessamente i valori che questo crea). Se così fosse la serie depurata risulterà stazionaria. Per questa ragione si parla di serie trend-stazionarie (ossia che sono stazionarie attorno ad un trend). Trattandosi di economia però non puoi trovare il trend e basta: dovresti spiegare e motivare la presenza di questo trend e da cosa è causato.
Se il trend è stocastico, significa invece che la serie è integrata. E qui si apre tutto un mondo. Se così fosse la serie va differenziata fino all'ottenimento di una serie stazionaria, ma l'interpretazione dei risultati richiede molta cautela (e approfondita conoscenza della materia).

Cmq, se vuoi, se me la invi per mail, posso dare un'occhiata a questa serie.

paggisan
Allora il Prof. mi ha detto di iniziare a dare uno sguardo alle serie storiche e a come si analizzano (E io sto proprio cercando di avere un'idea almeno sul procedimento di analisi)... sono ancora all'inizio e non avrò neppure i dati reali per tutto questo periodo di feste.

Detto ciò, continuano a sfuggirmi dei passaggi.

La serie storica la posso scomporre in trend, stagionalità, cicli, parte residuale... fare la somma o il prodotto di queste componenti significa avere la serie originaria. Giusto?
Per ricavare il trend potrei usare le medie mobili --> ma quindi, in questo caso, userei un modello "MA" ?
Se poi per estrarre la stagionalità, uso l'autoregressione --> faccio la somma con il trend --> e quindi alla fine ho usato un modello ARMA?
E' così che funziona?

Lo scopo di estrarre trend, stagionalità, etc... è per rendere la serie stazionaria.
Ma allora non capisco bene quando "fede.unive" (che ringrazio davvero molto, così come Sergio) mi dice che " Se il trend è deterministico significa inoltre che questo può essere rimosso dai dati (stimati i parametri del trend bastrà togliere espessamente i valori che questo crea). Se così fosse la serie depurata risulterà stazionaria." --> cioè per togliere il trend, a livello pratico cosa dovrei fare?
Se "elimino" il trend, stagionalità, etc.. al fine di rendere la serie stazionaria, mi rimane la parte residuale. Ma allora un possibile modello "Arma" lo applico alla parte residuale?

Scusatemi davvero, ho le idee un pò confuse....

fede.unive
"paggisan":

La serie storica la posso scomporre in trend, stagionalità, cicli, parte residuale... fare la somma o il prodotto di queste componenti significa avere la serie originaria. Giusto?
Per ricavare il trend potrei usare le medie mobili --> ma quindi, in questo caso, userei un modello "MA" ?
Se poi per estrarre la stagionalità, uso l'autoregressione --> faccio la somma con il trend --> e quindi alla fine ho usato un modello ARMA?
E' così che funziona?

Lo scopo di estrarre trend, stagionalità, etc... è per rendere la serie stazionaria.
Ma allora non capisco bene quando "fede.unive" (che ringrazio davvero molto, così come Sergio) mi dice che " Se il trend è deterministico significa inoltre che questo può essere rimosso dai dati (stimati i parametri del trend bastrà togliere espessamente i valori che questo crea). Se così fosse la serie depurata risulterà stazionaria." --> cioè per togliere il trend, a livello pratico cosa dovrei fare?
Se "elimino" il trend, stagionalità, etc.. al fine di rendere la serie stazionaria, mi rimane la parte residuale. Ma allora un possibile modello "Arma" lo applico alla parte residuale?

Scusatemi davvero, ho le idee un pò confuse....


Quando hai stagionalità, cicli e trend (ma attento non è detto che per forza tu debba averli tutti!) questi vanno "rimossi" non nel senso che il modello non li utilizzerà, ma proprio per rendere la serie straordinaria (il dottore, per visitare un paziente, deve farlo spogliare...non so come mi sia venuta questa! :lol: ) così da poter capire quale sia il comportamento "base" (con tante virgolette).
Quindi diciamo che, per capire bene come si comporta il fenomeno vendita, è bene rimuovere tutti gli elementi deterministici (trend, stagionalità, cicli). Solo così potrai fare correttamente inferenza e quindi previsione.
QUando poi dici che, eliminati (nel senso di momentaneamente rimossi) trend stagionalità, ecc... ti rimarra solo la serie stazionaria, magari fosse sempre così! I processi MA(q) sono per costruzione stazionari ma gli AR(p) non è detto che lo siano (lo sono solo se le soluzioni dell'equazione caratteristica del processo sono in modulo maggiori di 1).

paggisan
Quindi, se ho capito bene, la serie me la posso scrivere come:
Serie = Trend + Stagionalità + Ciclicità + Parte residuale.
(+ se additiva, altrimenti prodottti o altro....)
Dalla serie non stazionaria elimino Trend, Stagionalità,Ciclicità.... mi rimane solo la Parte residuale (a questo punto si spera stazionaria) che a sua volta se, non è "gaussiana" (cioè incorrelata), devo studiare con un apposito modello quale ARMA o altro.

Il procedimento così in breve è corretto?

Per la verifica della stazionarietà posso usare il correlogramma? Cioè se esso decresce molto lentamente la serie non è stazionaria. (lo so, voi mi avete fatto riferimento a dei criteri che al momento non ho capito! :D )

fede.unive
Il correlogramma va benissimo per farsi un'idea. Ma per essere informativo, la serie va prima depurata (solito discorso).
Il correlogramma, oltre a darti un info sulla stazionarietà, ti può dare un info (anche se sommaria), sulla natura del processo: white noise, random walk, MA, AR, ARMA... ecc...

Poi per essere "sicuri" si fanno i test statistici e si prova ad adattare i modelli.

fede.unive
Se mi mandi un messaggio privato con la tua mail, se vuoi, posso darti alcune dispense che possono guidarti

paggisan
Pian piano credo di iniziare a capire meglio come funzionano le cose.
Dopo aver estratto Trend, Stagionalità e Residui (ad esempio tramite Media Mobile)... devo studiare separatamente queste tre componenti... e quindi se devo fare delle previsioni future, in realtà mi creo tre modelli per le tre componenti, giusto?
Tramite modelli, faccio 3 previsioni che poi devono essere ricomposte.
ES:
Trend continuo a usare la media mobile.
Stagionalità è "costante".
Residui, se non sono rumore, devo trovare un modello specifico... (è qui che potrebbe entrare in gioco un modello AR)
Calcolo la previsione 3 volte e ricompongo in un unico valore successivamente.
Corretto?
(Se è sbagliato non arrabbiatevi, vi prego! :D... sto cercando di capire!)

paggisan
Sto usando slide su internet e dispense varie....
Non sto usando software al momento (comunque penso che proverò R) proprio perchè prima magari capire un pò il meccanismo generico dell'analisi delle serie può essere utile....

socio1985
Non sapevo se aprire una nuova discussione o continuare questa che è per certi versi simile (in caso i moderatori potranno decidere se è il caso di creare un nuovo topic).
Non ho conoscenze di econometria, ma da qualche mese sto facendo uno stage in banca e mi si è presentata la possibilità di avere accesso a dati storici altrimenti piuttosto costosi. L'idea "naive" era quella di studiare le correlazioni incrociate dei futures su indici e quindi, a tempo perso quando non c'era molto lavoro, mi sono messo ad organizzare i dati scaricati da reuters , utilizzando python col modulo pandas (molto comodo per trattare dati di questo tipo).
Dal momento che devo svolgere una tesi magistrale, e a lavoro non è che vengano trattati argomenti di ricerca, ho pensato di studiare serie storiche ad alta frequenza di campionamento (5 secondi). Passando dallo "svago", all'idea di farci una tesi, mi è sembrato normale cercare di informarmi sullo "stato dell'arte". Attualmente sto leggendo gli appunti di Riccardo Lucchetti (erano stati segnalati in un'altra discussione) che mi sembrano una buona introduzione al'argomento, poi ho ho ordinato il Ruey/Tsay che si occupa proprio nello specifico di econometria applicata alla finanza. Quindi mi chiedo: quest' ultimo testo è una guida omnicomprensiva o serve altro materiale? Inoltre, secondo voi uno studio di questo tipo può portare a risultati interessanti, oppure è già stato portato avanti in tutte le salse e posso trovare i risultati in qualche articolo accademico?
Per riassumere: vorrei studiare le correlazioni incrociate di prodotti finanziari (caratterizzati da una buona liquidità) che possono influire l'uno sull'altro, ho quindi pensato ai futures su indici. Se trovassi qualcosa vorrei sperimentare delle strategie di trading capaci, diciamo statisticamente, di fornire degli utili. Per l'organizzazione dei dati ho utilizzato python con pandas, per la parte statistica mi è stato consigliato R.
Mi rendo conto che dietro ad ognuno dei punti ha cui ho accennato c'è un mondo (anche il semplice "organizzare i dati" nasconde molte insidie), però mi interessa l'opinione di chi già conosce l'argomento, anche per eventuali spunti.

fede.unive
"socio1985":
Non sapevo se aprire una nuova discussione o continuare questa che è per certi versi simile (in caso i moderatori potranno decidere se è il caso di creare un nuovo topic).

Secondo me sarebbe meglio aprire una nuova discussione. I temi sono sì collegati, ma sono più gli argomenti che li dividono.

"socio1985":
Dal momento che devo svolgere una tesi magistrale, e a lavoro non è che vengano trattati argomenti di ricerca, ho pensato di studiare serie storiche ad alta frequenza di campionamento (5 secondi).

Wow! al limite del "continuo" (con tante virgolette). Per quanto una tale frequenza possa risultare molto affascinante, credo che sarai "costretto" a diminuirla... Scoprirai che le serie storiche finanziarie ad alta frequenza (altissima!!!) sono molto birichine..... :twisted:

"socio1985":
Passando dallo "svago", all'idea di farci una tesi, mi è sembrato normale cercare di informarmi sullo "stato dell'arte". Attualmente sto leggendo gli appunti di Riccardo Lucchetti (erano stati segnalati in un'altra discussione) che mi sembrano una buona introduzione al'argomento, poi ho ho ordinato il Ruey/Tsay che si occupa proprio nello specifico di econometria applicata alla finanza. Quindi mi chiedo: quest' ultimo testo è una guida omnicomprensiva o serve altro materiale? Inoltre, secondo voi uno studio di questo tipo può portare a risultati interessanti, oppure è già stato portato avanti in tutte le salse e posso trovare i risultati in qualche articolo accademico?

La dispensa del Prof. Lucchetti penso sia una delle migliori introduzione all'econometria delle serie storiche che esiste in italiano: è estremamente chiaro, ti guida passo dopo passo senza dare nulla per scontato. Tuttavia per quanto riguarda la trattazione delle serie ad alta frequenza (ARCH, GARCH con tutte le letterine che si possono mettere prima della G) è un po' povero. Quindi studiala pure, ma ti servirà altro. Il libro di Tsay è molto buono e completo (quindi va bene). Se volessi un riferimento anche in italiano, secondo me fatto veramente bene (anche se non ha proprio tutti gli argomenti di Tsay) è "Metodi quantitativi per i mercati finanziari" di Gallo e Pacini.

"socio1985":
vorrei studiare le correlazioni incrociate di prodotti finanziari (caratterizzati da una buona liquidità) che possono influire l'uno sull'altro, ho quindi pensato ai futures su indici. Se trovassi qualcosa vorrei sperimentare delle strategie di trading capaci, diciamo statisticamente, di fornire degli utili.

Non so cosa sei :wink: Matematica? Ingegneria? Statistica?
Dietro alle tue idee (di base non malvagie), si celano delle precisazioni molto importanti da fare. Cominciamo con le correlazioni. Come saprai la correlazione è una misura di dipenza lineare (quindi è una misura non in grado di cogliere altre forme funzionali di dipendenza). Allora tu potresti rispondermi: anche se la dipendenza non è lineare è comunque possibile approssimarla localmente con la correlazione. Ahime, secondo me, nel tuo caso NO. Le serie finanziare, soprattutto se così ad alta frequenza, non riescono ad essere approssimate localmente da una relazione affine (sono troppo "spigolose" - punti angolosi). Quindi per poter usare la correlazione o decidi di diminuire (molto) la frequenza, ma se stai cercando di fare trading serio non so se sia una buona cosa, oppure devi studiare una misura di dipendenza più sofisticata.
Seconda precisazione futures. Spero tu sappia come vengano matematicamente trattato un future e in che cosa consista effettivamente. Ad ogni modo, il prezzo (teorico), in assenza di opportunità di arbitraggio, di un future è dato, $t=0$ da:

$F(0)=S(0)*e^{r_F * T}$

dove $S(0)$ è la quotazione in $t=0$ del sottostante (nel tuo caso l'indice), $r_F$ il tasso di rendimento privo di rischio composto continuamente per la scadenza $T$ del contratto. Questa è la struttura base. Quindi, sotto le opportune ipotesi, il prezzo del future dipende dal prezzo del sottostante. Quindi non sarebbe forse più corretto, ceteris paribus studiare una dipendenza tra gli indici?
Terza ed ultima precisazione: strategie di trading capaci statisticamente di fornire degli utili :-D Le assunzioni sul quale si fonda la finanza classica (le quali direi sono in parte irrealistiche :snakeman: se non sbagliate :oops: ) ti dicono che è impossibile "creare" un modello che riesca a produrre utili. Questo non è per dire che i padri della finanza teorica abbiano per forza ragione (anzi!), ma, a mio avviso, se ritieni che sia possibile sfruttare una strategia di trading per ottenere statisticamente (e quindi sistematicamente) degli utili, dovresti rimuovere e modificare alcune delle ipotesi che si è soliti fare.

socio1985
Ciao, ti ringrazio per gli spunti. Vengo da fisica. Quando parli di "misura di dipendenza più sofisticata" cosa intendi? Ancora non ho studiato i processi GARCH etc, nella dispensa sono appena arrivato ai processi multivariati.
Per quanto riguarda gli indici, devi tener conto che a scambiare sono i futures sugli stessi, quindi se trovassi qualcosa sugli indici dovrei rimappare i risultati sui futures (perdona il gioco di parole). Inoltre nella formula che hai riportato manca la dipendenza dai dividendi e la stima dei dividenti la si ricava proprio dallo spread indice-futures (insomma te la da il mercato)...aggiungici poi che i futures tradano anche quando i relativi indici non sono più quotati, e converrai che conviene lavorare direttamente sui futures.

Per produrre degli "utili" mi riferivo alla possibilità di trovare qualcosa sull'andamento dei futures che influenzasse, diciamo in differita, l'andamento di un altro futures. Una sorta di propagazione ritardata. Mi rendo conto che si tartta di un obiettivo velleitario, perchè visto che di mezzo ci sono soldi, tanti avranno già fatto studi di questo tipoe avrebbero già sfruttato eventuali possibilità di arbitraggio...non so, a me basterebbe fare un lavoro di ricerca consistente, che per una tesi dovrebbe già andar bene.
Che poi sia impossibile creare un modello capace di fornire degli utili, sono d'accordo con te che non è esatto...nel mercato, almeno per dei prodotti poco liquidi, ci sono errori di pricing (spesso voluti), solo che è difficile approfittarne proprio perchè i prodotti sono poco liquidi, per attriti finanziari e perchè probabilmente il guadagno non giustificherebbe le risorse spese per ottenerlo.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.