portaldacalheta.pt
  • Κύριος
  • Ζωή Σχεδιαστών
  • Διαδικασίες Χρηματοδότησης
  • Συμβουλές Και Εργαλεία
  • Μηχανική Διοίκηση
Διαδικασίες Χρηματοδότησης

Python and Finance - Ενισχύστε τα υπολογιστικά φύλλα σας



Περίληψη των κυριότερων σημείων

Γιατί η Python είναι μια εξαιρετική γλώσσα προγραμματισμού για να μάθουν οι επαγγελματίες χρηματοοικονομικών;
  • Η Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου, που σημαίνει ότι αφαιρεί και χειρίζεται πολλές από τις τεχνικές πτυχές του προγραμματισμού, όπως η διαχείριση μνήμης, οι οποίες πρέπει να αντιμετωπίζονται ρητά σε άλλες γλώσσες. Αυτό καθιστά το Python εύκολο στη χρήση για όσους δεν έχουν τεχνικό υπόβαθρο.
  • Επειδή η γλώσσα σχεδιάστηκε με γνώμονα την αναγνωσιμότητα και την ευκολία χρήσης, είναι μια από τις ευκολότερες γλώσσες που πρέπει να μάθετε. Ο κωδικός Python είναι περιεκτικός και κοντά στα απλά αγγλικά.
  • Το Python είναι ιδανικό για πρωτοτυπία και γρήγορη, επαναληπτική ανάπτυξη. Τα διαδραστικά εργαλεία διερμηνέων παρέχουν περιβάλλοντα όπου μπορείτε να γράψετε και να εκτελέσετε κάθε γραμμή κώδικα μεμονωμένα και να δείτε τα αποτελέσματα αμέσως.
  • Ταυτόχρονα, το Python είναι στιβαρό και επιτελικό, καθιστώντας το μια βιώσιμη επιλογή και για βασικά συστήματα και μεγαλύτερες εφαρμογές.
  • Εκτός από τη μεγάλη τυπική βιβλιοθήκη χρήσιμων εργαλείων, η Python διαθέτει εξαιρετικές βιβλιοθήκες τρίτων για οικονομική ανάλυση και υπολογισμό, όπως οι βιβλιοθήκες Pandas και NumPy που χρησιμοποιούνται σε αυτό το σεμινάριο.
Ποιες είναι μερικές περιπτώσεις χρήσης για την εφαρμογή του Python και τη χρηματοδότηση από κοινού;
  • Τα σενάρια Python μπορούν να χρησιμοποιηθούν για την αυτοματοποίηση επαναλαμβανόμενων εργασιών και ροών εργασίας, εξοικονομώντας χρόνο και μειώνοντας τον κίνδυνο μη αυτόματων σφαλμάτων.
  • Τα σενάρια επιτρέπουν στους χρήστες να τραβούν εύκολα δεδομένα από υπολογιστικά φύλλα, βάσεις δεδομένων και API ή ακόμη και να αποκόψουν δεδομένα ιστού, τα οποία στη συνέχεια μπορούν να υποβληθούν σε επεξεργασία και να αναλυθούν χρησιμοποιώντας ισχυρά στατιστικά και αναλυτικά εργαλεία.
  • Διάφορες προσθήκες για το Excel επιτρέπουν στους χρήστες να δημιουργούν αμφίδρομους συνδέσμους σε πραγματικό χρόνο μεταξύ των υπολογιστικών φύλλων και του κώδικα Python.
  • Το Python επιτρέπει νέους τύπους ανάλυσης, όπως προσομοιώσεις Monte Carlo, οι οποίοι δεν είναι άμεσα διαθέσιμοι σε τυπικά υπολογιστικά φύλλα.
  • Η αλγοριθμική συναλλαγή δεν είναι πλέον ο αποκλειστικός τομέας των hedge funds και των μεγάλων επενδυτικών τραπεζών. Με την Python, μπορείτε να αναπτύξετε, να δοκιμάσετε και να αναπτύξετε τις δικές σας στρατηγικές συναλλαγών σε σύντομο χρονικό διάστημα και με χαμηλό κόστος.

Για επαγγέλματα που βασίζονταν εδώ και καιρό στην τράτα μέσω υπολογιστικών φύλλων, η Python είναι ιδιαίτερα πολύτιμη. Η Citigroup, μια αμερικανική τράπεζα, έχει εισαγάγει μια σειρά μαθημάτων συντριβής στο Python για τους εκπαιδευόμενους αναλυτές της. - Ο οικονομολόγος

Οι επαγγελματίες των οικονομικών είχαν από καιρό πρόσβαση σε VBA (Visual Basic for Applications) στο Excel για να δημιουργήσετε προσαρμοσμένες λειτουργίες και να αυτοματοποιήσετε τις ροές εργασίας. Με την εμφάνιση των φύλλων Google τα τελευταία χρόνια ως σοβαρός υποψήφιος στο χώρο του υπολογιστικού φύλλου, Σενάριο Εφαρμογών Google προσφέρει τώρα μια επιπλέον επιλογή.



Ωστόσο, θα ήθελα να επιστήσω την προσοχή σε μια τρίτη επιλογή, τη γλώσσα προγραμματισμού Python , το οποίο έχει γίνει εξαιρετικά δημοφιλές σε διάφορους τομείς.



Σε αυτό το άρθρο, θα παράσχω μερικά παραδείγματα για το τι μπορείτε να πετύχετε με την Python, ξεκινώντας από μια επισκόπηση της ίδιας της γλώσσας και γιατί έχει γίνει τόσο δημοφιλής σε μια τόσο μεγάλη ποικιλία τομέων, που κυμαίνονται από την ανάπτυξη ιστού, τη μηχανική μάθηση, τα χρηματοοικονομικά, επιστήμη και εκπαίδευση, για να αναφέρουμε μόνο μερικά. Στη συνέχεια, το δεύτερο ημίχρονο θα αποτελείται από ένα βήμα προς βήμα φροντιστήριο.



Ο στόχος μου να το γράψω είναι να σας βοηθήσω να αποφασίσετε εάν η Python φαίνεται αρκετά ενδιαφέρουσα για να μπορείτε να το προσθέσετε στην οικονομική σας εργαλειοθήκη. Εάν κάνετε το άλμα, υπάρχουν πολλές εφαρμογές, μαθήματα, βίντεο, άρθρα, βιβλία και αναρτήσεις ιστολογίου για να μάθετε τη γλώσσα. Στο τέλος του κομματιού, έχω αναφέρει μερικούς πόρους που με βοήθησαν στην πορεία.

Θήκες χρήσης: Παραδείγματα για τα οποία έχω χρησιμοποιήσει το Python

Η εισαγωγή μου στον προγραμματισμό ήταν η μάθηση ΒΑΣΙΚΟΣ σε ένα Οποιοδήποτε 1 στα μέσα της δεκαετίας του 1980. Τότε το BASIC ήταν η πιο κοινή γλώσσα για αρχάριους. Άλλες γλώσσες με τις οποίες έμαθα στα τέλη της δεκαετίας του '80 έως τα μέσα της δεκαετίας του '90 ήταν οι Pascal και C, αλλά δεν τις χρησιμοποίησα ποτέ με επαγγελματική ιδιότητα και δεν περίμενα να χρειαστεί ή να χρησιμοποιήσω δεξιότητες προγραμματισμού. Από όσα γνωρίζω στα τέλη της δεκαετίας του '90, η χρηματοδότηση και ο προγραμματισμός ήταν πολύ διαφορετικοί τομείς, όταν επέλεξα να ξεκινήσω μια καριέρα στα οικονομικά.



