-
-
-@@include('blocks/footer.htm')
-
-@@include('footer.htm')
\ No newline at end of file
diff --git a/source/blog-single.html b/source/blog-single.html
deleted file mode 100644
index 98ffdce8..00000000
--- a/source/blog-single.html
+++ /dev/null
@@ -1,244 +0,0 @@
-@@include('blocks/scroller.htm')
-@@include('header.htm')
-
-@@include('blocks/navigation.html',{"blog":"active", "blogSingle":"active"})
-
-@@include('blocks/page-title.htm', { "page-name": "News details", "title": "Blog Single" })
-
-
-
-
-
-
-
-
-
-
-
-
- Creativity
- 5 Comments
- 28th January
-
-
-
Improve design with typography?
-
Non illo quas blanditiis repellendus laboriosam minima animi. Consectetur
- accusantium pariatur repudiandae!
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus natus, consectetur? Illum libero
- vel nihil nisi quae, voluptatem, sapiente necessitatibus distinctio voluptates, iusto qui. Laboriosam
- autem, nam voluptate in beatae.
-
-
A brand for a company is like a reputation for a person. You earn reputation by trying
- to do hard things well.
-
-
The same is true as we experience the emotional
- sensation of stress from our first instances of social rejection ridicule. We quickly learn to fear
- and thus automatically.
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste, rerum beatae repellat tenetur
- incidunt quisquam libero dolores laudantium. Nesciunt quis itaque quidem, voluptatem autem eos animi
- laborum iusto expedita sapiente.
-
-
-@@include('blocks/footer.htm')
-
-@@include('footer.htm')
\ No newline at end of file
diff --git a/source/blog/experimentation-indicator-technique.html b/source/blog/experimentation-indicator-technique.html
new file mode 100644
index 00000000..6c7bb950
--- /dev/null
+++ b/source/blog/experimentation-indicator-technique.html
@@ -0,0 +1,611 @@
+@@include('blocks/scroller.htm')
+@@include('header.htm')
+
+@@include('blocks/navigation.html',{"blog":"active"})
+
+@@include('blocks/page-title.htm', { "page-name": "Backtesting", "title": "Expérimentation des indicateurs technique", "background-image-url":"images/blog/vol/nombre_de_vol_de_vehicule_moteur_par_annee_hua975f8a3d854aa424a332774bd6b821d_25312_1024x0_resize_q75_box.jpg"})
+
+
+
+
+
+
+
+
+
+
+
+
Expérimentation des indicateurs technique
+
+
+
Introduction
+
+
Dans ce rapport, nous présentons une expérimentation des indicateurs techniques à
+ l'aide du projet BatchBacktesting disponible sur GitHub à l'adresse suivante :
N'oubliez pas de remplacer les espaces réservés FMP_API_KEY et BINANCE_API_KEY par
+ vos véritables clés API pour pouvoir accéder aux données des services respectifs.
+
Plusieurs fonctions pour effectuer des requêtes API et fournit une liste de
+ cryptomonnaies prises en charge.
+
+
Ce script propose des fonctions pour :
+
+
+
Effectuer des requêtes API vers différents points de terminaison.
+
Obtenir des données historiques de prix pour les cryptomonnaies et les actions.
+
+
Obtenir la liste des actions du S&P 500.
+
Obtenir toutes les cryptomonnaies prises en charge.
+
Obtenir les listes des états financiers.
+
+
+
+
+def make_api_request(api_endpoint, params):
+ with httpx.Client() as client:
+ # Make the GET request to the API
+ response = client.get(api_endpoint, params=params)
+ if response.status_code == 200:
+ return response.json()
+ print("Error: Failed to retrieve data from API")
+ return None
+
+
+
+
+ La fonction make_api_request() effectue une requête GET vers l'API et renvoie les
+ données au format JSON si la requête est réussie. Sinon, elle renvoie None.
+
+
+
+
+def get_historical_price_full_crypto(symbol):
+ api_endpoint = f"{BASE_URL_FMP}/historical-price-full/crypto/{symbol}"
+ params = {"apikey": FMP_API_KEY}
+ return make_api_request(api_endpoint, params)
+
+
+def get_historical_price_full_stock(symbol):
+ api_endpoint = f"{BASE_URL_FMP}/historical-price-full/{symbol}"
+ params = {"apikey": FMP_API_KEY}
+
+ return make_api_request(api_endpoint, params)
+
+def get_SP500():
+ api_endpoint = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
+ data = pd.read_html(api_endpoint)
+ return list(data[0]['Symbol'])
+
+
+def get_all_crypto():
+ """
+ All possible crypto symbols
+ """
+ return [
+ "BTCUSD",
+ "ETHUSD",
+ "LTCUSD",
+ "BCHUSD",
+ "XRPUSD",
+ "EOSUSD",
+ "XLMUSD",
+ "TRXUSD",
+ "ETCUSD",
+ "DASHUSD",
+ "ZECUSD",
+ "XTZUSD",
+ "XMRUSD",
+ "ADAUSD",
+ "NEOUSD",
+ "XEMUSD",
+ "VETUSD",
+ "DOGEUSD",
+ "OMGUSD",
+ "ZRXUSD",
+ "BATUSD"
+ "USDTUSD",
+ "LINKUSD",
+ "BTTUSD",
+ "BNBUSD",
+ "ONTUSD",
+ "QTUMUSD",
+ "ALGOUSD",
+ "ZILUSD",
+ "ICXUSD",
+ "KNCUSD",
+ "ZENUSD",
+ "THETAUSD",
+ "IOSTUSD",
+ "ATOMUSD",
+ "MKRUSD",
+ "COMPUSD",
+ "YFIUSD",
+ "SUSHIUSD",
+ "SNXUSD",
+ "UMAUSD",
+ "BALUSD",
+ "AAVEUSD",
+ "UNIUSD",
+ "RENBTCUSD",
+ "RENUSD",
+ "CRVUSD",
+ "SXPUSD",
+ "KSMUSD",
+ "OXTUSD",
+ "DGBUSD",
+ "LRCUSD",
+ "WAVESUSD",
+ "NMRUSD",
+ "STORJUSD",
+ "KAVAUSD",
+ "RLCUSD",
+ "BANDUSD",
+ "SCUSD",
+ "ENJUSD",
+ ]
+
+def get_financial_statements_lists():
+ api_endpoint = f"{BASE_URL_FMP}/financial-statement-symbol-lists"
+ params = {"apikey": FMP_API_KEY}
+ return make_api_request(api_endpoint, params)
+
+def get_Vanguard_Canada():
+ """
+ Get Vanguard Canada companies
+
+ Returns:
+ dict: Dictionary containing the data
+ """
+ # VCN: Vanguard FTSE Canada All Cap Index ETF
+ # VFV: Vanguard S&P 500 Index ETF
+ # VUN: Vanguard US Total Market Index ETF
+ # VEE: Vanguard FTSE Emerging Markets All Cap Index ETF
+ # VAB: Vanguard Canadian Aggregate Bond Index ETF
+ # VSB: Vanguard Canadian Short-Term Bond Index ETF
+ # VXC: Vanguard FTSE Global All Cap ex Canada Index ETF
+ # VIU: Vanguard FTSE Developed All Cap ex North America Index ETF
+ # VGG: Vanguard US Dividend Appreciation Index ETF
+ return ['VCN', 'VFV', 'VUN', 'VEE', 'VAB', 'VSB', 'VXC', 'VIU', 'VGG']
+
+
+
+
+ La fonction get_historical_price_full_crypto() effectue une requête API vers
+ l'API FMP pour obtenir les données historiques de prix pour une cryptomonnaie
+ spécifique. La fonction get_historical_price_full_stock() effectue une requête
+ API vers l'API FMP pour obtenir les données historiques de prix pour une action
+ spécifique. La fonction get_SP500() effectue une requête API vers Wikipedia pour
+ obtenir la liste des actions du S&P 500. La fonction get_all_crypto() renvoie la
+ liste de toutes les cryptomonnaies prises en charge. La fonction
+ get_financial_statements_lists() effectue une requête API vers l'API FMP pour
+ obtenir la liste des états financiers. La fonction get_Vanguard_Canada() renvoie
+ la liste des actions de Vanguard Canada.
+
+
+
+ Pour utiliser ce script dans votre projet, copiez simplement assurez-vous d'avoir
+ installé les bibliothèques requises mentionnées dans la section "Exigences" de la
+ documentation BatchBacktesting. Ensuite, vous pouvez importer les fonctions de ce
+ script dans votre script principal ou votre Jupyter Notebook pour accéder et
+ manipuler les données comme vous le souhaitez.
+
+
+
+ Une fois que vous avez les données, vous pouvez utiliser la bibliothèque
+ BatchBacktesting pour tester diverses stratégies sur les actions ou les
+ cryptomonnaies, analyser les résultats et visualiser les performances. À titre
+ d'exemple, nous avons utilisé la stratégie EMA (Exponential Moving Average) pour
+ effectuer des tests de performance sur les actions du S&P 500 et les cryptomonnaies
+ prises en charge.
+
+
+
EMA Stratégie
+
+
L'EMA est un indicateur technique qui est utilisé pour lisser l'action des prix en
+ filtrant le "bruit" des fluctuations de prix aléatoires à court terme. Il est
+ calculé en prenant le prix moyen d'un titre sur un nombre spécifique de périodes de
+ temps. L'EMA est un type de moyenne mobile qui accorde un poids et une signification
+ plus importants aux points de données les plus récents. La moyenne mobile
+ exponentielle est également appelée moyenne mobile pondérée exponentiellement.
+
+ La stratégie EMA est implémentée dans la classe EMA. La stratégie EMA est une
+ stratégie de suivi de tendance qui utilise trois moyennes mobiles exponentielles
+ (EMA) avec des périodes de 20, 80 et 150. Lorsque la moyenne mobile exponentielle
+ à court terme (20) croise la moyenne mobile exponentielle à long terme (80) par
+ le haut, cela signifie que la tendance est à la hausse et que nous devrions
+ acheter. Lorsque la moyenne mobile exponentielle à court terme (20) croise la
+ moyenne mobile exponentielle à long terme (80) par le bas, cela signifie que la
+ tendance est à la baisse et que nous devrions vendre.
+
+
+
+
+def run_backtests_strategies(instruments, strategies):
+ """
+ Run backtests for a list of instruments using a specified strategy.
+
+ Args:
+ instruments (list): List of instruments to run backtests for
+ strategies (list): List of strategies to run backtests for
+
+ Returns:
+ List of outputs from run_backtests()
+
+ """
+
+ # find strategies in the STRATEGIES
+ strategies = [x for x in STRATEGIES if x.__name__ in strategies]
+ outputs = []
+ with concurrent.futures.ThreadPoolExecutor() as executor:
+ futures = []
+ for strategy in strategies:
+ future = executor.submit(run_backtests, instruments, strategy, 4)
+ futures.append(future)
+
+ for future in concurrent.futures.as_completed(futures):
+ outputs.extend(future.result())
+
+ return outputs
+
+def check_crypto(instrument):
+ """
+ Check if the instrument is crypto or not
+ """
+ return instrument in get_all_crypto()
+
+def check_stock(instrument):
+ """
+ Check if the instrument is crypto or not
+ """
+ return instrument not in get_financial_statements_lists()
+
+
+def process_instrument(instrument, strategy):
+ """
+ Process a single instrument for a backtest using a specified strategy.
+ Returns a Pandas dataframe of the backtest results.
+ """
+ try:
+
+ if check_crypto(instrument):
+ data = get_historical_price_full_crypto(instrument)
+ else:
+ data = get_historical_price_full_stock(instrument)
+
+ if data is None or "historical" not in data:
+ print(f"Error processing {instrument}: No data")
+ return None
+
+ data = clean_data(data)
+
+ bt = Backtest(
+ data, strategy=strategy, cash=100000, commission=0.002, exclusive_orders=True
+ )
+ output = bt.run()
+ output = process_output(output, instrument, strategy)
+ return output, bt
+ except Exception as e:
+ print(f"Error processing {instrument}: {str(e)}")
+ return None
+
+def clean_data(data):
+ """
+ Clean historical price data for use in a backtest.
+ Returns a Pandas dataframe of the cleaned data.
+ """
+ data = data["historical"]
+ data = pd.DataFrame(data)
+ data.columns = [x.title() for x in data.columns]
+ data = data.drop(
+ [
+ "Adjclose",
+ "Unadjustedvolume",
+ "Change",
+ "Changepercent",
+ "Vwap",
+ "Label",
+ "Changeovertime",
+ ],
+ axis=1,
+ )
+ data["Date"] = pd.to_datetime(data["Date"])
+ data.set_index("Date", inplace=True)
+ data = data.iloc[::-1]
+ return data
+
+
+def process_output(output, instrument, strategy, in_row=True):
+ """
+ Process backtest output data to include instrument name, strategy name,
+ and parameters.
+ Returns a Pandas dataframe of the processed output.
+ """
+ if in_row:
+ output = pd.DataFrame(output).T
+ output["Instrument"] = instrument
+ output["Strategy"] = strategy.__name__
+ output.pop("_strategy")
+ return output
+
+
+def save_output(output, output_dir, instrument, start, end):
+ """
+ Save backtest output to file and generate chart if specified.
+ """
+ print(f"Saving output for {instrument}")
+ fileNameOutput = f"{output_dir}/{instrument}-{start}-{end}.csv"
+ output.to_csv(fileNameOutput)
+
+
+def plot_results(bt, output_dir, instrument, start, end):
+ print(f"Saving chart for {instrument}")
+ fileNameChart = f"{output_dir}/{instrument}-{start}-{end}.html"
+ bt.plot(filename=fileNameChart, open_browser=False)
+
+def run_backtests(instruments, strategy, num_threads=4, generate_plots=False):
+ """
+ Run backtests for a list of instruments using a specified strategy.
+ Returns a list of Pandas dataframes of the backtest results.
+
+ Args:
+ instruments (list): List of instruments to run backtests for
+
+ Returns:
+ List of Pandas dataframes of the backtest results
+ """
+ outputs = []
+ output_dir = f"output/raw/{strategy.__name__}"
+ output_dir_charts = f"output/charts/{strategy.__name__}"
+ if not os.path.exists(output_dir):
+ os.makedirs(output_dir)
+ if not os.path.exists(output_dir_charts):
+ os.makedirs(output_dir_charts)
+ with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
+ future_to_instrument = {
+ executor.submit(process_instrument, instrument, strategy): instrument
+ for instrument in instruments
+ }
+ for future in concurrent.futures.as_completed(future_to_instrument):
+ instrument = future_to_instrument[future]
+ output = future.result()
+ if output is not None:
+ outputs.append(output[0])
+ save_output(output[0], output_dir, instrument, output[0]["Start"].to_string().strip().split()[1], output[0]["End"].to_string().strip().split()[1])
+ if generate_plots:
+ plot_results(output[1], output_dir_charts, instrument, output[0]["Start"].to_string().strip().split()[1], output[0]["End"].to_string().strip().split()[1])
+ data_frame = pd.concat(outputs)
+ start = data_frame["Start"].to_string().strip().split()[1]
+ end = data_frame["End"].to_string().strip().split()[1]
+ fileNameOutput = f"output/{strategy.__name__}-{start}-{end}.csv"
+ data_frame.to_csv(fileNameOutput)
+
+
+ return data_frame
+
+
+
+
+ La fonction run_backtests_strategies() exécute des backtests pour une liste
+ d'instruments en utilisant une stratégie spécifique. La fonction
+ check_crypto() vérifie si l'instrument est une cryptomonnaie ou non. La fonction
+ check_stock() vérifie si l'instrument est une action ou non. La fonction
+ process_instrument() traite un seul instrument pour un backtest en utilisant une
+ stratégie spécifique. La fonction clean_data() nettoie les données historiques
+ des prix pour les utiliser dans un backtest. La fonction process_output()
+ traite les données de sortie du backtest pour inclure le nom de l'instrument, le
+ nom de la stratégie et les paramètres. La fonction save_output() enregistre la
+ sortie du backtest dans un fichier et génère un graphique si spécifié. La
+ fonction plot_results() enregistre la sortie du backtest dans un fichier et
+ génère un graphique si spécifié. La fonction run_backtests() exécute des
+ backtests pour une liste d'instruments en utilisant une stratégie spécifique.
+
+
+
+ Le script génère des graphiques pour chaque instrument testé, qui peuvent être
+ visualisés pour analyser les performances des stratégies appliquées. Les résultats
+ sont sauvegardés dans le répertoire output du projet BatchBacktesting.
+
+ Nous avons utilisé la stratégie EMA pour effectuer des tests de performance sur les
+ actions du S&P 500 et les cryptomonnaies prises en charge. Les résultats sont
+ sauvegardés dans le répertoire output du projet BatchBacktesting.
+
+
+
+ Le lien que vous avez partagé correspond au répertoire output du projet
+ BatchBacktesting sur GitHub :
+ https://github.com/AlgoETS/BatchBacktesting/tree/main/output. Cependant, il semble
+ que ce répertoire ne contient pas de résultats pré-calculés. En effet, il est
+ probable que les auteurs du projet aient choisi de ne pas inclure les résultats des
+ tests dans le dépôt GitHub afin d'éviter d'encombrer le dépôt avec des données
+ spécifiques à chaque utilisateur.
+
+
+
+ Pour obtenir des valeurs calculées pour vos propres tests, vous devrez exécuter le
+ script en local sur votre machine avec les paramètres et les stratégies de votre
+ choix. Après avoir exécuté le script, les résultats seront sauvegardés dans le
+ répertoire output de votre projet local.
+
+ https://algoets.github.io/BatchBacktesting/output/charts/EMA/AAPL-2018-04-04-2023-04-03.html
+
+
+
Analyse
+
+
Top 5 des instruments avec le meilleur rendement :
+
+
+
BTCBUSD : 293,78%
+
ALB : 205,97%
+
OMGUSD : 199,62%
+
BBWI : 196,82%
+
GRMN : 193,47%
+
+
+
Top 5 des instruments avec le plus faible rendement :
+
+
+
BTTBUSD : -99,93%
+
UAL : -82,63%
+
NCLH : -81,51%
+
LNC : -78,02%
+
CHRW : -76,38%
+
+
+
+
+ En conclusion, le projet BatchBacktesting offre une approche flexible et puissante
+ pour tester et analyser les performances des indicateurs techniques sur les marchés
+ boursiers et les cryptomonnaies. Les fonctions fournies permettent une intégration
+ facile avec les API de services financiers et une manipulation aisée des données.
+ Les résultats des expérimentations peuvent être utilisés pour développer et affiner
+ des stratégies de trading algorithmique en fonction des performances observées
+
Découvrez les tendances de la criminalité liée aux vols de voitures
+ à Montréal à travers les années. Cette étude examine les quartiers les plus touchés,
+ les variations saisonnières, et bien plus encore.
+
+
Un article dans le journal a particulièrement attiré mon attention de manière
+ inattendue, révélant une réalité alarmante : le taux de vols de voitures à Montréal
+ atteignait des sommets déconcertants. Cette révélation m’a laissé perplexe et
+ intrigué à la fois. Mon esprit curieux a été instantanément piqué, et j’ai ressenti
+ le besoin impérieux d’explorer ce phénomène de plus près, de le décortiquer et de
+ comprendre ses origines.
+
+
Dans cet article, je vais vous emmener avec moi dans cette aventure intrigante, alors
+ que nous plongeons dans l’univers des vols de voitures à Montréal. Nous allons
+ dévoiler les données, analyser les statistiques et tenter de démystifier cette
+ réalité complexe. Attachez-vous bien, car nous partons à la découverte de l’envers
+ du décor de la criminalité automobile à Montréal.
+
+
Récoltes des données
+
+
J’ai entrepris la collecte de données en récupérant un fichier CSV exhaustif
+ contenant toutes les infractions criminelles à Montréal, mis à disposition par la
+ ville. Mon objectif était de cibler spécifiquement les infractions de type “Vol de
+ véhicule à moteur”. À ma grande surprise, j’ai trouvé pas moins de 53 964 cas
+ enregistrés depuis l’année 2018.
+
+
+
+ Données des vols de véhicules à moteur à Montréal
+
+
+
+
+
Le vol en hausse
+
+
L’un des constats les plus préoccupants réside dans la tendance constante à la hausse
+ du vol de véhicules, qui semble résolument insensible à tout ralentissement, comme
+ en témoigne ce graphique éloquent :
+
+
+ Graphique vols de véhicules à moteur par année
+
+
+
+
+
+
+
+
Années
+
Vols de véhicules
+
+
+
+
+
2015
+
4418
+
+
+
2016
+
4352
+
+
+
2017
+
4732
+
+
+
2018
+
4237
+
+
+
2019
+
4170
+
+
+
2020
+
4706
+
+
+
2021
+
6440
+
+
+
2022
+
9377
+
+
+
2023
+
11262
+
+
+
+
+
+
+
+
+
Ces chiffres révèlent une progression alarmante, suscitant des inquiétudes
+ croissantes.
+
+
Mode Opératoire
+
+
De manière paradoxale, il s’avère que la majorité des vols de véhicules se produisent
+ en plein jour. En effet, 51% de ces vols ont lieu pendant la journée, lorsque tout
+ semble plus visible et évident. De plus, parmi les jours de la semaine, c’est le
+ mercredi qui détient le triste record du jour où les vols sont les plus fréquents :
+
+
+
+
+
+
Journée
+
Occurence
+
+
+
+
+
Wednesday
+
8519
+
+
+
Monday
+
8493
+
+
+
Thursday
+
8334
+
+
+
Tuesday
+
8303
+
+
+
Friday
+
7819
+
+
+
Saturday
+
6160
+
+
+
Sunday
+
6066
+
+
+
+
+
+
+
+
+ Graphique vols de véhicules par jour de la semaine
+
+
+
+
+ Graphique vols de véhicules par jour de la semaine et quart de la journée
+
+
+
+
Cette donnée surprenante met en évidence une réalité intrigante, où les vols de
+ véhicules semblent prospérer en plein jour, défiant ainsi les attentes
+ conventionnelles en matière de criminalité.
+
+
Lieux
+
+
Voici une carte thermique (heatmap) des cinq endroits les plus fréquemment ciblés par
+ les voleurs à Montréal. Il est intéressant de noter que les hôtels et les centres
+ commerciaux sont devenus des cibles privilégiées.
+
+
+ Carte thermique des vols de véhicules à Montréal
+
+
+
+
Un Vol Sophistiqué
+
+
Loin sont les jours où un simple trousseau de clés métalliques ou une vitre brisée
+ suffisaient pour voler une voiture. Aujourd’hui, les voleurs ont évolué, devenant
+ plus rusés et équipés de technologies avancées.
+
+
Relay attack
+
+
Ils utilisent un dispositif sophistiqué pour amplifier le signal, pratiquant ce que
+ l’on appelle l’attaque par relais.
+
+
Dans ce type de vol, l’objectif des malfaiteurs est de tromper la voiture en lui
+ faisant croire que la clé se trouve à proximité immédiate du véhicule, même si en
+ réalité, la clé se trouve à plusieurs centaines de mètres de distance. Ils utilisent
+ un amplificateur de signal pour induire en erreur la voiture, lui faisant croire que
+ la clé est à l’intérieur du véhicule.
+
+
Voici une vidéo capturant un vol qui ne dure que quelques secondes.
+
+
+
+ Vol Voiture Technique du relai
+
+
+
+
+
PORT OBD
+
+
Le Port OBD est le port « On-Board Diagnostics » se trouvant généralement au-dessus
+ de la pédale. C’est une interface de communication pour les systèmes de surveillance
+ et de contrôle des véhicules. Il est également utilisé par les garages pour
+ identifier et résoudre les défauts. Problème : Malheureusement, toute personne ayant
+ accès à celui-ci (par exemple, un garage malveillant, un valet ou des employés de
+ lave-auto) peut abuser du Port OBD pour créer une copie du porte-clés électronique
+ de votre voiture ! Parfois, les voleurs utilisent la méthode du Port OBD en y
+ injectant un code malicieux permettant de changer des configurations pour arrêter le
+ système d’alarme et faire un clonage de la clé.
+
+
+
+ Port OBD
+
+
+
+
+
Conséquences
+
+
L’explosion du nombre de vols de voitures a des conséquences directes sur les
+ propriétaires de véhicules, notamment une augmentation significative du coût de
+ l’assurance automobile. Certaines marques et modèles sont malheureusement devenus
+ les cibles privilégiées des voleurs. Voici le palmarès de 2022 :
+
+
+ s
+
+
Nº
+
Marque/Modèle
+
Année Modèle Volée le Plus Souvent
+
Nombre de Véhicules Assurés
+
Nombre de Vols
+
Fréquence de Vol (%)
+
Type
+
+
+
+
+
1
+
Honda CR-V
+
2020
+
115,895
+
2,689
+
2.3%
+
SUV
+
+
+
2
+
Acura RDX
+
2020
+
15,895
+
653
+
4.1%
+
SUV
+
+
+
3
+
Honda Civic
+
2019
+
224,688
+
506
+
0.2%
+
Sedan
+
+
+
4
+
Dodge RAM 1500 Series
+
2020
+
79,019
+
504
+
0.6%
+
Truck
+
+
+
5
+
Jeep Wrangler
+
2021
+
28,048
+
433
+
1.5%
+
SUV
+
+
+
6
+
Toyota RAV 4
+
2019
+
124,357
+
425
+
0.3%
+
SUV
+
+
+
7
+
Jeep Grand Cherokee
+
2021
+
22,808
+
420
+
1.8%
+
SUV
+
+
+
8
+
Toyota Highlander
+
2021
+
17,386
+
344
+
2.0%
+
SUV
+
+
+
9
+
Ford F150 Series
+
2019
+
91,166
+
256
+
0.3%
+
Truck
+
+
+
10
+
Hyundai Tucson
+
2021
+
63,450
+
242
+
0.4%
+
SUV
+
+
+
+
+
+
+
+
Se protéger
+
+
Il est important de noter qu’aucune méthode n’est infaillible, mais l’objectif
+ principal est de rendre la tâche des voleurs aussi difficile que possible, les
+ décourageant ainsi de s’attaquer à votre véhicule.
+
+
Verrouillez les portes et fermez complètement les fenêtres
+
+
La première étape essentielle pour vous protéger consiste à verrouiller les portes de
+ votre véhicule et à fermer complètement les fenêtres. Ce geste simple peut
+ considérablement ralentir un voleur.
+
+
Boite de farraday
+
+
Pour protéger votre clé électronique (key FOB) contre les attaques par relais, vous
+ pouvez utiliser une boîte de Faraday. Cette boîte bloque le signal de la clé,
+ empêchant ainsi les voleurs d’amplifier son signal. Cette méthode constitue une
+ défense efficace contre les tentatives d’attaque par relais et est disponible à un
+ prix abordable, généralement autour de 25 $.
+
+
Amazon: $25 Boite de farraday
+
+
OBD PORT lock
+
+
Pourquoi sommes-nous exposés ?
+
+
Les véhicules équipés de systèmes de démarrage sans clé (“push start”) ou d’entrée
+ sans clé (“keyless entry”) ne disposent pas de clé mécanique pour démarrer le
+ moteur. Ils utilisent des clés électroniques qui s’authentifient avec la voiture via
+ un échange de données (par des signaux radio pour les systèmes sans clé ou par
+ insertion dans le tableau de bord).
+
+
Comment le port est-il exploité ?
+
+
Ces véhicules conservent une copie numérique des clés dans l’unité de contrôle du
+ moteur du véhicule (ECU). Le problème réside dans le fait que ces clés numériques
+ peuvent être téléchargées par quiconque a accès au “PORT OBD” du véhicule, puis
+ utilisées pour programmer une clé vierge en moins de 60 secondes.
+
+
Pourquoi devrais-je m’inquiéter ?
+
+
Cette clé duplicata est identique à l’originale, ce qui donne au voleur un accès
+ total pour OUVRIR, DÉMARRER et EMPORTER le véhicule à sa convenance, souvent des
+ jours, voire des semaines plus tard.
+
+
Pour vous protéger contre ce type d’attaque, vous pouvez envisager de bloquer,
+ modifier ou cacher votre port OBD. Il ne faut que quelques minutes pour rendre ces
+ véhicules inviolables.
+
+
+
+ Port OBD Lock
+
+
+
+
Système de Repérage par TAG
+
+
Cette technologie implique de placer plusieurs dispositifs sans fil dans des endroits
+ difficiles d’accès du véhicule. Chaque dispositif est autonome et émet un signal
+ avec un code d’identification unique qui peut être lu à distance par un récepteur.
+
+
+
Prix: 400$
+
+
Barre Antivol
+
+
Une barre antivol simple mais efficace peut ralentir un voleur et le décourager,
+ agissant comme un moyen dissuasif.
+
+
Amazon: $69 Barre Antivol
+
+
Apple tag
+
+
+
+
+
+
+
L’Apple tag est un relayeur de position, le tag émet des signaux anonymes et toute
+ personnes possédant Un apapreil Apple passant proche du tag envoit un signal au
+ serveur de Apple vous permettant ainsi d’avoir une position geographique du dernier
+ repérage. Il suffit de bien le cacher dans son auto.
+
+
Toutefois, il est recommandé de désactiver le haut-parleur à l’intérieur de l’Apple
+ Tag pour éviter que le voleur ne le découvre et ne le désactive. En effet, Apple a
+ mis en place ce système pour prévenir le suivi indésirable des autres utilisateurs.
+ Imaginez la situation où quelqu’un aurait discrètement placé un Apple Tag sur vous,
+ vous permettant ainsi d’être suivi partout sans votre consentement.
+
+
Dans le contexte des véhicules volés, une fois que le voleur a pris possession de
+ votre voiture et qu’il détecte la présence d’un Apple Tag non associé à son compte
+ Apple, il recevra une notification indiquant que cet Apple Tag le suit. En réaction,
+ il pourrait ouvrir l’application “Find My iPhone” pour tenter de localiser l’Apple
+ Tag.
+
+
Pour plus de détails: https://youtu.be/hiivC_4li8Q?t=62
Non illo quas blanditiis repellendus laboriosam minima animi. Consectetur
- accusantium pariatur repudiandae!
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus natus, consectetur? Illum libero
- vel nihil nisi quae, voluptatem, sapiente necessitatibus distinctio voluptates, iusto qui. Laboriosam
- autem, nam voluptate in beatae.
-
-
A brand for a company is like a reputation for a person. You earn reputation by trying
- to do hard things well.
-
-
The same is true as we experience the emotional
- sensation of stress from our first instances of social rejection ridicule. We quickly learn to fear
- and thus automatically.
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste, rerum beatae repellat tenetur
- incidunt quisquam libero dolores laudantium. Nesciunt quis itaque quidem, voluptatem autem eos animi
- laborum iusto expedita sapiente.
Dans ce rapport, nous présentons une expérimentation des indicateurs techniques à
+ l'aide du projet BatchBacktesting disponible sur GitHub à l'adresse suivante :
N'oubliez pas de remplacer les espaces réservés FMP_API_KEY et BINANCE_API_KEY par
+ vos véritables clés API pour pouvoir accéder aux données des services respectifs.
+
Plusieurs fonctions pour effectuer des requêtes API et fournit une liste de
+ cryptomonnaies prises en charge.
+
+
Ce script propose des fonctions pour :
+
+
+
Effectuer des requêtes API vers différents points de terminaison.
+
Obtenir des données historiques de prix pour les cryptomonnaies et les actions.
+
+
Obtenir la liste des actions du S&P 500.
+
Obtenir toutes les cryptomonnaies prises en charge.
+
Obtenir les listes des états financiers.
+
+
+
+
+def make_api_request(api_endpoint, params):
+ with httpx.Client() as client:
+ # Make the GET request to the API
+ response = client.get(api_endpoint, params=params)
+ if response.status_code == 200:
+ return response.json()
+ print("Error: Failed to retrieve data from API")
+ return None
+
+
+
+
+ La fonction make_api_request() effectue une requête GET vers l'API et renvoie les
+ données au format JSON si la requête est réussie. Sinon, elle renvoie None.
+
+
+
+
+def get_historical_price_full_crypto(symbol):
+ api_endpoint = f"{BASE_URL_FMP}/historical-price-full/crypto/{symbol}"
+ params = {"apikey": FMP_API_KEY}
+ return make_api_request(api_endpoint, params)
+
+
+def get_historical_price_full_stock(symbol):
+ api_endpoint = f"{BASE_URL_FMP}/historical-price-full/{symbol}"
+ params = {"apikey": FMP_API_KEY}
+
+ return make_api_request(api_endpoint, params)
+
+def get_SP500():
+ api_endpoint = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
+ data = pd.read_html(api_endpoint)
+ return list(data[0]['Symbol'])
+
+
+def get_all_crypto():
+ """
+ All possible crypto symbols
+ """
+ return [
+ "BTCUSD",
+ "ETHUSD",
+ "LTCUSD",
+ "BCHUSD",
+ "XRPUSD",
+ "EOSUSD",
+ "XLMUSD",
+ "TRXUSD",
+ "ETCUSD",
+ "DASHUSD",
+ "ZECUSD",
+ "XTZUSD",
+ "XMRUSD",
+ "ADAUSD",
+ "NEOUSD",
+ "XEMUSD",
+ "VETUSD",
+ "DOGEUSD",
+ "OMGUSD",
+ "ZRXUSD",
+ "BATUSD"
+ "USDTUSD",
+ "LINKUSD",
+ "BTTUSD",
+ "BNBUSD",
+ "ONTUSD",
+ "QTUMUSD",
+ "ALGOUSD",
+ "ZILUSD",
+ "ICXUSD",
+ "KNCUSD",
+ "ZENUSD",
+ "THETAUSD",
+ "IOSTUSD",
+ "ATOMUSD",
+ "MKRUSD",
+ "COMPUSD",
+ "YFIUSD",
+ "SUSHIUSD",
+ "SNXUSD",
+ "UMAUSD",
+ "BALUSD",
+ "AAVEUSD",
+ "UNIUSD",
+ "RENBTCUSD",
+ "RENUSD",
+ "CRVUSD",
+ "SXPUSD",
+ "KSMUSD",
+ "OXTUSD",
+ "DGBUSD",
+ "LRCUSD",
+ "WAVESUSD",
+ "NMRUSD",
+ "STORJUSD",
+ "KAVAUSD",
+ "RLCUSD",
+ "BANDUSD",
+ "SCUSD",
+ "ENJUSD",
+ ]
+
+def get_financial_statements_lists():
+ api_endpoint = f"{BASE_URL_FMP}/financial-statement-symbol-lists"
+ params = {"apikey": FMP_API_KEY}
+ return make_api_request(api_endpoint, params)
+
+def get_Vanguard_Canada():
+ """
+ Get Vanguard Canada companies
+
+ Returns:
+ dict: Dictionary containing the data
+ """
+ # VCN: Vanguard FTSE Canada All Cap Index ETF
+ # VFV: Vanguard S&P 500 Index ETF
+ # VUN: Vanguard US Total Market Index ETF
+ # VEE: Vanguard FTSE Emerging Markets All Cap Index ETF
+ # VAB: Vanguard Canadian Aggregate Bond Index ETF
+ # VSB: Vanguard Canadian Short-Term Bond Index ETF
+ # VXC: Vanguard FTSE Global All Cap ex Canada Index ETF
+ # VIU: Vanguard FTSE Developed All Cap ex North America Index ETF
+ # VGG: Vanguard US Dividend Appreciation Index ETF
+ return ['VCN', 'VFV', 'VUN', 'VEE', 'VAB', 'VSB', 'VXC', 'VIU', 'VGG']
+
+
+
+
+ La fonction get_historical_price_full_crypto() effectue une requête API vers
+ l'API FMP pour obtenir les données historiques de prix pour une cryptomonnaie
+ spécifique. La fonction get_historical_price_full_stock() effectue une requête
+ API vers l'API FMP pour obtenir les données historiques de prix pour une action
+ spécifique. La fonction get_SP500() effectue une requête API vers Wikipedia pour
+ obtenir la liste des actions du S&P 500. La fonction get_all_crypto() renvoie la
+ liste de toutes les cryptomonnaies prises en charge. La fonction
+ get_financial_statements_lists() effectue une requête API vers l'API FMP pour
+ obtenir la liste des états financiers. La fonction get_Vanguard_Canada() renvoie
+ la liste des actions de Vanguard Canada.
+
+
+
+ Pour utiliser ce script dans votre projet, copiez simplement assurez-vous d'avoir
+ installé les bibliothèques requises mentionnées dans la section "Exigences" de la
+ documentation BatchBacktesting. Ensuite, vous pouvez importer les fonctions de ce
+ script dans votre script principal ou votre Jupyter Notebook pour accéder et
+ manipuler les données comme vous le souhaitez.
+
+
+
+ Une fois que vous avez les données, vous pouvez utiliser la bibliothèque
+ BatchBacktesting pour tester diverses stratégies sur les actions ou les
+ cryptomonnaies, analyser les résultats et visualiser les performances. À titre
+ d'exemple, nous avons utilisé la stratégie EMA (Exponential Moving Average) pour
+ effectuer des tests de performance sur les actions du S&P 500 et les cryptomonnaies
+ prises en charge.
+
+
+
EMA Stratégie
+
+
L'EMA est un indicateur technique qui est utilisé pour lisser l'action des prix en
+ filtrant le "bruit" des fluctuations de prix aléatoires à court terme. Il est
+ calculé en prenant le prix moyen d'un titre sur un nombre spécifique de périodes de
+ temps. L'EMA est un type de moyenne mobile qui accorde un poids et une signification
+ plus importants aux points de données les plus récents. La moyenne mobile
+ exponentielle est également appelée moyenne mobile pondérée exponentiellement.
+
+ La stratégie EMA est implémentée dans la classe EMA. La stratégie EMA est une
+ stratégie de suivi de tendance qui utilise trois moyennes mobiles exponentielles
+ (EMA) avec des périodes de 20, 80 et 150. Lorsque la moyenne mobile exponentielle
+ à court terme (20) croise la moyenne mobile exponentielle à long terme (80) par
+ le haut, cela signifie que la tendance est à la hausse et que nous devrions
+ acheter. Lorsque la moyenne mobile exponentielle à court terme (20) croise la
+ moyenne mobile exponentielle à long terme (80) par le bas, cela signifie que la
+ tendance est à la baisse et que nous devrions vendre.
+
+
+
+
+def run_backtests_strategies(instruments, strategies):
+ """
+ Run backtests for a list of instruments using a specified strategy.
+
+ Args:
+ instruments (list): List of instruments to run backtests for
+ strategies (list): List of strategies to run backtests for
+
+ Returns:
+ List of outputs from run_backtests()
+
+ """
+
+ # find strategies in the STRATEGIES
+ strategies = [x for x in STRATEGIES if x.__name__ in strategies]
+ outputs = []
+ with concurrent.futures.ThreadPoolExecutor() as executor:
+ futures = []
+ for strategy in strategies:
+ future = executor.submit(run_backtests, instruments, strategy, 4)
+ futures.append(future)
+
+ for future in concurrent.futures.as_completed(futures):
+ outputs.extend(future.result())
+
+ return outputs
+
+def check_crypto(instrument):
+ """
+ Check if the instrument is crypto or not
+ """
+ return instrument in get_all_crypto()
+
+def check_stock(instrument):
+ """
+ Check if the instrument is crypto or not
+ """
+ return instrument not in get_financial_statements_lists()
+
+
+def process_instrument(instrument, strategy):
+ """
+ Process a single instrument for a backtest using a specified strategy.
+ Returns a Pandas dataframe of the backtest results.
+ """
+ try:
+
+ if check_crypto(instrument):
+ data = get_historical_price_full_crypto(instrument)
+ else:
+ data = get_historical_price_full_stock(instrument)
+
+ if data is None or "historical" not in data:
+ print(f"Error processing {instrument}: No data")
+ return None
+
+ data = clean_data(data)
+
+ bt = Backtest(
+ data, strategy=strategy, cash=100000, commission=0.002, exclusive_orders=True
+ )
+ output = bt.run()
+ output = process_output(output, instrument, strategy)
+ return output, bt
+ except Exception as e:
+ print(f"Error processing {instrument}: {str(e)}")
+ return None
+
+def clean_data(data):
+ """
+ Clean historical price data for use in a backtest.
+ Returns a Pandas dataframe of the cleaned data.
+ """
+ data = data["historical"]
+ data = pd.DataFrame(data)
+ data.columns = [x.title() for x in data.columns]
+ data = data.drop(
+ [
+ "Adjclose",
+ "Unadjustedvolume",
+ "Change",
+ "Changepercent",
+ "Vwap",
+ "Label",
+ "Changeovertime",
+ ],
+ axis=1,
+ )
+ data["Date"] = pd.to_datetime(data["Date"])
+ data.set_index("Date", inplace=True)
+ data = data.iloc[::-1]
+ return data
+
+
+def process_output(output, instrument, strategy, in_row=True):
+ """
+ Process backtest output data to include instrument name, strategy name,
+ and parameters.
+ Returns a Pandas dataframe of the processed output.
+ """
+ if in_row:
+ output = pd.DataFrame(output).T
+ output["Instrument"] = instrument
+ output["Strategy"] = strategy.__name__
+ output.pop("_strategy")
+ return output
+
+
+def save_output(output, output_dir, instrument, start, end):
+ """
+ Save backtest output to file and generate chart if specified.
+ """
+ print(f"Saving output for {instrument}")
+ fileNameOutput = f"{output_dir}/{instrument}-{start}-{end}.csv"
+ output.to_csv(fileNameOutput)
+
+
+def plot_results(bt, output_dir, instrument, start, end):
+ print(f"Saving chart for {instrument}")
+ fileNameChart = f"{output_dir}/{instrument}-{start}-{end}.html"
+ bt.plot(filename=fileNameChart, open_browser=False)
+
+def run_backtests(instruments, strategy, num_threads=4, generate_plots=False):
+ """
+ Run backtests for a list of instruments using a specified strategy.
+ Returns a list of Pandas dataframes of the backtest results.
+
+ Args:
+ instruments (list): List of instruments to run backtests for
+
+ Returns:
+ List of Pandas dataframes of the backtest results
+ """
+ outputs = []
+ output_dir = f"output/raw/{strategy.__name__}"
+ output_dir_charts = f"output/charts/{strategy.__name__}"
+ if not os.path.exists(output_dir):
+ os.makedirs(output_dir)
+ if not os.path.exists(output_dir_charts):
+ os.makedirs(output_dir_charts)
+ with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
+ future_to_instrument = {
+ executor.submit(process_instrument, instrument, strategy): instrument
+ for instrument in instruments
+ }
+ for future in concurrent.futures.as_completed(future_to_instrument):
+ instrument = future_to_instrument[future]
+ output = future.result()
+ if output is not None:
+ outputs.append(output[0])
+ save_output(output[0], output_dir, instrument, output[0]["Start"].to_string().strip().split()[1], output[0]["End"].to_string().strip().split()[1])
+ if generate_plots:
+ plot_results(output[1], output_dir_charts, instrument, output[0]["Start"].to_string().strip().split()[1], output[0]["End"].to_string().strip().split()[1])
+ data_frame = pd.concat(outputs)
+ start = data_frame["Start"].to_string().strip().split()[1]
+ end = data_frame["End"].to_string().strip().split()[1]
+ fileNameOutput = f"output/{strategy.__name__}-{start}-{end}.csv"
+ data_frame.to_csv(fileNameOutput)
+
+
+ return data_frame
+
+
+
+
+ La fonction run_backtests_strategies() exécute des backtests pour une liste
+ d'instruments en utilisant une stratégie spécifique. La fonction
+ check_crypto() vérifie si l'instrument est une cryptomonnaie ou non. La fonction
+ check_stock() vérifie si l'instrument est une action ou non. La fonction
+ process_instrument() traite un seul instrument pour un backtest en utilisant une
+ stratégie spécifique. La fonction clean_data() nettoie les données historiques
+ des prix pour les utiliser dans un backtest. La fonction process_output()
+ traite les données de sortie du backtest pour inclure le nom de l'instrument, le
+ nom de la stratégie et les paramètres. La fonction save_output() enregistre la
+ sortie du backtest dans un fichier et génère un graphique si spécifié. La
+ fonction plot_results() enregistre la sortie du backtest dans un fichier et
+ génère un graphique si spécifié. La fonction run_backtests() exécute des
+ backtests pour une liste d'instruments en utilisant une stratégie spécifique.
+
+
+
+ Le script génère des graphiques pour chaque instrument testé, qui peuvent être
+ visualisés pour analyser les performances des stratégies appliquées. Les résultats
+ sont sauvegardés dans le répertoire output du projet BatchBacktesting.
+
+ Nous avons utilisé la stratégie EMA pour effectuer des tests de performance sur les
+ actions du S&P 500 et les cryptomonnaies prises en charge. Les résultats sont
+ sauvegardés dans le répertoire output du projet BatchBacktesting.
+
+
+
+ Le lien que vous avez partagé correspond au répertoire output du projet
+ BatchBacktesting sur GitHub :
+ https://github.com/AlgoETS/BatchBacktesting/tree/main/output. Cependant, il semble
+ que ce répertoire ne contient pas de résultats pré-calculés. En effet, il est
+ probable que les auteurs du projet aient choisi de ne pas inclure les résultats des
+ tests dans le dépôt GitHub afin d'éviter d'encombrer le dépôt avec des données
+ spécifiques à chaque utilisateur.
+
+
+
+ Pour obtenir des valeurs calculées pour vos propres tests, vous devrez exécuter le
+ script en local sur votre machine avec les paramètres et les stratégies de votre
+ choix. Après avoir exécuté le script, les résultats seront sauvegardés dans le
+ répertoire output de votre projet local.
+
+ https://algoets.github.io/BatchBacktesting/output/charts/EMA/AAPL-2018-04-04-2023-04-03.html
+
+
+
Analyse
+
+
Top 5 des instruments avec le meilleur rendement :
+
+
+
BTCBUSD : 293,78%
+
ALB : 205,97%
+
OMGUSD : 199,62%
+
BBWI : 196,82%
+
GRMN : 193,47%
+
+
+
Top 5 des instruments avec le plus faible rendement :
+
+
+
BTTBUSD : -99,93%
+
UAL : -82,63%
+
NCLH : -81,51%
+
LNC : -78,02%
+
CHRW : -76,38%
+
+
+
+
+ En conclusion, le projet BatchBacktesting offre une approche flexible et puissante
+ pour tester et analyser les performances des indicateurs techniques sur les marchés
+ boursiers et les cryptomonnaies. Les fonctions fournies permettent une intégration
+ facile avec les API de services financiers et une manipulation aisée des données.
+ Les résultats des expérimentations peuvent être utilisés pour développer et affiner
+ des stratégies de trading algorithmique en fonction des performances observées
+
Découvrez les tendances de la criminalité liée aux vols de voitures
+ à Montréal à travers les années. Cette étude examine les quartiers les plus touchés,
+ les variations saisonnières, et bien plus encore.
+
+
Un article dans le journal a particulièrement attiré mon attention de manière
+ inattendue, révélant une réalité alarmante : le taux de vols de voitures à Montréal
+ atteignait des sommets déconcertants. Cette révélation m’a laissé perplexe et
+ intrigué à la fois. Mon esprit curieux a été instantanément piqué, et j’ai ressenti
+ le besoin impérieux d’explorer ce phénomène de plus près, de le décortiquer et de
+ comprendre ses origines.
+
+
Dans cet article, je vais vous emmener avec moi dans cette aventure intrigante, alors
+ que nous plongeons dans l’univers des vols de voitures à Montréal. Nous allons
+ dévoiler les données, analyser les statistiques et tenter de démystifier cette
+ réalité complexe. Attachez-vous bien, car nous partons à la découverte de l’envers
+ du décor de la criminalité automobile à Montréal.
+
+
Récoltes des données
+
+
J’ai entrepris la collecte de données en récupérant un fichier CSV exhaustif
+ contenant toutes les infractions criminelles à Montréal, mis à disposition par la
+ ville. Mon objectif était de cibler spécifiquement les infractions de type “Vol de
+ véhicule à moteur”. À ma grande surprise, j’ai trouvé pas moins de 53 964 cas
+ enregistrés depuis l’année 2018.
+
+
+
+ Données des vols de véhicules à moteur à Montréal
+
+
+
+
+
Le vol en hausse
+
+
L’un des constats les plus préoccupants réside dans la tendance constante à la hausse
+ du vol de véhicules, qui semble résolument insensible à tout ralentissement, comme
+ en témoigne ce graphique éloquent :
+
+
+ Graphique vols de véhicules à moteur par année
+
+
+
+
+
+
+
+
Années
+
Vols de véhicules
+
+
+
+
+
2015
+
4418
+
+
+
2016
+
4352
+
+
+
2017
+
4732
+
+
+
2018
+
4237
+
+
+
2019
+
4170
+
+
+
2020
+
4706
+
+
+
2021
+
6440
+
+
+
2022
+
9377
+
+
+
2023
+
11262
+
+
+
+
+
+
+
+
+
Ces chiffres révèlent une progression alarmante, suscitant des inquiétudes
+ croissantes.
+
+
Mode Opératoire
+
+
De manière paradoxale, il s’avère que la majorité des vols de véhicules se produisent
+ en plein jour. En effet, 51% de ces vols ont lieu pendant la journée, lorsque tout
+ semble plus visible et évident. De plus, parmi les jours de la semaine, c’est le
+ mercredi qui détient le triste record du jour où les vols sont les plus fréquents :
+
+
+
+
+
+
Journée
+
Occurence
+
+
+
+
+
Wednesday
+
8519
+
+
+
Monday
+
8493
+
+
+
Thursday
+
8334
+
+
+
Tuesday
+
8303
+
+
+
Friday
+
7819
+
+
+
Saturday
+
6160
+
+
+
Sunday
+
6066
+
+
+
+
+
+
+
+
+ Graphique vols de véhicules par jour de la semaine
+
+
+
+
+ Graphique vols de véhicules par jour de la semaine et quart de la journée
+
+
+
+
Cette donnée surprenante met en évidence une réalité intrigante, où les vols de
+ véhicules semblent prospérer en plein jour, défiant ainsi les attentes
+ conventionnelles en matière de criminalité.
+
+
Lieux
+
+
Voici une carte thermique (heatmap) des cinq endroits les plus fréquemment ciblés par
+ les voleurs à Montréal. Il est intéressant de noter que les hôtels et les centres
+ commerciaux sont devenus des cibles privilégiées.
+
+
+ Carte thermique des vols de véhicules à Montréal
+
+
+
+
Un Vol Sophistiqué
+
+
Loin sont les jours où un simple trousseau de clés métalliques ou une vitre brisée
+ suffisaient pour voler une voiture. Aujourd’hui, les voleurs ont évolué, devenant
+ plus rusés et équipés de technologies avancées.
+
+
Relay attack
+
+
Ils utilisent un dispositif sophistiqué pour amplifier le signal, pratiquant ce que
+ l’on appelle l’attaque par relais.
+
+
Dans ce type de vol, l’objectif des malfaiteurs est de tromper la voiture en lui
+ faisant croire que la clé se trouve à proximité immédiate du véhicule, même si en
+ réalité, la clé se trouve à plusieurs centaines de mètres de distance. Ils utilisent
+ un amplificateur de signal pour induire en erreur la voiture, lui faisant croire que
+ la clé est à l’intérieur du véhicule.
+
+
Voici une vidéo capturant un vol qui ne dure que quelques secondes.
+
+
+
+ Vol Voiture Technique du relai
+
+
+
+
+
PORT OBD
+
+
Le Port OBD est le port « On-Board Diagnostics » se trouvant généralement au-dessus
+ de la pédale. C’est une interface de communication pour les systèmes de surveillance
+ et de contrôle des véhicules. Il est également utilisé par les garages pour
+ identifier et résoudre les défauts. Problème : Malheureusement, toute personne ayant
+ accès à celui-ci (par exemple, un garage malveillant, un valet ou des employés de
+ lave-auto) peut abuser du Port OBD pour créer une copie du porte-clés électronique
+ de votre voiture ! Parfois, les voleurs utilisent la méthode du Port OBD en y
+ injectant un code malicieux permettant de changer des configurations pour arrêter le
+ système d’alarme et faire un clonage de la clé.
+
+
+
+ Port OBD
+
+
+
+
+
Conséquences
+
+
L’explosion du nombre de vols de voitures a des conséquences directes sur les
+ propriétaires de véhicules, notamment une augmentation significative du coût de
+ l’assurance automobile. Certaines marques et modèles sont malheureusement devenus
+ les cibles privilégiées des voleurs. Voici le palmarès de 2022 :
+
+
+ s
+
+
Nº
+
Marque/Modèle
+
Année Modèle Volée le Plus Souvent
+
Nombre de Véhicules Assurés
+
Nombre de Vols
+
Fréquence de Vol (%)
+
Type
+
+
+
+
+
1
+
Honda CR-V
+
2020
+
115,895
+
2,689
+
2.3%
+
SUV
+
+
+
2
+
Acura RDX
+
2020
+
15,895
+
653
+
4.1%
+
SUV
+
+
+
3
+
Honda Civic
+
2019
+
224,688
+
506
+
0.2%
+
Sedan
+
+
+
4
+
Dodge RAM 1500 Series
+
2020
+
79,019
+
504
+
0.6%
+
Truck
+
+
+
5
+
Jeep Wrangler
+
2021
+
28,048
+
433
+
1.5%
+
SUV
+
+
+
6
+
Toyota RAV 4
+
2019
+
124,357
+
425
+
0.3%
+
SUV
+
+
+
7
+
Jeep Grand Cherokee
+
2021
+
22,808
+
420
+
1.8%
+
SUV
+
+
+
8
+
Toyota Highlander
+
2021
+
17,386
+
344
+
2.0%
+
SUV
+
+
+
9
+
Ford F150 Series
+
2019
+
91,166
+
256
+
0.3%
+
Truck
+
+
+
10
+
Hyundai Tucson
+
2021
+
63,450
+
242
+
0.4%
+
SUV
+
+
+
+
+
+
+
+
Se protéger
+
+
Il est important de noter qu’aucune méthode n’est infaillible, mais l’objectif
+ principal est de rendre la tâche des voleurs aussi difficile que possible, les
+ décourageant ainsi de s’attaquer à votre véhicule.
+
+
Verrouillez les portes et fermez complètement les fenêtres
+
+
La première étape essentielle pour vous protéger consiste à verrouiller les portes de
+ votre véhicule et à fermer complètement les fenêtres. Ce geste simple peut
+ considérablement ralentir un voleur.
+
+
Boite de farraday
+
+
Pour protéger votre clé électronique (key FOB) contre les attaques par relais, vous
+ pouvez utiliser une boîte de Faraday. Cette boîte bloque le signal de la clé,
+ empêchant ainsi les voleurs d’amplifier son signal. Cette méthode constitue une
+ défense efficace contre les tentatives d’attaque par relais et est disponible à un
+ prix abordable, généralement autour de 25 $.
+
+
Amazon: $25 Boite de farraday
+
+
OBD PORT lock
+
+
Pourquoi sommes-nous exposés ?
+
+
Les véhicules équipés de systèmes de démarrage sans clé (“push start”) ou d’entrée
+ sans clé (“keyless entry”) ne disposent pas de clé mécanique pour démarrer le
+ moteur. Ils utilisent des clés électroniques qui s’authentifient avec la voiture via
+ un échange de données (par des signaux radio pour les systèmes sans clé ou par
+ insertion dans le tableau de bord).
+
+
Comment le port est-il exploité ?
+
+
Ces véhicules conservent une copie numérique des clés dans l’unité de contrôle du
+ moteur du véhicule (ECU). Le problème réside dans le fait que ces clés numériques
+ peuvent être téléchargées par quiconque a accès au “PORT OBD” du véhicule, puis
+ utilisées pour programmer une clé vierge en moins de 60 secondes.
+
+
Pourquoi devrais-je m’inquiéter ?
+
+
Cette clé duplicata est identique à l’originale, ce qui donne au voleur un accès
+ total pour OUVRIR, DÉMARRER et EMPORTER le véhicule à sa convenance, souvent des
+ jours, voire des semaines plus tard.
+
+
Pour vous protéger contre ce type d’attaque, vous pouvez envisager de bloquer,
+ modifier ou cacher votre port OBD. Il ne faut que quelques minutes pour rendre ces
+ véhicules inviolables.
+
+
+
+ Port OBD Lock
+
+
+
+
Système de Repérage par TAG
+
+
Cette technologie implique de placer plusieurs dispositifs sans fil dans des endroits
+ difficiles d’accès du véhicule. Chaque dispositif est autonome et émet un signal
+ avec un code d’identification unique qui peut être lu à distance par un récepteur.
+
+
+
Prix: 400$
+
+
Barre Antivol
+
+
Une barre antivol simple mais efficace peut ralentir un voleur et le décourager,
+ agissant comme un moyen dissuasif.
+
+
Amazon: $69 Barre Antivol
+
+
Apple tag
+
+
+
+
+
+
+
L’Apple tag est un relayeur de position, le tag émet des signaux anonymes et toute
+ personnes possédant Un apapreil Apple passant proche du tag envoit un signal au
+ serveur de Apple vous permettant ainsi d’avoir une position geographique du dernier
+ repérage. Il suffit de bien le cacher dans son auto.
+
+
Toutefois, il est recommandé de désactiver le haut-parleur à l’intérieur de l’Apple
+ Tag pour éviter que le voleur ne le découvre et ne le désactive. En effet, Apple a
+ mis en place ce système pour prévenir le suivi indésirable des autres utilisateurs.
+ Imaginez la situation où quelqu’un aurait discrètement placé un Apple Tag sur vous,
+ vous permettant ainsi d’être suivi partout sans votre consentement.
+
+
Dans le contexte des véhicules volés, une fois que le voleur a pris possession de
+ votre voiture et qu’il détecte la présence d’un Apple Tag non associé à son compte
+ Apple, il recevra une notification indiquant que cet Apple Tag le suit. En réaction,
+ il pourrait ouvrir l’application “Find My iPhone” pour tenter de localiser l’Apple
+ Tag.
+
+
Pour plus de détails: https://youtu.be/hiivC_4li8Q?t=62
2 Comments
---
-
-
-
-
- Reply |
- Posted October 7, 2018
-
-
-
-
-
-
-
- -
-
-
-
-
- Reply |
- Posted October 7, 2018
-
-
-
-
-
-
-
-Philip W
- United Kingdom - -Some consultants are employed indirectly by the client via a consultancy staffing company, a - company that provides consultants on an agency basis.
-Philip W
- United Kingdom - -Some consultants are employed indirectly by the client via a consultancy staffing company, a - company that provides consultants on an agency basis.
-