Spring 2017 FRE-GY 6883 Financial Computing Song Tang, Ph.D

Similar documents
San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Quantitative Finance COURSE NUMBER: 22:839:615 COURSE TITLE: Special Topics Oriented Programming 2

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

University of Asia Pacific (UAP) Department of Computer Science and Engineering (CSE)

B. Subject-specific skills B1. Problem solving skills: Supply the student with the ability to solve different problems related to the topics

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

Advanced C++ for Computational Finance

SYLLABUS / FIȘA DISCIPLINEI

Computer Networks IT321

Testing in the Agile World

PROGRAM OUTLINE. Information Technology with Co-op, System Programming. PROGRAM DESCRIPTION Concentration 1: DELIVERY METHODS PROGRAM DURATION

The University of Iowa. 22c181: Formal Methods in Software Engineering. Spring Course Overview

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

San Jose State University - Department of Computer Science

ITE 205 Software Design and Programming I

Tutorials. Tutorial every Friday at 11:30 AM in Toldo 204 * discuss the next lab assignment

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1 and 2, Spring 2016

COURSE SYLLABUS ****************************************************************************** YEAR COURSE OFFERED: 2015

Audit and Assurance Overview

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

App Development. Mobile Media Innovation Module 6

CS 210 Algorithms and Data Structures College of Information Technology and Engineering Weisberg Division of Engineering and Computer Science

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

Compilers for Modern Architectures Course Syllabus, Spring 2015

ENCE 688R Civil Information Systems

CMPE/SE 135 Object-Oriented Analysis and Design

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

CS313T ADVANCED PROGRAMMING LANGUAGE

Compulsory course in Computer Science

1.264 Midterm Exam Solutions Fall, Name:

Introduction to Software Engineering p. 1 The Scope of Software Engineering p. 3 Historical Aspects p. 4 Economic Aspects p. 7 Maintenance Aspects p.

Cleveland State University

MSc Econometrics. VU Amsterdam School of Business and Economics. Academic year

Representative Syllabus

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

Gradational conception in Cleanroom Software Development

San José State University Department of Computer Science CS 166 / SE 166, Information Security, Section 4, spring, 2017

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

Systems Analysis and Design

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

MORGAN STATE UNIVERSITY DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING COURSE SYLLABUS FALL, 2015

Algorithms and Data Structures Spring 2008

CS Computer Science I

Binomial pricer (1.1)

Object-Oriented Programming CSCI-UA

2. COURSE DESIGNATION: 3. COURSE DESCRIPTIONS:

CS-3410 Systems Programming Spring 2013

Object Oriented Programming

Table XXX MBA Assessment Results for Basic Content Knowledge Learning Goal: Aggregate Subject Matter Scores

Announcement date: December 1, 2009 New program launch date: May 1, 2010

Introduction to MATLAB for Finance

ECE 4450:427/527 - Computer Networks

Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University. Course Profile

IS Spring 2018 Database Design, Management and Applications

ITM DEVELOPMENT (ITMD)

LIS 2680: Database Design and Applications

Agile Development

ava with Object-Oriented Generic Programming+ Java Java with Object-Oriented + Generic Programming by Paul S. Wang sofpower.com

Object-Oriented Programming for Managers

ENGR 102 Engineering Lab I - Computation

Certified Software Quality Engineer Preparation On Demand, Web-Based Course Offered by The Westfall Team

file:///h:/de/course Production/DE Production/comp_1010_ol/_syllabus...

SOA - Advanced Operating Systems

COMP250: Introduction to Computer Science. Jérôme Waldispühl & Carlos Oliver Gonzalez School of Computer Science McGill University

Systems Analysis and Design in a Changing World, Fourth Edition

WHO SHOULD ATTEND? ITIL Foundation is suitable for anyone working in IT services requiring more information about the ITIL best practice framework.

ITT Technical Institute. ET4560T C++ Programming Onsite Course SYLLABUS

CENTRAL TEXAS COLLEGE COSC 1337 PROGRAMMING FUNDAMENTALS II. Semester Hours Credit: 3

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

College of San Mateo Course Outline

Topic 01. Software Engineering, Web Engineering, agile methodologies.

IE521 Convex Optimization Introduction

Oklahoma State University Institute of Technology Face-to-Face Common Syllabus Fall 2017

Spring 2018 El Camino College E. Ambrosio. Course Syllabus

ECOM 2314 COMPUTER PROGRAMMING II

((MARKS)) (1/2/3...) ((QUESTIO N)) ((OPTION_ A)) What is Software?

San José State University Department of Computer Science CS049J, Programming in Java, Section 2, Fall, 2016

ADMINISTRATIVE MANAGEMENT COLLEGE

CSCI 201L Syllabus Principles of Software Development Spring 2018

SOFTWARE ENGINEERING