σχεδιασμός λογιστικού σχεδίου βέλτιστων πρακτικών

Γρήγορα προς τα εμπρός στο 2012, και ήθελα να επιλέξω τον προγραμματισμό ως χόμπι, οπότε άρχισα να ερευνώ τις διαθέσιμες γλώσσες εκείνη τη στιγμή. Αποδείχθηκε ότι είχε συμβεί λίγο, και όταν συνάντησα την Python ήμουν γοητευμένος, για πολλούς από τους λόγους που θα περιγράψω στην επόμενη ενότητα. Από τότε έχω χρησιμοποιήσει το Python για ένα ευρύ φάσμα εργασιών, από μικρά σενάρια έως μεγαλύτερα έργα, τόσο προσωπικά όσο και επαγγελματικά. Πολλοί, αλλά όχι όλοι, έχουν ασχοληθεί με υπολογιστικά φύλλα, τον πάγκο εργασίας πολλών επαγγελματιών στον τομέα των οικονομικών.

Ακολουθούν μερικά παραδείγματα για το πόσο καλά μπορούν να συνδυαστούν τα υπολογιστικά φύλλα και η Python:



1. Παρακολούθηση εκατοντάδων δραστηριοτήτων με την πάροδο του χρόνου σε μια ρύθμιση PMO ενοποίησης M&A

Δουλεύω με όλες τις πτυχές των συναλλαγών M&A, όχι μόνο την εκτέλεση, αλλά και την ολοκλήρωση. Σε μια πρόσφατη περίπτωση, η ομάδα του PMO αποφάσισε ένα υβριδικό πρόγραμμα και προσέγγιση διαχείρισης έργου, χρησιμοποιώντας καταρράκτες και γραφήματα Gantt για σχέδια υψηλού επιπέδου για καθεμία από τις δώδεκα ροές εργασίας ολοκλήρωσης, εκτός από ένα συμβούλιο Kanban για την παρακολούθηση των εκατοντάδων δραστηριοτήτων που σε οποιαδήποτε δεδομένη στιγμή, στο πρώτο πλάνο 100 ημερών και μετά. Το εργαλείο Kanban που επιλέχθηκε, MeisterTask , έχει μια σειρά από στατιστικά στοιχεία και δυνατότητες αναφοράς, αλλά οι ανάγκες μας ξεπέρασαν αυτό από την άποψη της ανάλυσης και της παρουσίασης, η οποία απαιτούσε μια προσαρμοσμένη λύση. Αυτή είναι η ροή εργασίας που αυτοματοποίησα χρησιμοποιώντας το Python:

  1. Αποθηκεύστε την κατάσταση ολόκληρης της πλακέτας εβδομαδιαίως ως αρχείο CSV.
  2. Διαβάστε όλα τα ιστορικά αρχεία CSV σε ένα Πλαίσιο δεδομένων Pandas .
  3. Ταξινόμηση, φιλτράρισμα, ομαδοποίηση και χειρισμός των δεδομένων σε συμφωνημένες μορφές του τρόπου με τον οποίο θέλουμε να παρακολουθούμε την πρόοδο (βάσει της κατάστασης της δραστηριότητας, της ροής εργασίας κ.λπ.).
  4. Γράψτε την έξοδο σε ένα αρχείο Excel με τα δεδομένα από κάθε ανάλυση μέσα στο δικό του φύλλο, μορφοποιημένο με τέτοιο τρόπο ώστε να μπορεί απλά να αντιγραφεί και να επικολληθεί σε σκέψη-κελί διαγράμματα.
  5. Δημιουργήστε πίνακες και γραφήματα για το πακέτο αναφοράς για τη μηνιαία συνεδρίαση της συντονιστικής επιτροπής.

Η ανάπτυξη του σεναρίου απαιτούσε μια προκαταρκτική επένδυση για λίγες ώρες, αλλά τώρα, η ενημέρωση του πακέτου αναφοράς για τις συνεδριάσεις της συντονιστικής επιτροπής ή την ad hoc ανάλυση διαρκεί λίγα λεπτά. Κυριολεκτικά, περίπου 30 δευτερόλεπτα για να μεταβείτε στον σωστό φάκελο και να εκτελέσετε το σενάριο με μια εντολή μιας γραμμής και, στη συνέχεια, μερικά λεπτά για να αντιγράψετε-επικολλήσετε την έξοδο στο διαφανές κατάστρωμα. Με περίπου 500 δραστηριότητες (κάρτες) σε δώδεκα ροές εργασίας ήδη περίπου ένα μήνα σε εκτέλεση, εβδομαδιαία παρακολούθηση του τρόπου με τον οποίο κινούνται, μέσα σε ένα χρονοδιάγραμμα προγράμματος δύο ετών, βρίσκεστε γρήγορα να αντιμετωπίζετε χιλιάδες και τελικά δεκάδες χιλιάδες σημεία δεδομένων σε δεκάδες αρχείων. Χωρίς αυτοματισμό, μιλάμε για μερικές πολύ κουραστικές εργασίες εδώ.



Η «χρονική αξία του χρήματος» ανταλλάσσεται μεταξύ της απλής μετάβασης με πράγματα ή της προσθήκης πιο αρχικού φόρτου εργασίας με τη ρύθμιση της αυτοματοποίησης είναι ένα κοινό θέμα στα οικονομικά. Έκανα μια παρόμοια απόφαση με το πρώτο βήμα αυτής της διαδικασίας, εξάγοντας τα δεδομένα ως αρχεία CSV. Το MeisterTask, όπως πολλές σύγχρονες διαδικτυακές εφαρμογές, έχει API , η οποία μπορεί να συνδεθεί με την εφαρμογή σας Python, αλλά ο χρόνος που αφιερώθηκε στη ρύθμιση θα υπερέβαινε κατά πολύ την εξοικονόμηση χρόνου για τη θήκη χρήσης μας εδώ.

Έτσι, όπως βλέπετε, πολλές φορές η βέλτιστη λύση είναι να αυτοματοποιήσετε ορισμένα βήματα μιας ροής εργασίας και να διατηρήσετε τα άλλα εγχειρίδια.



2. Αναλύοντας τα στατιστικά στοιχεία των τιμών σπιτιού χρησιμοποιώντας το Scraping Ιστού, το API Χαρτών Google και το Excel

Ένα άλλο παράδειγμα είναι κάτι που έκανα λόγω προσωπικού ενδιαφέροντος, αλλά θέλω να το τονίσω γιατί περιέχει μερικά άλλα ενδιαφέροντα στοιχεία της χρησιμότητας της Python:

  1. Ξύστε τα δεδομένα των καταχωρίσεων ακινήτων, συμπεριλαμβανομένης της διεύθυνσης, του μεγέθους, του αριθμού δωματίων, της τιμής ζήτησης και άλλων χαρακτηριστικών, για μια δεδομένη περιοχή. μερικές εκατοντάδες έως και χίλιες γραμμές συνολικά.
  2. Αποθηκεύστε σε μια δομή δεδομένων Python.
  3. Συνδεθείτε στο API Χαρτών Google και, για κάθε καταχώριση, ανακτήστε την απόσταση μεταξύ της ιδιοκτησίας και των βασικών ορόσημων, όπως η θάλασσα, το κέντρο της πόλης, ο κοντινότερος σιδηροδρομικός σταθμός, το πλησιέστερο αεροδρόμιο κ.λπ.
  4. Εξαγάγετε τα δεδομένα σε ένα αρχείο Excel.
  5. Χρησιμοποιήστε την τυπική λειτουργία του Excel για εκτέλεση παλινδρομήσεις , υπολογίστε στατιστικά στοιχεία και δημιουργήστε γραφήματα για τυπικές μετρήσεις, όπως τιμή ανά τετραγωνικό μέτρο και απόσταση από ορόσημα.

