Rescaler di portafoglio
Panoramica
StrategyQuant X costruisce i risultati del portafoglio unendo più strategie e sovrapponendo i loro P&L commerciali a un unico saldo di partenza. Questo metodo è semplice e veloce, ma introduce una distorsione sistematica = ogni strategia è stata testata in modo isolato, dimensionando le posizioni in base al proprio conto (ad esempio, 1% di $100.000). Una volta unito, il portafoglio cresce, ma le dimensioni delle singole operazioni non si adeguano mai per riflettere il maggiore saldo combinato. Una strategia che ha aperto una posizione di $1.000 quando il portafoglio era di $100k sta ancora aprendo una posizione di $1.000 quando il portafoglio è cresciuto a $400k. La posizione è ora un quarto del rischio effettivo di 1%.
Questo plugin esegue la cronologia completa delle operazioni del portafoglio, applicando un fattore di scala a ogni operazione, in modo che la posizione di ogni strategia sia sempre dimensionata rispetto all'attuale saldo combinato del portafoglio piuttosto che al proprio saldo iniziale isolato. Il risultato è costituito da due curve azionarie affiancate con l'originale (che corrisponde esattamente a SQX) e il ridimensionato (che avrebbe prodotto la capitalizzazione corretta) con un grafico di confronto del drawdown.
Cosa fa
- Replica esattamente la curva di portafoglio originale di SQX, in modo da avere una base verificata con cui confrontarsi.
- Ripropone il portafoglio con una scalatura corretta per ogni operazione, in cui ogni operazione viene ridimensionata in base al saldo corrente del portafoglio ÷ al saldo isolato dell'algo in quel momento.
- Mostra un grafico del drawdown % per entrambe le curve, in modo da poter vedere quando si sono verificati i drawdown e se il ridimensionamento li rende migliori o peggiori.
- Rileva automaticamente tutti i saldi iniziali dai dati degli ordini, l'inizio del portafoglio e l'inizio isolato di ogni algo vengono letti direttamente dal primo ordine di ogni strategia; non sono necessari input manuali.
- Supporta un limite massimo di lotti, in modo da poter vedere la curva vincolata del mondo reale per i limiti di posizione dell'elica.
- Filtro per intervallo di date con avvio a caldo. Limita la visualizzazione a qualsiasi sottoperiodo; le operazioni precedenti all'intervallo vengono riprodotte per portare tutti i saldi allo stato corretto prima dell'inizio della finestra.
- La levetta Rebase to Start normalizza entrambe le curve al punto di partenza originale per qualsiasi intervallo selezionato, rendendo due periodi di tempo direttamente confrontabili su un piano di parità.
Come funziona
I saldi iniziali vengono rilevati automaticamente. Il saldo iniziale del portafoglio viene letto come firstOrder.Balance - firstOrder.ProfitLoss. Il saldo iniziale isolato di ogni strategia viene rilevato allo stesso modo dal primo ordine della strategia stessa (identificato da ResultName).
La curva Original è un replay diretto: si parte dal saldo del portafoglio rilevato, si aggiunge l'ProfitLoss originale di ogni operazione in ordine cronologico. Questo deve corrispondere esattamente al profitto netto, al saldo finale e al drawdown riportati da SQX. In caso contrario, il saldo iniziale rilevato è errato.
La curva riscalata utilizza lo stesso saldo iniziale, quindi per ogni operazione:
fattore di scala = bilancio del portafoglio corrente ÷ algoIsolatedBalance
PL scalato =PL originale × fattore di scala
Il bilancio isolato dell'algoritmo viene aggiornato dopo ogni operazione (isoBal += originalPL), in modo che il rapporto rifletta l'evoluzione del conto di quella strategia in modo isolato. Se viene impostato un limite massimo di lotti, il fattore di scala viene livellato in modo che la posizione implicita non superi mai maxLots ÷ originalLotSize.
Il drawdown % viene monitorato indipendentemente dal drawdown $, esattamente come fa SQX: il peggior calo percentuale (peak-to-valley ÷ local peak) e il peggior calo in dollari vengono misurati separatamente nell'intera cronologia degli scambi e riportati nella tabella delle statistiche.
Ipotesi
- Le strategie utilizzano un dimensionamento delle posizioni basato sulla percentuale (ad esempio, 1% di rischio per operazione).
- Se le strategie utilizzano lotti fissi, il fattore di scala modifica il P&L nozionale ma non il numero effettivo di lotti. La curva ridimensionata avrà un aspetto diverso, ma non rifletterà l'esecuzione effettiva.
- Il campo Balance negli ordini di portafoglio rappresenta il saldo del conto isolato per strategia (non il saldo del portafoglio combinato).
- Questo è ciò che il plugin utilizza per rilevare il capitale iniziale di ogni algo e seguirne l'evoluzione. Se SQX memorizza in questo campo il saldo corrente a livello di portafoglio, i fattori di scala per algo non saranno corretti. Convalidare controllando che le fiches iniziali dell'algo rilevate corrispondano ai saldi iniziali della strategia.
- Tutte le strategie utilizzano la stessa valuta di base
- I valori di P&L sono sommati e scalati in unità di valuta grezza; non vengono gestiti i portafogli a valute incrociate.
- Il rilevamento del saldo iniziale presuppone che non siano state chiuse operazioni prima del primo ordine nei dati.
- Se l'esportazione dei dati è troncata (ad esempio, si sta visualizzando una fetta fuori campione), il saldo iniziale rilevato sarà quello all'inizio della fetta, non il capitale originale configurato.
Limitazioni e svantaggi
La curva ridimensionata è una simulazione, non un backtest. Il fattore di scala viene applicato al P&L originale, che è stato calcolato utilizzando lotti di dimensioni fisse. In realtà, la negoziazione di un lotto più grande avrebbe avuto un impatto diverso sul mercato e potrebbe aver spostato il prezzo a vostro sfavore in modo diverso. Questo effetto è trascurabile per gli strumenti liquidi e per i conti di piccole dimensioni, ma può essere significativo per i mercati illiquidi o per le posizioni molto grandi.
Non vengono gestite le operazioni che si sovrappongono. Il ridimensionamento presuppone che ogni operazione sia indipendente. Se due strategie detengono posizioni simultaneamente, l'esposizione combinata in qualsiasi momento è la somma di entrambe le posizioni scalate - il plugin non controlla se ciò possa violare i limiti di margine o di esposizione.
Il limite massimo di lotti viene applicato per ogni operazione, non per ogni posizione aperta. Se più strategie hanno operazioni aperte simultaneamente, ciascuna di esse è soggetta a un tetto massimo, ma il totale dei lotti aperti per tutte le posizioni simultanee non è soggetto a vincoli.
Il drawdown viene misurato solo alla chiusura dell'operazione. Le oscillazioni dell'equity intra-trade (open drawdown) non sono visibili nei dati degli ordini. Il drawdown massimo riportato può essere inferiore a quello che si osserverebbe su una curva azionaria tick-by-tick.
Le strategie a lotto fisso non mostreranno alcuna differenza significativa tra Originale e Riscalato: il fattore di scala modifica il guadagno/perdita in dollari implicito, ma non l'effettivo comportamento al rischio della strategia.
Questo è stato progettato per dare un'idea di come il rischio del portafoglio sarà realmente scalato, poiché il valore di Drawdown nei risultati dell'StrategyQuant non è accurato con il rischio %.