Session 5. Session Name: SDLC MODEL Author Name: Dr. Qaim Mehdi Rizvi Department: Computer Science & Engineering Subject/Course: SOFTWARE ENGINEERING

UNIVERSITY OF TORONTO DEPARTMENT OF ECONOMICS St. GEORGE CAMPUS. ECO358 Financial Economics I (Asset Pricing) Course Outline Summer 2013

Work-ready skills in Business, Administration and IT

L17: Assurance. Hui Chen, Ph.D. Dept. of Engineering & Computer Science Virginia State University Petersburg, VA 23806

MLR Institute of Technology

Advanced Programming Concepts. CIS 15 : Spring 2007

SOFTWARE ENGINEERING

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University. Course Profile

Dynamic Cuda with F# HPC GPU & F# Meetup. March 19. San Jose, California

CSCI 434 INTRODUCTION TO LOCAL AREA NETWORKS (SPRING 2015)

UX Consulting: A Look into the Design and Usability Center at Bentley

Welcome to CS 241 Systems Programming at Illinois

Lecture 8. Xiaoguang Wang. February 13th, 2014 STAT 598W. (STAT 598W) Lecture 8 1 / 47

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

Additionally, if you are ing me please place the name of the course in the subject of the .

DIABLO VALLEY COLLEGE CATALOG

CSCI 3160: User Interface Design

Data Structures and Algorithms

Transcription:

Spring 2017 FRE-GY 6883 Financial Computing Song Tang, Ph.D. st290@nyu.edu, 646-283-4578 Overview: This course covers programming applications to financial engineering, including C++ and Java and the various common development environments for them. Topics include structured and object-oriented programming in C++ with applications to binomial options pricing, multithreaded programming in Java with applications to risk measurement tools, market data access libraries with applications to historical financial data series retrieval and management, and other advanced programming concepts important for financial engineering such as numerical techniques, trading systems, and large-scale software design. Schedule of Classes: Week Topics 1 Financial Computation in C/C++ Part 1 2 Financial Computation in C/C++ Part 2 3 Financial Computation in C/C++ Part 3 4 Financial Applications Using Data Structures and Class Templates Part 1 5 Financial Applications Using Data Structures and Class Templates Part 2 6 Implementation of Non-linear Solvers in C++ 7 Monte Carlo Methods 8 Midterm Exam 9 Working with Historical and Market Data - Part 1 10 Working with Historical and Market Data - Part 2 11 Financial Trading System Development 12 Large Scale Financial System Design & Development 13 Financial Numerical Recipes in C++ 14 Financial Computation in Java 15 Team Project Presentation and Demonstration Assessment: Students will do extensive coding for both their homework assignments and the final project. Homework assignments are requested to complete independently. Most of homework assignments are closely related to the topics and programs discussed in classes. The final project will be done in group of 4 students. The final project will be given to students around midterm week, so students will have 7-8 weeks working on their projects. The last class will be the project presentation and program demonstration. The assessment will be done as the following: Quiz(zes), 10% Homework Assignment, 30% Midterm Exam, 30% Group Project, 30% 1

Textbooks: (1) Numerical Methods in Finance with C++ (Mastering Mathematical Finance), by Maciej J. Capinski and Tomasz Zastawniak, Cambridge University Press, 2012, ISBN-10: 0521177162 (2) Introduction to C++ for Financial Engineers: An Object-Oriented Approach (The Wiley Finance Series), by Daniel J. Duffy, Wiley, 2006, ISBN-10: 0470015381 (3) Large-Scale C++ Software Design, by John Lakos, Addison-Wesley Professional, 1996, ISBN-10: 0201633620 Development Environment: (1) C++ Integrated Development Environment a. PC: Microsoft Visual Studio Community 2015, a free version of Microsoft Visual Studio. b. MAC: Xcode, should be preinstalled, otherwise, download from Apple Web site. (2) Java Development Environment, students will use Dr Java or Eclipse IDE for Java developers. Both are free IDE environment. Dr Java is a lightweight development environment for writing Java programs. It is designed primarily for students, providing an intuitive interface and the ability to interactively evaluate Java code. Course Topics: Financial Computation in C/C++ The Structured Programming Structured programming is a technique which arose from the analysis of the flow control structures which underlie all computer programs. It is possible to construct any flow control structure from three basic structures: sequential, conditional and iterative. Students will learn how to price European options via the binomial model. o Principle of Structured Programming o Program Shell o Entering Data o Functions o Separate Compilation o Cox-Ross-Rubinstein (CRR) Pricer o Pointers and Function Pointers. Object-Oriented Programming in C++ In this unit students will gain a basic understanding of object oriented programming using C++ and the design of a C++ application based on what they did in structured programming. In other words, they will recast their option pricer in the style of objectoriented programming. Their classes will reflect the relationships between real entities, namely the binomial model and European options of various kinds. o Our First Class o Inheritance o Virtual Functions o Recast the Option Pricer 2

