Skip to content

Ristruttura il risultato dell'ottimizzazione #10

Description

@xyffar

Fai 4 cose

  1. Fai che l'ottimizzazone restituisca un dataframe fatto così:

    • Indice: interi da 0 a +inf con ticker (es. "AAPL0001", "AAPL0002", "LDO.MI0177")
    • Aggiunta di tre colonne:
    • Strategy_Name: mettiamo il display_name della strategia
    • par_names: tupla ordinata col nome dei parametri
    • par_values: tupla ordinata con i valori dei parametri
  2. Rendi le statistiche da mostrare in ogni modalità definite nel config.py o nello yaml

    • STATS_OF_INTEREST (enum?)
    • STATS_FOR_MC
    • MC_PERCENTILES
    • STATS_FOR_WFO
  3. Finita l'ottimizzazione crea colonne multiindex e comincia a imbastire la tabella come segue. Man mano che si fanno monte carlo e wfo, la si completa con le ulteriori colonne. Solo alla fine del macro processo di ottimizzazione si va a scrivere la variabile session_state["xxx"] che verrà utilizzata nel display_results()

Usiamo colonne multiindex:

(Strategy, Name)
(Strategy, Param Names)
(Strategy, Param Values)

(BT Stats, Return [%])
(BT Stats, Sharpe Ratio)
...
(BT Stats, Trade_returns) : np.array
(BT Stats, Equity_curve) : pd.Series

(Benchmark Stats, Return [%])
(Benchmark Stats, Sharpe Ratio)
...
(Benchmark Stats, Var. Return [%])

(Monte Carlo, Return [%] - Perc1)
(Monte Carlo, Return [%] - Perc2)
(Monte Carlo, Return [%] - Perc3)
(Monte Carlo, Return [%] - Perc4)
(Monte Carlo, Return [%] - Perc5)
(Monte Carlo, Return [%] - Prob. > Benchmark)
(Monte Carlo, Max Drawdown [%] - Perc1)
(Monte Carlo, Max Drawdown [%] - Perc2)
(Monte Carlo, Max Drawdown [%] - Perc3)
...

(wfo, Return [%] - avg.)
(wfo, Return [%] - std. dev.)
(wfo, Return [%] - consistency index) --> Media dei consistency index dei singoli cicli,ossia stat_os/stat_is - 1
(wfo, Max Drawdown [%] - avg.)
(wfo, Max Drawdown [%] - std. dev.)
(wfo, Max Drawdown[%] - consistency index) --> Media dei consistency index dei singoli cicli,ossia stat_os/stat_is - 1
...
(wfo, cycles_stats) : pd.DataFrame



  1. Fai la wfo in modo tale che renda una tabella come segue, per ogni singola combinazione testata. Inoltre, la WFO deve restituire un dizionario che va nei session_state del tipo {"Cycle 1": (is_start, is_end, os_start, os_end), ...}

cycles_stats

indice
(Cycle 1, Cycle 2, ..., Cycle n)

Colonne
IS_start
IS_end
OS_start
OS_end
Return [%]_IS
Return [%]_OS
Return [%]_tot
Return [%]_consistency
Max Drawdown [%]_IS
Max Drawdown [%]_OS
Max Drawdown [%]_tot
Max Drawdown [%]_consistency
...

<style> </style>
  IS_start IS_end OS_start OS_end Return [%]_IS Return [%]_OS Return [%]_tot Return [%]_consistency Max Drawdown [%]_IS Max Drawdown [%]_OS Max Drawdown [%]_tot Max Drawdown [%]_consistency …
Cycle 1                          
Cycle 2                          
Cycle 3                          
Cycle 4                          
Cycle 5                          

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions