2012-05-20 11 views
5

Spero che questo non venga chiuso perché è correlato ad algoritmi che non sono stato in grado di capire (è anche piuttosto lungo perché sono così confuso su come viene fatto). Fondamentalmente molti anni fa lavoravo in un fondo comune e usavamo diversi strumenti per selezionare i portafogli ottimizzati e per coprire quelli esistenti. Prenderemmo questi risultati e apporteremo le nostre modifiche per poi venderle ai clienti. Dopo che la mia azienda è stata ridimensionata, ho deciso che volevo fare un tentativo (creare il software e includere le mie personalizzazioni), ma non ho idea di come siano effettivamente generate le combinazioni per il software.In che modo il software di portfolio genera i loro suggerimenti di portfolio così rapidamente quando le possibilità sono enormi?

Dopo 6 mesi di tentativi, accetto che il mio approccio sia impossibile. Stavo cercando di usare algoritmi combinati come quelli del libro di Knuth, oltre a fare combinazioni bit per cercare di trovare ogni possibile portafoglio (l'ho limitato a 30 titoli) sul NYSE (oltre 5.000 titoli). Ma per tutti quelli con cui ho parlato ci vorranno miliardi di miliardi di anni per ottenere solo un giorno di risultati (per me su una GPU l'ho interrotto dopo 2 giorni di elaborazione diretta).

Quindi cosa mi manca? Entreremmo nella nostra tolleranza al rischio e nella visione del mercato (aspettative di crescita del mercato azionario, aspettative di inflazione, aspettative dei fondi nutrite, ecc.) E ci darebbe il portafoglio ideale (in teoria ...) in pochi secondi/minuti. Con migliaia di possibilità e quadrilioni di possibili combinazioni di pesi delle scorte, come sono in grado di calcolare i risultati così rapidamente (o addirittura del tutto)? Come amministratore del sistema, so che abbiamo scaricato un file ogni giorno (meno di 100 mb e caricato in un database mssql probabilmente solo dati di mercato ... quindi non è che avessimo tutte le possibilità. Usando il mio approccio sopra avrei ottenuto 5 gig file in un minimo di fare la mia versione della combinazione di Knuth algo) e le applicazioni hanno funzionato offline (quindi deve averlo fatto localmente sulla CPU desktop/laptop non su un enorme supercomputer da qualche parte e ha impiegato un minimo di due per l'esecuzione.15. i minuti sono stati i più lunghi per un fondo globale che include tutti gli stock del mondo). È così confuso perché il loro lavoro richiedeva la correlazione dell'intero fondo (non penso che stessero solo inviando i migliori stock che avevano pre-calcolato perché ognuno ha ottenuto risultati diversi). Quindi, se volessi un fondo azionario di 30 che mi fornisse rendimenti del 2% e avesse una correlazione negativa con il mercato, e fosse coperto al 60% come avrebbe potuto il software generare quel portafoglio di miliardi di possibilità così rapidamente? nota, non sto chiedendo la matematica o la parte finanziaria, sto chiedendo come è stato in grado di generare 30 titoli da tutto il mercato che hanno dato un rendimento del 2% quando per fare ciò avrebbe dovuto conoscere i rendimenti di tutti i 30 titoli azionari (che da soli lo farebbero funzionare per miliardi di anni, giusto? le altre restrizioni lo rendono più complesso).

Quindi, come viene eseguito a livello di programmazione? Sto iniziando a credere che non stiano usando l'algoritmo di combinazione di Knuth per generare ogni possibilità, ma i loro risultati non sembrano selezionati casualmente e la selezione individuale degli stock sembra mancare la parte di correlazione. Come possono così tanti software di investimento fare cose come questa?

+2

"È un segreto." – bmargulies

risposta

3

Tali algoritmi quasi certamente non generano tutte le possibilità, come osservi giustamente che sarebbe poco pratico.

La selezione del portfolio è tuttavia molto facile da fare con altre tecniche che ti daranno una risposta molto buona. I due più probabili sono:

  • Se fate ipotesi semplificative intorno rischio/rendimento è possibile risolvere per un portafoglio ottimale matematicamente (vedi http://en.wikipedia.org/wiki/Capital_asset_pricing_model per alcuni dei matematica)
  • un algoritmo genetico che fa operazioni di mutazione/di crossover su portafogli campione randomizzati troverete una soluzione molto buona abbastanza veloce. È possibile combinare questo approccio con gli approcci alla modellazione Monte-Carlo per comprendere la gamma di possibili risultati.

Personalmente, avrei probabilmente suggerire l'approccio algoritmo genetico - anche se non è come matematicamente pura, vi darà buone risposte e dovrebbe in grado di gestire tutti i vincoli che si desidera buttare a questo abbastanza facilmente (ad esempio il numero max di azioni in un portafoglio)

+0

Grazie per la risposta (dopo aver realizzato 6 mesi di lavoro sugli algoritmi combinatori non riuscivo a realizzarlo, quello era il mio semi-rant). Passerò la notte a leggere gli algoritmi genetici, ma come supereranno il problema di trovare il portafoglio giusto? Ad esempio, dici di volere un portafoglio di azioni con un rendimento del 3%. In primo luogo ha bisogno di trovare 30 titoli, quindi deve calcolare i rendimenti del 3% (che è il peggiore del 30 problema combo perché hanno titoli di ritorno negativi che silenziano i rendimenti delle azioni di ritorno più alte. Un + 5% con un -2% darebbe tu il ritorno). –

+0

Mi dispiace se non riesco a ottenerlo, ma l'algoritmo genetico non avrà per alcuni come superare quel problema? Se ne fanno solo alcuni, forse non ottengono i ritorni ottimali, giusto? –

+0

Devi definire una funzione obiettivo per l'algoritmo genetico. Presumibilmente, se si desidera un rendimento del 3%, in realtà si intende "il più vicino al 3% dei rendimenti possibile con una varianza minima". Quindi potresti definire una funzione oggettiva come '- (return - 3%)^2 - (k * variance)' per qualche costante k, ed evolvere soluzioni per massimizzare quel valore – mikera

2

La teoria del Portafoglio moderno è un argomento a sé stante, con libri come "Teoria del portafoglio moderno e analisi degli investimenti" e un'introduzione allo http://en.wikipedia.org/wiki/Modern_portfolio_theory.

Un modo per ottenere i problemi che è possibile risolvere è trattarlo come un problema di ottimizzazione matematica. Se hai un vettore che ti dà la quantità di ogni azione che acquisti, allora - sotto varie ipotesi - il rendimento è una funzione lineare di questo vettore, e il rischio è una funzione quadratica di questo vettore. Massimizzare il rendimento per il rischio dato, o minimizzare il rischio di un determinato rendimento, è un problema matematico ben compreso, anche per un numero molto elevato di scorte - http://en.wikipedia.org/wiki/Quadratic_programming.

Un problema pratico con questo è che la risposta che otterrete probabilmente vi dirà di acquistare una piccola parte di quasi tutti gli stock presenti sul mercato. La mia ipotesi è che i programmi di vita reale utilizzino una "euristica salsa segreta" che non garantisce la risposta perfetta, soggetta a un vincolo sul numero di azioni che siete effettivamente disposti ad acquistare, ma funziona piuttosto bene nella pratica. Restituire la risposta perfetta sembra essere un problema difficile - vedi ad es. http://arxiv.org/ftp/arxiv/papers/1105/1105.3594.pdf