Τα αποτελέσματα εδώ θα μπορούσαν να συνδυαστούν με τους δικούς σας προσωπικούς συντελεστές στάθμισης όσον αφορά τις προτιμήσεις και τους οικονομικούς περιορισμούς κατά την αναζήτηση ακινήτων.



Αυτά είναι μόνο δύο παραδείγματα, που επικεντρώνονται στην αυτοματοποίηση εργασιών που σχετίζονται με υπολογιστικά φύλλα και στην προσθήκη λειτουργιών, αλλά οι ευκαιρίες με την Python είναι σχεδόν ατελείωτες. Στην επόμενη ενότητα, θα περιγράψω τους λόγους για τους οποίους έγινε τόσο δημοφιλές, προτού προχωρήσω σε ένα βήμα προς βήμα σεμινάριο προσομοίωσης Monte Carlo στο Python.

Γιατί η Python είναι μια εξαιρετική επιλογή για επαγγελματίες στον τομέα των οικονομικών

Η γλώσσα προγραμματισμού Python υπάρχει από το 1990, αλλά μόλις τα τελευταία χρόνια η δημοτικότητά της εξερράγη.

Η python είναι η γλώσσα προγραμματισμού που αναζητήθηκε περισσότερο

Υπάρχουν πολλοί λόγοι για αυτό, ας δούμε ο καθένας με τη σειρά.

1. Η Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου

Μια γλώσσα προγραμματισμού υψηλού επιπέδου είναι μια γλώσσα που αφαιρεί πολλές από τις λεπτομέρειες της εσωτερικής λειτουργίας του υπολογιστή. Ένα καλό παράδειγμα είναι η διαχείριση μνήμης. Οι γλώσσες προγραμματισμού χαμηλότερου επιπέδου απαιτούν μια λεπτομερή κατανόηση των περιπλοκών του τρόπου με τον οποίο διαμορφώνεται, εκχωρείται και απελευθερώνεται η μνήμη του υπολογιστή, εκτός από τον χρόνο που αφιερώνεται και τις γραμμές κώδικα που απαιτούνται για τον χειρισμό εργασιών. Η Python αφαιρεί και χειρίζεται πολλές από αυτές τις λεπτομέρειες αυτόματα, αφήνοντάς σας να εστιάσετε σε αυτό που θέλετε να πετύχετε.

2. Είναι συνοπτικό

Επειδή η Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου, ο κώδικας είναι πιο περιεκτικός και σχεδόν εξ ολοκλήρου εστιασμένος στην επιχειρηματική λογική του τι θέλετε να επιτύχετε, παρά στις τεχνικές λεπτομέρειες εφαρμογής. Οι επιλογές σχεδιασμού γλώσσας συμβάλλουν σε αυτό: για παράδειγμα, η Python δεν απαιτεί τη χρήση σγουρών στηριγμάτων ή ερωτηματικών για να οριοθετήσει λειτουργίες, βρόχους και γραμμές όπως κάνουν πολλές άλλες γλώσσες, γεγονός που το καθιστά πιο συνοπτικό και, όπως υποστηρίζουν ορισμένοι, βελτιώνεται ευανάγνωστο.

3. Εύκολο να μάθει και να κατανοήσει

Μια παρατήρηση που επηρέασε τις επιλογές γλωσσικού σχεδιασμού στην Python είναι ότι τα προγράμματα διαβάζονται συχνότερα από ό, τι γράφονται. Η Python υπερέχει εδώ καθώς ο κώδικάς της μοιάζει πολύ με τα απλά αγγλικά, ειδικά αν ονομάζετε τα διάφορα στοιχεία του σεναρίου ή του προγράμματος σας με λογικό τρόπο.

4. Κατάλληλο για ταχεία, επαναληπτική ανάπτυξη

Οι διαφωτισμένες δοκιμές και λάθη υπερτερούν του σχεδιασμού των άψογων διανοητικών. - Ντέιβιντ Κέλεϊ

Το Python είναι ιδανικό για πρωτοτυπία και γρήγορη, επαναληπτική ανάπτυξη (και, ναι, δοκιμή-και-σφάλμα) επειδή διαδραστικά εργαλεία διερμηνείας όπως το κέλυφος Python , Σημειωματάρια IPython και Jupyter βρίσκονται μπροστά και στο κέντρο της εργαλειοθήκης Python. Σε αυτά τα διαδραστικά περιβάλλοντα, μπορείτε να γράψετε και να εκτελέσετε κάθε γραμμή κώδικα μεμονωμένα και να δείτε τα αποτελέσματα (ή ένα χρήσιμο μήνυμα σφάλματος) αμέσως. Άλλες γλώσσες το έχουν και αυτό, αλλά στις περισσότερες περιπτώσεις όχι στον ίδιο βαθμό με την Python .

5. Μπορεί να χρησιμοποιηθεί τόσο για τον πρωτότυπο όσο και για τον κώδικα παραγωγής

Εκτός από το ότι είναι εξαιρετικό για πρωτότυπα, το Python είναι επίσης μια εξαιρετική και ισχυρή γλώσσα για μεγάλες εφαρμογές παραγωγής. Μερικές από τις μεγαλύτερες εταιρείες λογισμικού στον κόσμο κάνουν βαριά χρήση του Python σε μια ποικιλία εφαρμογών και περιπτώσεων χρήσης.

6. Συνοδεύεται από το 'Μπαταρίες που περιλαμβάνονται:' Η Python Standard Library

Όλα όσα χρειάζονται για βασικές λειτουργίες είναι ενσωματωμένα στη γλώσσα, αλλά εκτός από αυτό, το Πρότυπη βιβλιοθήκη Python διαθέτει εργαλεία για την επεξεργασία αρχείων, μέσων, δικτύωσης, πληροφοριών ημερομηνίας και ώρας και πολλά άλλα. Αυτό σας επιτρέπει να ολοκληρώσετε μια μεγάλη ποικιλία εργασιών χωρίς να χρειάζεται να αναζητήσετε πακέτα τρίτων.

7. Μεγάλες βιβλιοθήκες τρίτων για οικονομική ανάλυση

Για επαγγελματίες του χρηματοοικονομικού τομέα, Pandas με το Πλαίσιο δεδομένων και Σειρά αντικείμενα, και Numpy με το ndarray είναι οι εργάτες της οικονομικής ανάλυσης με την Python. Σε συνδυασμό με το matplotlib και άλλες βιβλιοθήκες οπτικοποίησης, έχετε στη διάθεσή σας εξαιρετικά εργαλεία για να βοηθήσετε την παραγωγικότητα.

8. Η Python είναι δωρεάν!

Το Python έχει αναπτυχθεί με άδεια ανοιχτού κώδικα και το καθιστά δωρεάν και για εμπορική χρήση.

Εκμάθηση βήμα προς βήμα της χρήσης Python και Finance μαζί

Ακολουθεί ένας οδηγός βήμα προς βήμα που δείχνει πώς να δημιουργήσετε μια απλοποιημένη έκδοση της προσομοίωσης Monte Carlo που περιγράφεται στο η προηγούμενη ανάρτηση στο blog μου , αλλά χρησιμοποιώντας το Python αντί για την προσθήκη @RISK για Excel.

