In order to build a successful, Java-based application it is important to have a clear understanding of the principles underlying the various financial models. Those models guide the application designer in choosing the most appropriate Java data structures and implementation strategy. This book describes the principles of model building in financial engineering and explains those models as designs and working implementations for Java-based applications. Throughout the book a series of packaged classes are developed to address a wide range of financial applications. Java methods are designed and implemented based on the most widely used models in financial engineering and investment practice. The classes and methods are explained and designed in a way which allows the financial engineer complete flexibility. The classes can be used as off-the-shelf working solutions or the innovative developer can re-arrange and modify methods to create new products