Code Monkey home page Code Monkey logo

casabourselib's Introduction

Casabourselib

Logo

by Yassine Rhzif and Ahmed Ouaboune

CasaBourseLib est un package Python que nous avons crée lors de nos travaux sur d'autres projets concernant la bourse de Casablanca, nous avons réalisé la difficulté d'obtenir des données à partir du site web officiel de la bourse. nous avons donc eu l'idée de créer un package qui permet d'obtenir des données d'actions cotée en bourse de manière instantanée et en quelques secondes, similairement au package de Yahoo Finance (yfinance).

#pour installer le package veuillez ouvrir votre ligne de commands "CMD" et tapez le code suivant 
pip install Casabourselib
#c'est comme ca vous pouvez importer le package Casabourselib
#vous pouvez utilisez n'import quoi a la place de 'cbl' mais fait attention de l'utiliser lorsque vous appellez les fonctions 
import Casabourselib  as cbl
#cette fonction donne le symbole (Ticker) de chaque entreprise cotée en bourse de casablanca
get_tickers()
#exemple d'appel:
cbl.get_tickers()
Titre Ticker
0 Addoha ADH
1 AFMA AFM
2 Afric Indus. AFI
3 Afriquia Gaz GAZ
4 Agma AGM
... ... ...
71 Timar TIM
72 TotalMaroc TMA
73 Unimer UMR
74 WAFA ASSURANCE WAA
75 Zellidja ZDJ

76 rows × 2 columns

#cette fonction donne le Cour de chaque entreprise cotée en bourse de casablanca
get_price(ticker, start_date, end_date)
#exemple d'appel: 
cbl.get_price('CIH', '01/01/2017', '18/10/2021')
#Resultat:
value min max variation volume
date
02/01/2017 NaN NaN NaN -100.00 NaN
03/01/2017 310.00 300.00 310.00 3.33 347.0
04/01/2017 305.40 302.00 310.00 -1.48 36480.0
05/01/2017 311.00 306.15 315.00 1.83 14916.0
06/01/2017 325.00 320.00 330.00 4.50 128910.0
... ... ... ... ... ...
12/10/2021 315.10 315.00 323.00 -0.91 749.0
13/10/2021 320.00 315.10 320.00 1.56 5542.0
14/10/2021 320.00 317.00 320.00 0.00 1047.0
15/10/2021 320.95 314.00 321.85 0.30 2703.0
18/10/2021 325.00 316.00 325.00 1.26 31831.0

1189 rows × 5 columns

#vous pouvez egalement donner l'ISIN a la place de ticker comme argument 
cbl.get_stock_price('MA0000011454', '01/01/2017', '18/10/2021')
#vous pouvez aussi dommander les donnée de l'indice MASI ou MADEX 
cbl.get_price('MASI', '01/01/2017', '18/10/2021')
#Resultat:
value
date
02/01/2017 11564.7175
03/01/2017 11644.2120
04/01/2017 11826.7288
05/01/2017 12186.1188
06/01/2017 12532.2174
... ...
12/10/2021 13160.5647
13/10/2021 13187.7301
14/10/2021 13283.1536
15/10/2021 13300.9307
18/10/2021 13290.6320

1191 rows × 1 columns

#vous pouvez egalement donner une liste de tickers a la place d'un seul comme argument a la fonction 
cbl.get_price(['CIH','IAM','MASI','MADEX'], '01/01/2017', '18/10/2021')
#Resultat:
CIH IAM MASI MADEX
date
02/01/2017 NaN 140.40 11564.7175 9476.3004
03/01/2017 310.00 142.25 11644.2120 9547.9921
04/01/2017 305.40 145.00 11826.7288 9706.8093
05/01/2017 311.00 148.20 12186.1188 10021.0194
06/01/2017 325.00 150.00 12532.2174 10315.1171
... ... ... ... ...
12/10/2021 315.10 141.25 13160.5647 10683.0114
13/10/2021 320.00 142.00 13187.7301 10707.8966
14/10/2021 320.00 142.80 13283.1536 10787.8802
15/10/2021 320.95 143.20 13300.9307 10798.7228
18/10/2021 325.00 142.95 13290.6320 10794.0268

1189 rows × 4 columns