Οι μέθοδοι Monte Carlo βασίζονται σε τυχαία δειγματοληψία για τη λήψη αριθμητικών αποτελεσμάτων. Μία τέτοια εφαρμογή είναι να αντλήσουμε τυχαία δείγματα από μια κατανομή πιθανότητας που αντιπροσωπεύει αβέβαιες πιθανές μελλοντικές καταστάσεις του κόσμου όπου οι μεταβλητές ή οι παραδοχές μπορούν να πάρουν μια σειρά τιμών.

Είναι χρήσιμο να κάνετε την προσομοίωση Monte Carlo σε ένα απλοποιημένο μοντέλο αποτίμησης DCF αντί για τα πιο κοινά παραδείγματα που βλέπετε να δείχνουν αποτίμηση των επιλογών ή άλλων παραγώγων, καθώς για αυτό δεν χρειαζόμαστε μαθηματικά πέρα ​​από τα βασικά στοιχεία του υπολογισμού των οικονομικών καταστάσεων και προεξόφληση ταμειακών ροών, επιτρέποντάς μας να επικεντρωθούμε στις έννοιες και τα εργαλεία της Python. Λάβετε υπόψη ότι αυτό το βασικό μοντέλο εκμάθησης έχει σκοπό να απεικονίσει τις βασικές έννοιες και δεν είναι χρήσιμο ως έχει για πρακτικούς σκοπούς. Επίσης, δεν θα αναφερθώ σε καμία από τις πιο ακαδημαϊκές πτυχές των προσομοιώσεων του Μόντε Κάρλο.

τι είναι το rtl-sdr

Το σεμινάριο προϋποθέτει ότι είστε εξοικειωμένοι με τα βασικά δομικά στοιχεία του προγραμματισμού, όπως μεταβλητές και συναρτήσεις. Εάν όχι, θα ήταν χρήσιμο να χρειαστούν 10 λεπτά για να ελέγξετε τις βασικές έννοιες για παράδειγμα αυτή την εισαγωγή .

Το σημείο εκκίνησης και το επιθυμητό αποτέλεσμα

Ξεκινώ με το ίδιο πολύ απλοποιημένο μοντέλο αποτίμησης DCF που χρησιμοποιήθηκε στο σεμινάριο προσομοίωσης Monte Carlo. Έχει ορισμένα βασικά στοιχεία γραμμής από τις τρεις οικονομικές καταστάσεις και τρία επισημασμένα κελιά εισαγωγής, τα οποία στην έκδοση Excel έχουν εκτιμήσεις σημείου που τώρα θέλουμε να αντικαταστήσουμε με πιθανές κατανομές για να ξεκινήσουμε να εξερευνούμε πιθανές περιοχές αποτελεσμάτων.

παράδειγμα χρηματοοικονομικές προβλέψεις

Μια προσέγγιση δύο βημάτων για την ανάπτυξη ενός μικρού σεναρίου

Κάντε το να λειτουργεί, κάντε το σωστό, κάντε γρήγορα - Κεντ Μπεκ

Ο σκοπός αυτού του σεμιναρίου είναι να δώσει στους επαγγελματίες του χρηματοοικονομικού τομέα νέους στην Python μια εισαγωγή όχι μόνο για το πώς μπορεί να μοιάζει ένα χρήσιμο πρόγραμμα, αλλά και μια εισαγωγή στην επαναληπτική διαδικασία που μπορείτε να χρησιμοποιήσετε για να το αναπτύξετε. Επομένως, έχει δύο μέρη:

  1. Πρώτον, αναπτύσσω ένα λειτουργικό πρωτότυπο χρησιμοποιώντας μια απλή προσέγγιση που νομίζω ότι είναι εύκολο να ακολουθηθεί και δεν είναι εντελώς αντίθετη με τη διαδικασία που θα μπορούσε κανείς να χρησιμοποιήσει για να ξεκινήσει αυτό το έργο αν επρόκειτο να ξεκινήσετε από το μηδέν.
  2. Στη συνέχεια, αφού ανέπτυξα το λειτουργικό πρωτότυπο, περνάω τη διαδικασία της αναδιαμόρφωσης - αλλάζοντας τη δομή του κώδικα χωρίς να αλλάξω τη λειτουργικότητά του. Ίσως θελήσετε να επιμείνετε σε αυτό το μέρος - είναι μια πιο κομψή λύση από την πρώτη, και, ως μπόνους, είναι περίπου 75 φορές γρηγορότερη από την άποψη του χρόνου εκτέλεσης.

1. Ανάπτυξη ενός πρωτοτύπου εργασίας

Ρύθμιση του Jupyter Notebook

Το σημειωματάριο Jupyter είναι ένα εξαιρετικό εργαλείο για τη διαδραστική συνεργασία με την Python. Είναι ένας διαδραστικός διερμηνέας Python με κελιά που μπορεί να περιέχει κώδικα, κείμενο κατάργησης, εικόνες ή άλλα δεδομένα. Για αυτό το σεμινάριο χρησιμοποίησα το Πλατφόρμα Python Quant , αλλά μπορώ επίσης να προτείνω Συνεργασία από την Google , το οποίο είναι δωρεάν και εκτελείται στο cloud. Μόλις φτάσετε εκεί, απλά επιλέξτε 'New Python 3 Notebook' στο μενού 'Αρχείο' και είστε έτοιμοι να πάτε.

Μετά από αυτό, το επόμενο βήμα είναι να εισαγάγουμε τα πακέτα τρίτων που χρειαζόμαστε για χειρισμό και οπτικοποίηση δεδομένων και να πούμε στο πρόγραμμα ότι θέλουμε να βλέπουμε γραφήματα στο σημειωματάριό μας, αντί σε ξεχωριστά παράθυρα:

import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline

Μια σημείωση πριν αρχίσουμε να ονομάζουμε τις πρώτες μας μεταβλητές. Όπως ανέφερα ήδη, η αναγνωσιμότητα είναι ένα από τα πλεονεκτήματα της Python. Ο σχεδιασμός της γλώσσας προχωρεί σε μεγάλο βαθμό για να το υποστηρίξει αυτό, αλλά ο καθένας που γράφει κώδικα είναι υπεύθυνος για να τον καταστήσει αναγνώσιμο και κατανοητό, όχι μόνο για τους άλλους αλλά και για τον εαυτό τους. Οπως και Ο νόμος του Eagleson δηλώνει, 'Οποιοσδήποτε δικός σας κώδικας που δεν έχετε εξετάσει για έξι ή περισσότερους μήνες μπορεί επίσης να έχει γραφτεί από κάποιον άλλο.'

Ένας καλός κανόνας είναι να ονομάσετε τα στοιχεία του προγράμματος σας με τέτοιο τρόπο ώστε να ελαχιστοποιήσετε την ανάγκη για ξεχωριστά σχόλια που εξηγούν τι κάνει το πρόγραμμά σας.

Έχοντας αυτό κατά νου, ας προχωρήσουμε.

Δημιουργία των Οικονομικών Καταστάσεων

Υπάρχουν πολλοί τρόποι με τους οποίους μπορούμε να εργαστούμε με τα υπάρχοντα δεδομένα υπολογιστικών φύλλων στο Python. Θα μπορούσαμε, για παράδειγμα, να διαβάσουμε ένα φύλλο σε ένα Pandas DataFrame με μία γραμμή κώδικα χρησιμοποιώντας το read_excel εντολή. Εάν θέλετε μια πιο αυστηρή σύνδεση και σύνδεση σε πραγματικό χρόνο μεταξύ του υπολογιστικού φύλλου και του κώδικα Python, υπάρχουν και τα δύο Ελεύθερος και εμπορικός διαθέσιμες επιλογές για την παροχή αυτής της λειτουργικότητας.

