Profilo di Mniellodam

Nome Mniellodam
Indirizzo email n/a
Messaggi1
  • E' un modello che girerebbe??????
    Forum >> Principianti
    ragazzi sono un laureando magistrale e come tesi dovrei implementare un modello di gestione di un portafoglio azionari con titioli da me scelti, mediante l'utilizzo di Python
    nvidia

    coca cola

    tesla

    eni

    meta pltaform

    brunello cucinelli




    Ora essendo io completamente ebete ed inesperto, provado a smanettare con python ho tirato giù qualche stringa di codice (grazie anche ai vari video tutorial).


    import yfinance as yf

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt




    # Lista di ticker azionari

    tickers = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'TSLA']




    # Scarica i dati dei prezzi storici (5 anni di dati)

    data = yf.download(tickers, start="2019-01-01", end="2024-01-01")['Adj Close']




    # Calcolo dei rendimenti giornalieri

    returns = data.pct_change().dropna()




    # Numero di azioni nel portafoglio

    num_assets = len(tickers)




    # Numero di portafogli da simulare

    num_portfolios = 10000




    # Array per memorizzare risultati

    results = np.zeros((3, num_portfolios))

    weights_record = []




    # Simulazione dei portafogli

    for i in range(num_portfolios):

    # Generazione di pesi casuali

    weights = np.random.random(num_assets)

    weights /= np.sum(weights) # Normalizzazione: la somma dei pesi è 1

    weights_record.append(weights)



    # Calcolo rendimento atteso e volatilità (std) del portafoglio

    portfolio_return = np.sum(weights * returns.mean()) * 252 # Annualizzato

    portfolio_volatility = np.sqrt(np.dot(weights.T, np.dot(returns.cov() * 252, weights))) # Annualizzato



    # Sharpe Ratio (considerando un tasso privo di rischio pari a 0)

    sharpe_ratio = portfolio_return / portfolio_volatility



    # Memorizza rendimento, volatilità e Sharpe ratio

    results[0,i] = portfolio_return

    results[1,i] = portfolio_volatility

    results[2,i] = sharpe_ratio




    # Trovare il portafoglio con il più alto Sharpe Ratio

    max_sharpe_idx = np.argmax(results2)

    best_weights = weights_recordmax sharpe idx




    # Trovare il portafoglio con la minore volatilità

    min_volatility_idx = np.argmin(results1)




    # Plotting dei risultati

    plt.scatter(results[1,:], results[0,:], c=results[2,:], cmap='YlGnBu', marker='o')

    plt.colorbar(label='Sharpe Ratio')

    plt.scatter(results[1, max_sharpe_idx], results[0, max_sharpe_idx], marker='*', color='r', s=500, label='Miglior Sharpe Ratio')

    plt.scatter(results[1, min_volatility_idx], results[0, min_volatility_idx], marker='*', color='g', s=500, label='Minima Volatilità')

    plt.title('Simulazione di Portafogli')

    plt.xlabel('Volatilità')

    plt.ylabel('Rendimento Atteso')

    plt.legend()

    plt.show()




    # Stampa dei risultati

    print("Portafoglio con miglior Sharpe Ratio:")

    print(f"Rendimento atteso: {results[0, max_sharpe_idx]:.2f}")

    print(f"Volatilità: {results[1, max_sharpe_idx]:.2f}")

    print(f"Pesi: {best_weights}")


    questo è più o meno il risultato, qualche buon anima e innovatore del nostro mondo può aiutare un uomo in pena con qualche dritta e consiglio?
    l' obiettivo oltre è valutare la performance in un arco temporale indicativo di 6 mesi da maggio ad oggi.


    vi amooo