#Cette fonction donne les dividendes distribués de chaque entreprise cotée en bourse
get_dividends(ticker)
#exemple d'appel :
cbl.get_dividends('IAM')
#Resultat:
Dividende Ordinaire Date de détachement Date de paiement Dividende Exceptionnel Date de détachement.1 Date de paiement.1
Année
2020 4.01 06/09/2021 15/09/2021 - - -
2019 5.54 03/08/2020 12/08/2020 - - -
2018 6.83 24/05/2019 04/06/2019 - - -
2017 6.48 25/05/2018 05/06/2018 - - -
2016 6.36 24/05/2017 02/06/2017 - - -
2015 6.36 24/05/2016 02/06/2016 - - -
2014 6.90 22/05/2015 02/06/2015 - - -
2013 6.00 23/05/2014 03/06/2014 - - -
2012 7.40 23/05/2013 03/06/2013 - - -
2011 9.26 22/05/2012 31/05/2012 - - -
2010 10.58 20/05/2011 31/05/2011 - - -
2009 10.31 24/05/2010 02/06/2010 - - -
2008 10.83 25/05/2009 03/06/2009 - - -
2007 9.20 19/05/2008 28/05/2008 - - -
2006 7.88 15/05/2007 15/05/2007 - - -
2005 6.96 02/05/2006 02/05/2006 - - -
2004 5.00 04/05/2005 04/05/2005 - - -
2003 5.83 04/06/2004 04/06/2004 - - -
#Cette fonction donne les différents indicateurs économique de chaque entreprise cotée en bourse
get_indicators(ticker)
#exemple d'appel :
cbl.get_indicators('CIH')
#Resultat:
2020 2019 2018
Chiffres
Comptes consolidés Oui Oui Oui
Capital social (2) 2 832 473 500 2 832 473 500 2 660 808 500
Capitaux propres (3) 5 424 245 000 5 487 522 000 5 121 960 000
Nombre titres(2) 28 324 735 28 324 735 26 608 085
Produit Net bancaire 2 759 674 000 2 501 863 000 2 248 842 000
Résultat d'exploitation 67 190 000 691 771 000 603 042 000
Résultat net (4) 80 655 000 426 382 000 455 043 000
BPA 2.85 15.05 17.10
ROE (en %) 1.49 7.77 8.88
Payout (en %) - 93.00 81.86
Dividend yield (en %) - 4.68 4.67
PER 89.55 19.86 17.54
PBR 1.33 1.54 1.56
#cette fonction donne la composition de l'indice Masi avec le poid, capitalisation et le facteur flottant de chaque titre.
get_masi_data()
#exemple d'appel :
cbl.get_masi_data()
#Resultat:
Code Isin Instrument Nombre de titres Cours Facteur flottant Facteur de plafonnement Capitalisation flottante Poids
0 MA0000012445 ATTIJARIWAFA BANK 215 140 839 481,10 0,30 1,00 31 051 277 292,87 0,1801
1 MA0000011488 ITISSALAT AL-MAGHRIB 879 095 340 141,65 0,20 1,00 24 904 770 982,20 0,1444
2 MA0000012320 LAFARGEHOLCIM MAR 23 431 240 2174,00 0,30 1,00 15 281 854 728,00 0,0886
3 MA0000011884 BCP 203 312 473 278,00 0,20 1,00 11 304 173 498,80 0,0655
4 MA0000012247 COSUMAR 94 487 143 262,10 0,40 1,00 9 906 032 072,12 0,0574
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
70 MA0000011686 TIMAR 301 100 142,00 0,20 1,00 8 551 240,00 0,0000
71 MA0000011132 IB MAROC.COM 417 486 37,03 0,45 1,00 6 956 777,96 0,0000
72 MA0000010571 ZELLIDJA S.A 572 849 87,00 0,10 1,00 4 983 786,30 0,0000
73 MA0000010993 REBAB COMPANY 176 456 109,95 0,20 1,00 3 880 267,44 0,0000
74 Total 2 680 176 515,00 172 458 892 465,18

75 rows × 17 columns

#La meme chose pour cette fonction, elle donne la composition de l'indice Madex avec les poids, capitalisation et le facteur flottant de chaque titre.
get_madex_data()
#exemple d'appel :
cbl.get_madex_data()
#Le resultat est presque similaire au resultat de Masi 

Ici vous allez trouver quelque exemples d'application de données fournies par le package


#importation des package qu'on va utiliser pour la visualisation et le traitement des données 
import Casabourselib as cbl
import pandas as pd 
import matplotlib.pyplot as plt
import numpy as np
top13 = ['ATW','IAM','LHM','BCP','CSR','BOA','CMA','MSA','LBV','GAZ','WAA','TQM','HPS', 'ADH']
average_volume = []
average_price = []
for ticker in top13:
  df = cbl.get_price(ticker,'01/01/2020','15/11/2021')
  temp1 = df.volume.mean()
  temp2 = df.value.mean()
  average_volume.append(temp1)
  average_price.append(temp2)

labels = top13

x = np.arange(len(labels))  # the label locations
width = 0.3  # the width of the bars

fig, ax = plt.subplots(figsize=(10,10))
plt.yscale('log')
fig.set_facecolor('white')

rects1 = ax.bar(x-0.32, average_volume, width=0.3, color='b', align='center', label='Average volume')
rects2 = ax.bar(x, average_price, width=0.3, color='r', align='center', label='Average price')

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Montant en DH')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
ax.bar_label(rects1, padding=5)
ax.bar_label(rects2, padding=5)
fig.tight_layout()
plt.show()

png

masi = cbl.get_masi_data()
total = float(masi['Capitalisation flottante'][74].replace(',','.').replace(' ',''))
slices = [] 
labels = []
codes_isin = []
for i in range(0,74) : 
  cap = float(masi['Capitalisation flottante'][i].replace(',','.').replace(' ',''))
  slices.append(cap/total)
  codes_isin.append(masi['Code Isin'][i])
  
for code in codes_isin:
  labels.append(str(cbl.ticker_2_isin(code)))

other = slices[13:76]
sum_other = sum(other)
slices = slices[0:13]
slices.append(sum_other)
labels = labels[0:13]
labels.append('Autres')

fig = plt.figure(figsize=[10, 10])
fig.set_facecolor('white')
ax = fig.add_subplot(111)
explode = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05)  
ax.pie(slices,explode = explode, labels=labels, labeldistance=1.1, autopct='%1.1f%%',pctdistance=0.9,
        shadow=True, startangle=0);
plt.show()

png

df = cbl.get_price(['ARD','GAZ','AGM','ADI','ALM','MASI'], '01/01/2021', '12/11/2021')
returns = df.apply(lambda x: (x / x[0] * 100))
ax = returns.plot(title='Relative price change', fontsize=12, figsize=(20, 10))
ax.set_xlabel("Date")
ax.set_ylabel("Price")
plt.title('Relative price change')
plt.legend(loc='upper left', fontsize=12)
plt.tight_layout()
plt.style.use('bmh')
plt.grid(True)
plt.show()

png

casabourselib's People

Contributors

ouaboune-ahmed avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.