Δεδομένου ότι το μοντέλο εδώ είναι πολύ απλό, και για να μας εστιάσει στις ιδέες Python, θα το δημιουργήσουμε εκ νέου από το μηδέν στο σενάριό μας. Στο τέλος του πρώτου μέρους, θα δείξω πώς μπορείτε να εξαγάγετε αυτό που έχουμε δημιουργήσει σε ένα υπολογιστικό φύλλο.

Ως πρώτο βήμα προς τη δημιουργία μιας αναπαράστασης των οικονομικών καταστάσεων της Python, θα χρειαστούμε μια κατάλληλη δομή δεδομένων. Υπάρχουν πολλά να διαλέξετε, μερικά ενσωματωμένα στην Python, άλλα από διάφορες βιβλιοθήκες ή μπορούμε να δημιουργήσουμε τη δική μας. Προς το παρόν, ας χρησιμοποιήσουμε μια σειρά από τη βιβλιοθήκη Pandas για να ρίξουμε μια ματιά στη λειτουργικότητά της:

years = ['2018A', '2019B', '2020P', '2021P', '2022P', '2023P'] sales = pd.Series(index=years) sales['2018A'] = 31.0 sales

Αυτή η είσοδος και η αντίστοιχη έξοδος φαίνεται παρακάτω:

οι αγοραστές είναι ιδιαίτερα ευαίσθητοι στις τιμές όταν

δημιουργία μιας σειράς από μια βιβλιοθήκη python

Με τις τρεις πρώτες γραμμές έχουμε δημιουργήσει μια δομή δεδομένων με ένα ευρετήριο που αποτελείται από χρόνια (το καθένα σημειώνεται για να δείξει εάν είναι Πραγματικό, Προϋπολογισμός ή Προβλεπόμενο), μια αρχική τιμή (σε εκατομμύρια ευρώ, όπως στο αρχικό μοντέλο DCF) και κενά (NaN, 'Not a Number') κελιά για τις προβολές. Η τέταρτη γραμμή εκτυπώνει μια αναπαράσταση των δεδομένων - σε γενικές γραμμές, πληκτρολογώντας το όνομα μιας μεταβλητής ή άλλων αντικειμένων στο διαδραστικό διερμηνέα θα σας δώσει συνήθως μια λογική αναπαράσταση αυτής.

Στη συνέχεια, δηλώνουμε μια μεταβλητή που αντιπροσωπεύει την προβλεπόμενη ετήσια αύξηση των πωλήσεων. Σε αυτό το στάδιο, είναι μια εκτίμηση σημείου, η ίδια εικόνα με το αρχικό μας μοντέλο DCF. Θέλουμε πρώτα να χρησιμοποιήσουμε αυτές τις ίδιες εισόδους και να επιβεβαιώσουμε ότι η έκδοση Python μας αποδίδει το ίδιο και δίνει το ίδιο αποτέλεσμα με την έκδοση Excel, προτού εξετάσουμε την αντικατάσταση των εκτιμήσεων σημείων με κατανομές πιθανότητας. Χρησιμοποιώντας αυτήν τη μεταβλητή, δημιουργούμε έναν βρόχο που υπολογίζει τις πωλήσεις σε κάθε έτος των προβολών βάσει του προηγούμενου έτους και του ρυθμού ανάπτυξης:

growth_rate = 0.1 for year in range(1, 6): sales[year] = sales[year - 1] * (1 + growth_rate) sales

Έχουμε προβάλλει τώρα πωλήσεις, αντί για NaN:

python και χρηματοδότηση: προβολή αριθμών πωλήσεων

Χρησιμοποιώντας την ίδια προσέγγιση, συνεχίζουμε τις οικονομικές καταστάσεις, δηλώνοντας τις μεταβλητές που τις χρειαζόμαστε και εκτελούμε τους απαραίτητους υπολογισμούς για να φτάσουμε τελικά σε ελεύθερες ταμειακές ροές. Μόλις φτάσουμε εκεί, μπορούμε να ελέγξουμε ότι αυτό που έχουμε αντιστοιχεί σε αυτό που λέει η έκδοση Excel του μοντέλου DCF.

ebitda_margin = 0.14 depr_percent = 0.032 ebitda = sales * ebitda_margin depreciation = sales * depr_percent ebit = ebitda - depreciation nwc_percent = 0.24 nwc = sales * nwc_percent change_in_nwc = nwc.shift(1) - nwc capex_percent = depr_percent capex = -(sales * capex_percent) tax_rate = 0.25 tax_payment = -ebit * tax_rate tax_payment = tax_payment.apply(lambda x: min(x, 0)) free_cash_flow = ebit + depreciation + tax_payment + capex + change_in_nwc free_cash_flow

Αυτό μας δίνει τις δωρεάν ταμειακές ροές:

μειωμένη παραγωγή ταμειακών ροών από την python

Η μία γραμμή παραπάνω που ίσως χρειάζεται ένα σχόλιο σε αυτό το στάδιο είναι η δεύτερη tax_payment αναφορά. Εδώ, εφαρμόζουμε μια μικρή λειτουργία για να διασφαλίσουμε ότι σε σενάρια όπου τα κέρδη προ φόρων γίνονται αρνητικά, τότε δεν θα έχουμε θετική πληρωμή φόρου. Αυτό δείχνει πόσο αποτελεσματικά μπορείτε να εφαρμόσετε προσαρμοσμένες λειτουργίες σε όλα τα κελιά σε μια σειρά Pandas ή σε DataFrame. Η πραγματική συνάρτηση που εφαρμόζεται είναι, φυσικά, μια απλοποίηση. Ένα πιο ρεαλιστικό μοντέλο για ένα μεγαλύτερος άσκηση αποτίμησης θα είχε ένα ξεχωριστό φορολογικό μοντέλο που υπολογίζει τους πραγματικούς φόρους μετρητών που καταβάλλονται με βάση έναν αριθμό συγκεκριμένων παραγόντων της εταιρείας.

Εκτέλεση της αποτίμησης DCF

Έχοντας φτάσει στις προβλεπόμενες ταμειακές ροές, μπορούμε τώρα να υπολογίσουμε μια απλή τερματική αξία και να μειώσουμε όλες τις ταμειακές ροές στο παρόν για να λάβουμε το αποτέλεσμα DCF. Ο ακόλουθος κώδικας εισάγει την ευρετηρίαση και τον τεμαχισμό, η οποία μας επιτρέπει να έχουμε πρόσβαση σε ένα ή περισσότερα στοιχεία σε μια δομή δεδομένων, όπως το αντικείμενο της σειράς Pandas.

Έχουμε πρόσβαση σε στοιχεία γράφοντας αγκύλες αμέσως μετά το όνομα της δομής. Η απλή ευρετηρίαση αποκτά πρόσβαση σε στοιχεία από τη θέση τους, ξεκινώντας από το μηδέν, που σημαίνει ότι free_cash_flow[1] θα μας έδινε το δεύτερο στοιχείο. [-1] είναι συντομογραφία για την πρόσβαση στο τελευταίο στοιχείο (η ταμειακή ροή του προηγούμενου έτους χρησιμοποιείται για τον υπολογισμό της τελικής αξίας) και η χρήση άνω και κάτω τελείας μας δίνει ένα κομμάτι, που σημαίνει ότι [1:] μας δίνει όλα τα στοιχεία εκτός από το πρώτο, αφού δεν θέλουμε να συμπεριλάβουμε το ιστορικό έτος 2018A στην αποτίμηση DCF μας.

