Programming in Finance and Economics II
Programming in Finance and Economics I or equivalent course
Keen interest in programming and quantitative problem solving
Good knowledge of a programming language is a powerful tool for researchers and practitioners. It is also a valuable skill in the labor market. This course introduces the students to advanced and powerful programming techniques. Building upon the foundation of Programming in Finance and Economics I, this course expands the students' capabilities in R and features introductions to Python, MySQL, the Linux operating system and smart contracts.
The course has the following goals:
- Move from barely solving problems with R to advanced and well-organized programming, including writing packages
- Learning the basics of a second programming language: Python
- Learn to cover the entire Data Science toolchain from data acquisition to analysis, by integrating several programming languages and environments in a Linux-based cloud setting
- Learn how to use powerful alternative programming environment such as creating a mobile phone app using a no-code environment or writing smart contracts on the block chain
- Learn how to manage IT projects, including self-management
After this course, students should be able and confident to collaborate on a complex empirical project in economics, finance or data science or create prototype software for a startup.
Description / Program
The course is structured along computational concepts, not applications. The topics include
- Setting up a personal data server in the cloud: Linux, SQL, Web scraping, APIs and Cron
- Advanced programming: Create an R package and learn about collaboration, style, and tools such as git
- Python and the Internet of Things (IoT): how to make the first steps in a new programming language
- Machine learning methods for textual data
- Algorithmic trading with Interactive Brokers. Setting up a paper trading system
- *Writing smart contracts on the Algorand blockchain (optional, time permitting)
- *Outsourcing: how to write a program specification and communicate with professional programmers (optional, time permitting)
- *Nocode programming: Create a smartphone app using the Adalo platform (optional, time permitting)
Learning Method / Style of Lessons
The course is organized in seven blocks of four hours. Each block introduces a new concept and employs learning-by-doing to move from theory to practice. Students start with a short video tutorial and reading material before the course starts. The course block itself starts with a presentation of a new concept. Next, we study a sample program that illustrates this concept and try to understand the underlying ideas. Most of the time will be devoted to discussing practical implications and implementation details.
The goal of the lessons is not to cover every detail of a topic but rather to open a new topic to students and to empower them to build on the foundations laid in class.
Grading is based on project work. Students perform (a) small individual tasks (mostly writing summaries) and (b) collaborate in groups on two or three larger programming projects.
33% Small individual tasks (write three one-page summaries)
Criteria: completeness, own contribution + insights, structure+readability, literature
67% Programming projects in small groups (best two out of three projects)
Criteria: correctness+completeness, programming style, quality of documentation, difficulty/complexity/comprehensiveness
Students should bring a laptop with R and R Studio installed to all classes. Further software (Python, SQL, Terminal) will be installed together or will be used on a server.
Students will be required to purchase an IoT kit for approx. CHF 20.
Students will be required to purchase server space for approx. CHF 25.
Relevant online resources will be discussed in the first lecture.