Financial Applications Using Data Structures and Class Templates This unit will introduce students advanced object-oriented programming techniques and demonstrate how these techniques could be applied to solve complicated problems in quantitative finance. Students will learn how to implement American options by using C++ data structures and class templates. o Multiple Inheritance o Virtual Inheritance o Class Templates o Computing Option Price via Black-Scholes Formula Implementation of Non-linear Solvers in C++ This unit will use C++ function pointers, virtual functions, function templates, and design patterns to implement nonlinear solvers. o Bisection Method o Newton-Raphson Method o Function Pointers o Virtual Functions o Function Templates o Computing Implied Volatility Monte Carlo Methods This unit cover basics of Monte Carlo simulations for path-dependent options, with emphasis on practical issues such error analysis, variance reduction and algorithm updates. o Path-dependent Options o Valuation o Pricing Error o Greek Parameters o Variance Reduction o Path-dependent Basket Options Financial Numerical Recipes in C++ This unit will give students a comprehensive demonstration of C++ implementation of a variety of numerical methods for bond pricing and term structure. o Bond Pricing Present Value Bond Price Yield to Maturity Duration Measuring Bond Sensitivity to Interest Rate Changes Convexity of a Bond 3

o o o Continuously Compounded Interest Term Structure of Interest Rate The Term Structure as an Class Flat Term Structure Linear Interpolation Interpolated Term Structure Class General Term Structure & Continuous Compounding Term Structure Models The Nelson Siegel term structure approximation Cox Ingersoll Ross Futures Algorithms Pricing of futures contract Working with Historical and Market Data This unit will let students gain an understanding of financial market data processing. It will teach student how to integrate Excl in a C++ application, and analyze historical market data from Access database for trading in a C++ program. In addition, it will demonstrate to students how to fetch historical market data from Yahoo Finance using libcurl in C++. o Communication between C++ and Excel Object Model in Excel Technical Details of C++ Interfacing to Excel Two Main Function Entities of Excel Driver Package Singleton Design Pattern used by ExcelDriver Option Values and Sensitivities in Excel o Access Market Data using libcurl in C++ Handle the Easy libcurl. Configure Microsoft Visual Studio for Using LibCurl Fetch historical stock data from Yahoo Finance Financial Trading System Development This unit is to introduce students the concepts, terminology and code structures required to develop trading applications. It will also cover technology and tools for high frequency trading and dark pool. o Automated Trading Systems o Building Trading Systems o Automated Trading System Classes o Single-Threaded, Technical Analysis System o Multithreaded, Statistical Arbitrage System o High Frequency Trading US Equity Share Volume by Market Participant US Equity Trading by Market Participant Challenges in High-Frequency Trading 4

HFT Technologies Dark Pools HFT Tools Flash Orders Sponsored Access Large Scale Financial System Design & Development This unit will explain the process of decomposing large systems into physical hierarchies of smaller, more manageable components, and the motivation for following good physical as well as logical design practices. In addition, it will show students a comprehensive top-down approach to the logical design of individual components for large scale financial projects. o Large Scale C++ Software Design Motivation CCD Linkage Extern Templates Insulation Levelization Design for Testability Metrics and Tools o Software Development Cycle Ad-hoc Development Lifecycle Stages Benefits and Limitations of Lifecycle Models Code-and-fix Model Waterfall Model Spiral model Risk Oriented Staged Delivery Model Evolutionary Prototyping Model Design-to-Schedule o Trade System Development Cycle Key Ideas in K/V Software Methodology Advantages of K/V Development K/V Trading System Development Stages Financial Computation in Java This unit will introduce students to Java programming environment and present the main characteristics of Java, based on their knowledge of C++. Students will rewrite the Option Pricer in Java. o The Java Development Environment o The Difference between C++ and Java o The Characteristics of Java Language o Implement CCR Pricer in Java 5

Advanced Java Programming for Financial Issues This unit will introduce students to several advanced topics in Java programming and show how use Java multi-thread application for processing large amount of financial data efficiently and how to Java networking programming to access market data from Internet. o Networking Programming o Multi-threading Programming o The Event Driven Programming Paradigm o Applets & Programming Graphics Interface in Java Course Team Projects: Students are required to do class projects in groups of 4 members. Groups once formed cannot be changed midway through the project. The team lead is responsible to facilitate the planning of the project, and the entire team will plan the project under the guidance of your team leader. Planning involves identifying what should be done (tasks), who should do it (resources), when tasks should be done (time frames) and how tasks are best sequenced (dependencies). Each team will submit project report and source codes tar/zipped via email before the deadline. The project reports should include a brief executive summary, the project design approach, design choices and implementation specifics. All the teams are requested to present and demonstrate their projects. The details of the team project will be announced and posted in our course site. 6