cost_of_capital = 0.12 terminal_growth = 0.02 terminal_value = ((free_cash_flow[-1] * (1 + terminal_growth)) / (cost_of_capital - terminal_growth)) discount_factors = [(1 / (1 + cost_of_capital)) ** i for i in range (1,6)] dcf_value = (sum(free_cash_flow[1:] * discount_factors) + terminal_value * discount_factors[-1]) dcf_value

έξοδος dcf από υπολογισμό προεξοφλημένων ταμειακών ροών python

Αυτό ολοκληρώνει το πρώτο μέρος του πρωτοτύπου μας - έχουμε τώρα ένα μοντέλο DCF που λειτουργεί, αν και ένα πολύ στοιχειώδες, στο Python.

Εξαγωγή δεδομένων

Πριν προχωρήσουμε στην πραγματική προσομοίωση του Μόντε Κάρλο, ίσως είναι η κατάλληλη στιγμή να αναφέρουμε τις δυνατότητες εξαγωγής που διατίθενται στο πακέτο Pandas. Εάν έχετε ένα αντικείμενο Pandas DataFrame, μπορείτε να το γράψετε σε ένα αρχείο Excel με μία γραμμή χρησιμοποιώντας το to_excel μέθοδος. Υπάρχει παρόμοια λειτουργικότητα για εξαγωγή σε περισσότερες από δώδεκα άλλες μορφές και προορισμούς επίσης.

output = pd.DataFrame([sales, ebit, free_cash_flow], index=['Sales', 'EBIT', 'Free Cash Flow']).round(1) output.to_excel('Python DCF Model Output.xlsx') output

παράδειγμα εξόδου πίνακα excel που δημιουργήθηκε με python

Δημιουργία κατανομών πιθανότητας για την προσομοίωσή μας στο Μόντε Κάρλο

Τώρα είμαστε έτοιμοι να αντιμετωπίσουμε την επόμενη πρόκληση: να αντικαταστήσουμε μερικές από τις εισόδους εκτίμησης σημείου με κατανομές πιθανότητας. Ενώ τα βήματα μέχρι αυτό το σημείο μπορεί να φαίνονται κάπως δυσκίνητα σε σύγκριση με την κατασκευή του ίδιου μοντέλου στο Excel, αυτές οι επόμενες λίγες γραμμές θα σας δώσουν μια ματιά για το πόσο ισχυρό μπορεί να είναι το Python.

Το πρώτο μας βήμα είναι να αποφασίσουμε πόσες επαναλήψεις θέλουμε να εκτελέσουμε στην προσομοίωση. Η χρήση του 1.000 ως σημείο εκκίνησης επιτυγχάνει την ισορροπία μεταξύ της λήψης αρκετών σημείων δεδομένων για τη λήψη λογικών σχεδίων εξόδου, έναντι της ολοκλήρωσης της προσομοίωσης εντός ενός λογικού χρονικού πλαισίου. Στη συνέχεια, δημιουργούμε τις πραγματικές διανομές. Για λόγους απλότητας, δημιούργησα τρεις κανονικές διανομές εδώ, αλλά η βιβλιοθήκη NumPy διαθέτει μεγάλο αριθμό διανομών για να διαλέξετε και υπάρχουν και άλλα μέρη για να δείτε, συμπεριλαμβανομένου του Πρότυπη βιβλιοθήκη Python . Αφού αποφασίσουμε ποια κατανομή θα χρησιμοποιήσουμε, πρέπει να καθορίσουμε τις παραμέτρους που απαιτούνται για να περιγράψουμε το σχήμα τους, όπως μέση και τυπική απόκλιση και τον αριθμό των επιθυμητών αποτελεσμάτων.

iterations = 1000 sales_growth_dist = np.random.normal(loc=0.1, scale=0.01, size=iterations) ebitda_margin_dist = np.random.normal(loc=0.14, scale=0.02, size=iterations) nwc_percent_dist = np.random.normal(loc=0.24, scale=0.01, size=iterations) plt.hist(sales_growth_dist, bins=20) plt.show()

έξοδος προσομοίωσης monte carlo από το python

Εδώ θα μπορούσατε να υποστηρίξετε ότι το EBITDA δεν πρέπει να είναι μια ξεχωριστή τυχαία μεταβλητή ανεξάρτητη από τις πωλήσεις, αλλά να συσχετίζεται με τις πωλήσεις σε κάποιο βαθμό. Θα συμφωνούσα με αυτό, και θα προσθέσω ότι πρέπει να καθοδηγείται από μια σταθερή κατανόηση της δυναμικής της δομής του κόστους (μεταβλητό, ημι-μεταβλητό και σταθερό κόστος) και των βασικών οδηγών κόστους (μερικά από τα οποία μπορεί να έχουν τις δικές τους κατανομές πιθανότητας, όπως για παράδειγμα τιμές εισροών εμπορευμάτων), αλλά αφήνω αυτές τις πολυπλοκότητες εδώ για χάρη του χώρου και της σαφήνειας.

llc vs s corp vs c corp chart

Όσο λιγότερα δεδομένα έχετε για να ενημερώσετε την επιλογή σας για τη διανομή και τις παραμέτρους, τόσο περισσότερο θα πρέπει να βασιστείτε στο αποτέλεσμα των διαφόρων ροών εργασίας δέουσας επιμέλειας, σε συνδυασμό με την εμπειρία, για να διαμορφώσετε μια συναίνεση σε μια σειρά από πιθανά σενάρια. Σε αυτό το παράδειγμα, με προβολές ταμειακών ροών, θα υπάρχει ένα μεγάλο υποκειμενικό στοιχείο, πράγμα που σημαίνει ότι η οπτικοποίηση των κατανομών πιθανότητας καθίσταται σημαντική. Εδώ, μπορούμε να πάρουμε μια βασική απεικόνιση, που δείχνει την κατανομή της αύξησης των πωλήσεων, με μόνο δύο σύντομες γραμμές κώδικα. Με αυτόν τον τρόπο μπορούμε να δούμε γρήγορα οποιαδήποτε διανομή στο eyeball που αντικατοπτρίζει καλύτερα τη συλλογική άποψη της ομάδας.

Τώρα έχουμε όλα τα δομικά στοιχεία που πρέπει να εκτελέσουμε την προσομοίωση, αλλά δεν είναι σε κατάλληλη μορφή για την εκτέλεση της προσομοίωσης. Εδώ είναι ο ίδιος κώδικας με τον οποίο έχουμε εργαστεί μέχρι στιγμής, αλλά όλοι συγκεντρώθηκαν σε ένα κελί και αναδιατάχθηκαν σε μια συνάρτηση για ευκολία:

def run_mcs(): # Create probability distributions sales_growth_dist = np.random.normal(loc=0.1, scale=0.01, size=iterations) ebitda_margin_dist = np.random.normal(loc=0.14, scale=0.02, size=iterations) nwc_percent_dist = np.random.normal(loc=0.24, scale=0.01, size=iterations) # Calculate DCF value for each set of random inputs output_distribution = [] for i in range(iterations): for year in range(1, 6): sales[year] = sales[year - 1] * (1 + sales_growth_dist[0]) ebitda = sales * ebitda_margin_dist[i] depreciation = (sales * depr_percent) ebit = ebitda - depreciation nwc = sales * nwc_percent_dist[i] change_in_nwc = nwc.shift(1) - nwc capex = -(sales * capex_percent) tax_payment = -ebit * tax_rate tax_payment = tax_payment.apply(lambda x: min(x, 0)) free_cash_flow = ebit + depreciation + tax_payment + capex + change_in_nwc # DCF valuation terminal_value = (free_cash_flow[-1] * 1.02) / (cost_of_capital - 0.02) free_cash_flow[-1] += terminal_value discount_factors = [(1 / (1 + cost_of_capital)) ** i for i in range (1,6)] dcf_value = sum(free_cash_flow[1:] * discount_factors ) output_distribution.append(dcf_value) return output_distribution

Τώρα μπορούμε να εκτελέσουμε ολόκληρη την προσομοίωση και να σχεδιάσουμε τη διανομή εξόδου, η οποία θα είναι η προεξοφλημένη αξία ταμειακών ροών αυτής της εταιρείας σε καθεμία από τις 1.000 επαναλήψεις, με τον ακόλουθο κωδικό. Το %time Η εντολή δεν είναι κωδικός Python αλλά ένα σημειωματάριο που μετρά το χρόνο για να τρέξει κάτι (θα μπορούσατε αντ 'αυτού να χρησιμοποιήσετε τη συνάρτηση Python από την τυπική βιβλιοθήκη ). Εξαρτάται από τον υπολογιστή στον οποίο εκτελείτε, αλλά αυτή η έκδοση χρειάζεται 1-2 δευτερόλεπτα για να εκτελέσει τις 1.000 επαναλήψεις και να απεικονίσει το αποτέλεσμα.

%time plt.hist(run_mcs(), bins=20, color='r') plt.show()

έξοδος προσομοίωσης monte carlo από το σενάριο python

2. Βελτίωση του πρωτοτύπου

Η παρατεταμένη υποψία ότι κάτι θα μπορούσε να απλοποιηθεί είναι η πλουσιότερη πηγή ανταμοιβών στον κόσμο. - Edsger Dijkstra

Το Refactoring αναφέρεται στη διαδικασία επανεγγραφής του υπάρχοντος κώδικα για να βελτιώσει τη δομή του χωρίς να αλλάξει τη λειτουργικότητά του και μπορεί να είναι ένα από τα πιο διασκεδαστικά και επιβραβευτικά στοιχεία της κωδικοποίησης. Μπορεί να υπάρχουν πολλοί λόγοι για να γίνει αυτό. Μπορεί να είναι:

  1. Οργανώστε τα διάφορα μέρη με πιο λογικό τρόπο.
  2. Μετονομάστε μεταβλητές και συναρτήσεις για να καταστήσετε τον σκοπό και τη λειτουργία τους πιο ξεκάθαρους.
  3. Επιτρέψτε και προετοιμαστείτε για μελλοντικές δυνατότητες.
  4. Βελτιώστε την ταχύτητα εκτέλεσης, το αποτύπωμα μνήμης ή τη χρήση άλλων πόρων.

Για να δείξω πώς μπορεί να μοιάζει ένα βήμα αυτής της διαδικασίας, καθαρίσαμε το πρωτότυπο που μόλις περάσαμε συλλέγοντας όλες τις αρχικές μεταβλητές σε ένα μέρος, αντί να διασκορπιστεί σε ολόκληρο το σενάριο πρωτοτύπου και βελτιστοποίησε την ταχύτητα εκτέλεσης μέσω μιας διαδικασίας που ονομάζεται διανυσματικοποίηση .

Η χρήση των συστοιχιών NumPy σάς δίνει τη δυνατότητα να εκφράζετε πολλά είδη εργασιών επεξεργασίας δεδομένων ως συνοπτικές εκφράσεις πίνακα που διαφορετικά θα απαιτούσαν βρόχους γραφής. Αυτή η πρακτική αντικατάστασης ρητών βρόχων με εκφράσεις πίνακα αναφέρεται συνήθως ως διανυσματοποίηση. Wes McKinney

Φαίνεται τώρα πιο καθαρό και πιο κατανοητό:

# Key inputs from DCF model years = 5 starting_sales = 31.0 capex_percent = depr_percent = 0.032 sales_growth = 0.1 ebitda_margin = 0.14 nwc_percent = 0.24 tax_rate = 0.25 # DCF assumptions r = 0.12 g = 0.02 # For MCS model iterations = 1000 sales_std_dev = 0.01 ebitda_std_dev = 0.02 nwc_std_dev = 0.01 def run_mcs(): # Generate probability distributions sales_growth_dist = np.random.normal(loc=sales_growth, scale=sales_std_dev, size=(years, iterations)) ebitda_margin_dist = np.random.normal(loc=ebitda_margin, scale=ebitda_std_dev, size=(years, iterations)) nwc_percent_dist = np.random.normal(loc=nwc_percent, scale=nwc_std_dev, size=(years, iterations)) # Calculate free cash flow sales_growth_dist += 1 for i in range(1, len(sales_growth_dist)): sales_growth_dist[i] *= sales_growth_dist[i-1] sales = sales_growth_dist * starting_sales ebitda = sales * ebitda_margin_dist ebit = ebitda - (sales * depr_percent) tax = -(ebit * tax_rate) np.clip(tax, a_min=None, a_max=0) nwc = nwc_percent_dist * sales starting_nwc = starting_sales * nwc_percent prev_year_nwc = np.roll(nwc, 1, axis=0) prev_year_nwc[0] = starting_nwc delta_nwc = prev_year_nwc - nwc capex = -(sales * capex_percent) free_cash_flow = ebitda + tax + delta_nwc + capex # Discount cash flows to get DCF value terminal_value = free_cash_flow[-1] * (1 + g) / (r - g) discount_rates = [(1 / (1 + r)) ** i for i in range (1,6)] dcf_value = sum((free_cash_flow.T * discount_rates).T) dcf_value += terminal_value * discount_rates[-1] return dcf_value

Η κύρια διαφορά που θα παρατηρήσετε μεταξύ αυτής της έκδοσης και της προηγούμενης είναι η απουσία του for i in range(iterations) βρόχος. Χρησιμοποιώντας τη λειτουργία συστοιχίας του NumPy, αυτή η έκδοση εκτελείται σε 18 χιλιοστά του δευτερολέπτου σε σύγκριση με τα 1,35 δευτερόλεπτα για την πρωτότυπη έκδοση - περίπου 75 φορές πιο γρήγορα.

%time plt.hist(run_mcs(), bins=20, density=True, color='r') plt.show()

Παράδειγμα λειτουργίας πίνακα NumPy

Είμαι βέβαιος ότι είναι δυνατή η περαιτέρω βελτιστοποίηση, καθώς έχω συνθέσει τόσο το πρωτότυπο όσο και την εκλεπτυσμένη έκδοση σε σύντομο χρονικό διάστημα μόνο για τους σκοπούς αυτού του σεμιναρίου.

στοιχεία και αρχές των ορισμών σχεδιασμού

Προχωρώντας περαιτέρω

Αυτό το σεμινάριο έδειξε μερικά από τα ισχυρά χαρακτηριστικά του Python και αν επρόκειτο να το αναπτύξετε περαιτέρω οι ευκαιρίες είναι σχεδόν ατελείωτες. Θα μπορούσατε για παράδειγμα:

  • Ξύστε ή κατεβάστε σχετικές στατιστικές εταιρειών ή τομέων από ιστοσελίδες ή άλλες πηγές δεδομένων, για να ενημερώσετε την επιλογή σας για τις παραδοχές και τις κατανομές πιθανότητας.
  • Χρησιμοποιήστε το Python σε ποσοτικές εφαρμογές χρηματοδότησης, όπως σε έναν αυτοματοποιημένο αλγόριθμο συναλλαγών που βασίζεται σε θεμελιώδεις και / ή μακροοικονομικούς παράγοντες.
  • Δημιουργήστε δυνατότητες εξαγωγής που δημιουργούν έξοδο σε υπολογιστικό φύλλο ή / και μορφή παρουσίασης, για χρήση ως μέρος της εσωτερικής διαδικασίας ελέγχου και έγκρισης συναλλαγών ή για εξωτερικές παρουσιάσεις.

Δεν έχω αγγίξει ακόμη και τι θα μπορούσατε επίσης να κάνετε με τις διάφορες εφαρμογές ιστού, δεδομένων και μηχανικής μάθησης που συνέβαλαν στην επιτυχία της Python.

Συνοπτικά: Μια χρήσιμη γλώσσα για την οικονομική σας εργαλειοθήκη

Αυτό το άρθρο έδωσε μια εισαγωγή στη γλώσσα προγραμματισμού Python, απαριθμώντας μερικούς από τους λόγους για τους οποίους έγινε τόσο δημοφιλές στη χρηματοδότηση και έδειξε πώς να φτιάξετε ένα μικρό σενάριο Python. Σε ένα βήμα-προς-βήμα σεμινάριο, αναλύτηκα πώς το Python μπορεί να χρησιμοποιηθεί για επαναληπτικό πρωτότυπο, διαδραστική οικονομική ανάλυση και για κωδικό εφαρμογής για μοντέλα αποτίμησης, αλγοριθμικά προγράμματα συναλλαγών και άλλα.

Για μένα, στο τέλος της ημέρας, το δολοφονικό χαρακτηριστικό της τεχνολογίας Python είναι ότι είναι απλά διασκεδαστικό να δουλεύεις! Εάν σας αρέσει η επίλυση προβλημάτων, η οικοδόμηση πραγμάτων και η αποτελεσματικότερη ροή εργασιών, σας προτείνω να το δοκιμάσετε. Θα ήθελα πολύ να ακούσω τι έχετε κάνει με αυτό ή θα ήθελα να το κάνω.

Προτεινόμενοι πόροι για επαγγελματίες χρηματοδότησης για να μάθουν την Python

  • Βιβλία O'Reilly. Μπορώ ειδικά να προτείνω:
    • Python for Finance από τον Yves Hilpisch
    • Μαθαίνοντας Python από τον Mark Lutz
    • Άπταιστα Python από τον Luciano Ramalho
  • Οι Python Quants
  • Η PyCon μιλά στο YouTube
  • Ούντεμι

Κατανόηση των βασικών

Πώς χρησιμοποιείται το Python στη χρηματοδότηση;

Το Python χρησιμοποιείται ως επί το πλείστον για ποσοτική και ποιοτική ανάλυση για τις τάσεις και τις προβλέψεις των τιμών των περιουσιακών στοιχείων. Επίσης προσφέρεται για την αυτοματοποίηση ροών εργασιών σε διαφορετικές πηγές δεδομένων.

Πότε δημιουργήθηκε η Python;

Η Python σχεδιάστηκε τη δεκαετία του 1980 και εφαρμόστηκε για πρώτη φορά τον Δεκέμβριο του 1989.

Σε τι χρησιμοποιείται ο προγραμματισμός Python;

Η Python είναι μια εύπλαστη, γενικευμένη γλώσσα προγραμματισμού με περιπτώσεις χρήσης σε διάφορα πεδία. Φροντίζοντας την πτυχή προγραμματισμού της εφαρμογής, επιτρέπει στον προγραμματιστή να επικεντρωθεί στη λειτουργικότητα της δημιουργίας τους.

Προσβασιμότητα στον Ιστό: Γιατί τα πρότυπα W3C συχνά αγνοούνται

Επιστήμη Δεδομένων Και Βάσεις Δεδομένων

Προσβασιμότητα στον Ιστό: Γιατί τα πρότυπα W3C συχνά αγνοούνται
Εισαγωγή στην επεξεργασία εικόνων Python στην Υπολογιστική Φωτογραφία

Εισαγωγή στην επεξεργασία εικόνων Python στην Υπολογιστική Φωτογραφία

Τεχνολογία

Δημοφιλείς Αναρτήσεις
Πέντε δοκιμασμένες μάχες τεχνικές που δεν χρησιμοποιεί ο προγραμματιστής του WordPress API
Πέντε δοκιμασμένες μάχες τεχνικές που δεν χρησιμοποιεί ο προγραμματιστής του WordPress API
MetaDapper: Η χαρτογράφηση δεδομένων και η μετατροπή γίνονται εύκολα με τα σωστά εργαλεία
MetaDapper: Η χαρτογράφηση δεδομένων και η μετατροπή γίνονται εύκολα με τα σωστά εργαλεία
Διευθυντής ανάπτυξης
Διευθυντής ανάπτυξης
Taming WebRTC με PeerJS: Δημιουργία ενός απλού παιχνιδιού Web P2P
Taming WebRTC με PeerJS: Δημιουργία ενός απλού παιχνιδιού Web P2P
Εξερεύνηση του πολυτροπικού σχεδιασμού - Ένα πρόγραμμα εκμάθησης του Adobe XD
Εξερεύνηση του πολυτροπικού σχεδιασμού - Ένα πρόγραμμα εκμάθησης του Adobe XD
 
Οι μεγάλες ερωτήσεις οδηγούν σε εξαιρετικό σχεδιασμό: Ένας οδηγός για τη διαδικασία σκέψης σχεδιασμού
Οι μεγάλες ερωτήσεις οδηγούν σε εξαιρετικό σχεδιασμό: Ένας οδηγός για τη διαδικασία σκέψης σχεδιασμού
Εξερεύνηση του πολυτροπικού σχεδιασμού - Ένα πρόγραμμα εκμάθησης του Adobe XD
Εξερεύνηση του πολυτροπικού σχεδιασμού - Ένα πρόγραμμα εκμάθησης του Adobe XD
Κοινή χρήση εθισμού επαναγοράς: Μελέτες περιπτώσεων επιτυχίας
Κοινή χρήση εθισμού επαναγοράς: Μελέτες περιπτώσεων επιτυχίας
Terraform AWS Cloud: Διαχείριση Sane Infrastructure
Terraform AWS Cloud: Διαχείριση Sane Infrastructure
Όλα όσα πρέπει να ξέρετε για το CVS-Aetna Merger
Όλα όσα πρέπει να ξέρετε για το CVS-Aetna Merger
Δημοφιλείς Αναρτήσεις
  • πώς να κάνετε αλγοριθμικές συναλλαγές
  • χειρισμός εξαίρεσης στην ελατηριωτή μπότα
  • Αρχές της σχεδιαστικής ποικιλίας παραδείγματα
  • τιμή ελαστικότητας ζήτησης
  • μαθαίνουν γρήγορα ή αντικειμενικά γ
  • τεχνολογία κατά τη διάρκεια του Ψυχρού Πολέμου
Κατηγορίες
  • Ζωή Σχεδιαστών
  • Διαδικασίες Χρηματοδότησης
  • Συμβουλές Και Εργαλεία
  • Μηχανική Διοίκηση
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt