Very simple calculator to find the value of a European call option using the Black-Scholes formula – Black Scholes Calculator
JQuantLib open source library for quantitative finance
If you are an active trader and consider Java, eventually you will be interested by JQuantLib http://www.jquantlib.org/
In a nutshell, it is an open source library for quantitative finance, written in 100% Java, which aims to ‘port’ QuantLib from C++ to Java,
keeping exaclty the same API (as much as possible) and performing very closely to the C++ implementation (QuantLib).
Helpful Hints for Interviewing Experienced QA/Testing Candidates
Test managers often hold brief phone interviews to screen out candidates for QA/testing positions. With resume in hand, which the test manager has probably not even reviewed, before the interview commences the test manager is expected to determine within an hour or less whether the interviewed candidate would be a good fit for the project. Trying to evaluate in such a short period time a candidate’s ability to perform the project’s testing and QA tasks can be an inexact science. It can also be a subjective undertaking if the test manager fails to ask the appropriate questions from the interviewing candidate. Even relying on a resume to determine the candidate’s aptitude for a position is unreliable since many candidates embellish their resumes.
A recommended approach for interviewing candidates is to draft a specific list of questions before the interview begins that are pertinent to the position that needs to be filled. These questions should be based on the candidate’s QA accomplishments and skill sets as documented in the resume. Below are some sample questions that can help demonstrate a candidate’s experience in the areas of quality assurance, and also their creativity and ability to comprehend basic testing concepts. The questions below can serve as criteria to screen out inexperienced candidates during the interviewing process.
Describing Testing/QA Terms
An experienced testing candidate with several years of experience will exhibit knowledge and understanding of well-established testing principles and testing terminologies. It behooves the test manager to ask the testing candidate to describe these concepts. Some suitable examples would be:
What is the objective of a peer review?
What is the Unified Modeling Language?
What are the components of a test plan?
What are the benefits of automated testing?
What are the benefits of Configuration Management?
What are the characteristics of a good test requirement?
What is a requirements traceability matrix is and why it is necessary?
What is the criterion for composing a test readiness review list (TRR)?
Provide descriptions for testing approaches (i.e. white box versus black box, etc).
The test manager needs to ascertain if the testing candidate is familiar with industry accepted terminologies that are commonly used within the project where the tester is being considered.
Thinking On Their Feet
In addition to understanding the testing requirements, a good testing candidate should have creativity and ingenuity when testing a software application. A tester should always be alert to potential scenarios that could cause an application to fail or yield defects and/or errors; even if such scenarios are not documented or presented in requirements. A thorough tester executes a particular test scenario with different sets of data, and conducts boundary testing to ensure that an application would not be deployed into production with overlooked problems.
A suggested question to discern a candidate’s testing meticulousness is to have a candidate provide use cases and test cases for a commonly used machine, or a self service application. An example would be: what test cases and use cases can the candidate think of for operating a beverage dispensing machine, or for purchasing books via a website. The candidate should generate an extensive list of test cases and use cases for the two aforementioned examples.
Development of Test Scenarios and Test Scripts A well written test scenario has information about: pre-conditions, post-conditions, traceability to a requirement, description, identification of authorship, a peer review and sign off section, roles to be tested, etc. A test script or test procedure on the other hand has detailed test steps with valid data values and expected results for each test step. In addition, a test script provides information about the test execution results for “passes/failures” and mapped requirements for the test step.
The test manager can have the tester provide information as to how test cases and test scripts were documented at the previous project. What level of detail was presented for the test cases and test scripts? What exactly was documented for the test cases and test scripts? Another suggestion is to have the tester send a sample test case and test script that he/she documented at a previous project for review. A well-documented test case and test script will demonstrate the tester’s attention to detail.
Life Cycle Methodologies
An experienced tester should have experience working with one or more IT methodologies such as waterfall spiral, evolutionary, incremental, rapid prototyping, etc. Some methodologies are more appropriate when requirements are well known/defined, or when requirements are not well known, or when the project has high risks, etc. The tester vying for the position should understand what the differences are between the main software development lifecycle methodologies. The test manager can present the tester with different hypothetical scenarios of IT projects and ask the tester what methodology would be most fitting based on the presented scenario.
Test Procedures and Test Standards
What testing standards and procedures the candidate has been exposed to is of paramount importance in determining whether the candidate would either be a good fit or adapt to a new testing environment. Did the candidate come from a regimented and disciplined type work environment like a CMM work environment with repeatable and defined processes? Or, did the candidate work in a chaotic test team that did not have any standards, procedures or defined processes?
Testers that come from a loose testing environment sometimes have difficulty adjusting to regimented testing environments that have defined processes and standards for things such as: lessons learned, test plans, naming standards, version control, test case templates, test execution matrix, test logs, test folders, reporting of test results, etc. Conversely, a tester that follows strict testing standards and procedures may struggle in a work environment that does not have defined processes, well documented scenarios, no structure for test cases, or templates for test scripts, etc. Questions that identify what the candidate’s experience is with testing standards and procedures are critical for assessing how well the candidate would adjust to the current QA environment.
Defects
It’s advisable to learn what sorts of defects a tester has identified and reported on in previous projects. Based on the candidate’s answers, the test manager can learn whether the tester focuses on cosmetic/minor defects or defects that are show stoppers and would have caused havoc for a released or production deployed application.
The test manager can have the candidate expound on a significant defect that was discovered and, what the impact of the defect would have been had the candidate not caught it. In particular, the test manager can focus on the tester’s approach for identifying the defect and how the tester re-tested the defect subsequently leading to the closing of the defect.
Test Script Automation Many candidates list in their resumes that they have experience with various automated testing tools. However, when confronted with technical questions about their experience with automated testing tools many candidates respond that their experience with automated test tools is limited to capturing and playback. Candidates that manifest to have only recorded and played back test scripts are in fact devoid of significant experience with automation test tools. Even candidates who claim to hold certifications with test tools should have their background probed and examined with technical questions.
The test manager should find out whether the candidates understand what a data driven test script is, how to create a parameterized test script, and why it would be necessary to construct a data driven script. The test manager should also ask the candidates to explain what data correlation is, how to create a driver script, how to synchronize scripts, why it is necessary to synchronize scripts, and how to report the execution results from a test script. Other key questions would be techniques for identifying and verifying recorded objects including providing examples of object’s attributes that can be verified, how to create checkpoints, how to debug an automated test script, and in what modes a recorded script can be re-played. The candidate should also know how to map and learn custom objects that the recording test tool does not identify or recognize.
The test manager can present more technical questions based on the nuances of the recording test tool that is present at the project site. The main objective of technical questions is to ensure that a candidate has experience that goes beyond merely recording and playing back scripts.
Software Testing
Summary
In the simplest terms, Software Testing is a process to ensure the accuracy, completeness and quality of any developed software.
Rather than limiting this to a formally technical process used to investigate and measure quality of the developed computer software in terms of correctness, completeness and security, it is imperative to test the software components and the software as a whole for integrity, capability, reliability, efficiency, portability, maintainability, compatibility and usability of the software. This is particularly important in an operating environment where it is planned to be implemented, and testing will need to adhere to the technical requirements as described under ISO standard ISO 9126.
Test Management
Planning a Test Project
A test project includes the creation of a test plan, collecting test scenarios, writing test cases, executing test cases, evaluating and reporting the test results and managing the software testers.
It is also imperative to ensure which items are in the scope of testing and which are out of scope, maintaining scheduling and training. We need to establish a strategy to be followed in each of the testing phases. All of these phases come under test management.
Managing Test Data
Effective testing requires the presence of adequate and suitable test data. Where test results are specified, it is presumed that the inputs will be consistent from text execution to execution. In situations where automated testing methodologies are employed, a standardized test bed of data may be required to facilitate the automated assessment of “passed”.
Depending on the test being executed, test data may be copied from a production system, or may be developer generated, or a combination of both. In situations where extreme testing precision is required, the test data may be specifically created, saved and copied into the environment at the outset of every testing cycle to ensure a consistent test execution.
Test data needs to be considered when developing some of the larger tests (User Acceptance Testing, Regression Testing and System Testing). As plans are developed for test execution, the creation, modification or even restoration of test data are critical concerns that must be effectively managed.
Testing Methodology
The best approach is to conduct end to end testing. Testing methodology is applied in two major phases: Functional Testing and Non-Functional Testing.
But also the context where a system is deployed will influence the Testing Methodology. There will be a difference between tests for a commercial software package to be sold to consumers and embedded software or a server solution for a website of a one-off logistics solution.
Functional Testing
1. Unit Testing : Testing each component of the application separately.
2. System Testing : Testing the system as a whole.
3. Integration Testing : Testing the system with other interfaces.
4. Regression Testing : Testing changes made to the system and ensuring that new problems are not introduced as a result of the changes.
5. User Acceptance Testing : Testing the system to ensure it meets the user requirements.
6. Sociability Testing : Testing the system with other applications in the platform.
7. Security testing : Test the software from external damages it meets the user requirements.
8. Performance testing : Testing that is performed to determine how fast some aspect of a system performs under a particular workload.
Non-Functional Testing
1. Usability Testing : Usability testing focuses on determining if the product is easy to learn, satisfying to use and contains the functionality that the users desire.
2. Stress and Performance Testing : The purpose of this testing is to predict the system behavior and performance.
3. Accessibility Testing : to determine the extent to which the end user interacts with the application.
Automated Testing
One of the purposes of automated testing is to ease regression testing. Once the system is stable, then automated testing can be started.
Once automated tests exist, they can and should be used to help build better and more stable software ready for any manual testing and user acceptance testing.
Preferrably, automated tests can be run overnight on software builds, rather than the live version. This will help give a clearer indication to the stability of the build the following morning. Hopefully, leading to more time being available for the rest of the testing and development.
Test Framework
A set of ideas and tools that revolve around optimizing the test-effort. When implemented using the supporting tools, these ideas render the maintenance of the automated testing scripts or other entities easier.
JUnit Test Tool
The JUnit test tool is designed to assist in unit testing of java objects. It can be useful in testing a non-java environment (eg. by wrapping the test target inside a java object).
From Main Frame testing to ebusiness testing
* Testing the MainFrame System
* Testing the Client Server Application
* Testing the Internet Application
* Testing Web Services
Component Performance Criteria
Testing is a major part of agile development processes, but until recently, the vast majority of effort has been focused on functional testing. In the world of integrated systems, many projects are undertaken to speed up processes. Traditional development processes teach that optimisation should not be carried out until a performance problem is identified, thus aiding maintainability. Unfortunately, this has led to the postponement of performance testing until after integration testing. This can often make it too late to address fundamental problems as time is short or key resources have moved on to other projects.
Component Performance Criteria is about breaking down the performance requirement for the whole system and attributing it to individual components. Admittedly, it does not guarantee the absence of performance problems later in the project, but it will highlight if they are already there.
Example: if a system must process five transactions per second, and consists of 10 major components, and an individual component has been measured to take 0.5 seconds to process a single transaction and can only process one transaction simultaneously, a bottleneck is already present and resolution of the problem can begin immediately.
Optimally, performance testing should be carried out regularlly with the fewest potential issues. This is effectively done with automation.
Software Development Stages
Domain Analysis
It is usually the first step in attempting to design a new piece of software. It involves the investigation of the area such as: banking, marketing, retailing, insurance etc., where the software is to be employed.
Know The Client
The holy grail of any project, satisfy your client. For that you need to know, what is in his mind regarding his requirements. He is the best person to tell you, what they want. While skilled and experienced software engineers can fill in any incomplete, ambiguous or contradictory information.
Specification
Specification means precisely describing the software to be written in a rigorous way.
Software architecture
The architecture of a software system refers to an abstract representation of that system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed.
Implementation (or coding)
Reducing a design to code may be the most obvious part of the software engineering job, but it is not necessarily the largest portion.
Testing
Testing of parts of software is done by a software engineer to check out any bug or error.
Documentation
An important (and often overlooked) task is documenting the internal design of software for the purpose of future maintenance and enhancement.
Software Testing Strategies
It is impractical and often impossible to find all the errors in a program. This fundamental problem in testing thus throws open the question as to what would be the strategy that you would adopt to test. Two of the most prevalent strategies include black-box testing and white-box testing.
Black-Box testing
* Examines the fundamental aspect of the system with little or no regard to the internal logical structure of the system.
* Demonstrates that software functions are operational and the input is properly accepted and output is correct produced.
* Integrity of the external information (eg. Database) is maintained.
BLACK BOX TESTING STRATEGY – would involve different types of Testing. When the Build is for the first time to test – we start with Validations and Verifications wrt the Scope/SRS document or Mapped Test Cases. We even start tracing the Traceability Matrix. We mark the observations as in Severity and Priority and publish a Testing Report. Next Build onwards we start with Smoke Testing Phase – if test cases report FAIL STATUS then we reject the build saying it Non Testable. If the cases are of PASS STATUS we start with System Testing, Include Regression Testing – verifying the old bugs and though Impact Analysis of each Bug. If new functionalities are there then we do Integration Testing. IN ALL the Builds we incorporate Usability Testing – checking UI, Messages, and other User perspective points. We incorporate Database Testing – through SQL Commands to check the Data Driven Scenarios.Last but not the least cover the Security Testing phase – especially in cases of web applications.
White-Box testing / Glass-Box testing
* Examines the fundamental aspect of the system with complete information and access to the internal logical structure, code and algorithms.
* Logical paths are tested. Test cases which tests the loops (DO LOOP) and conditions (IF STATEMENTS) are explicitly designed and used to test the logical paths.
Stock Trading Open Source Technologies
AIOTrade
http://sourceforge.net/projects/humaitrader
http://blogtrader.org/
AIOTrade (formerly Humai Trader Platform) is a free, open source stock technical analysis platform built on pure java. Its pluggable architecture is also ideal for custom features extending, such as indicators and charts. It Requires JRE 1.5.0+.
Auge
http://sourceforge.net/projects/auge
http://auge.sourceforge.net/
Auge is an easy-to-use financial portfolio management application. Auge will help you monitor and analyze your stock and mutual fund positions, providing powerful insight into your entire investment portfolio.
Data Visualizer
http://sourceforge.net/projects/dataviews
http://dataviews.sourceforge.net/
Modular environment for graphical visualization of stock market type data
CCAPI2
http://www.activestocks.eu/?q=node/1
http://www.activestocks.eu/
The open source finance library on the net.
A java library for automated stock trading, sub fields of financial engineering and automated financial
instrument analysis. A java financial library. The CCAPI It is also a algorithm trading application framework.
CCAPI is the premium open source java library for developing stock exchange related applications on the net.
Various common indicators, methods for creating charts and direct trade interfaces to selected brokers are
available for your fingertips.
EclipseTrade
http://sourceforge.net/projects/eclipsetrader/
http://eclipsetrader.sourceforge.net/
Stock exchange analysis system, featuring shares pricing watch, intraday and history charts with technical analysis indicators, level II/market depth view, news watching, automated trading systems, integrated trading. Based on Eclipse RCP framework.
JSystemTrader
http://www.myjavaserver.com/~nonlin…stemTrader.html
JSystemTrader is a fully automated trading system (ATS) that can trade various types of market securities during the trading day without user monitoring.
All aspects of trading, such as obtaining historical and real time quotes, analyzing price patterns, making trading decisions, placing orders, monitoring order executions, and controlling the risk are automated according to the user preferences.
The central idea behind JSystemTrader is to completely remove the emotions from trading, so that the trading system can systematically and consistently follow a predefined set of rules.
Market Analysis System
http://sourceforge.net/projects/eiffel-mas
http://eiffel-mas.sourceforge.net/
System for analysis of financial markets using technical analysis. Includes facilities for stock charting and futures charting, as well as automated generation of trading signals based on user-selected criteria. Operates on both daily and intraday data.
Marketcetera
http://trac.marketcetera.org/
http://www.marketcetera.com/
Marketcetera LLC is building a new software platform committed to providing fast, flexible and reliable securities trading tools to financial services professionals. Our mission is to make world-class order-management and risk-management software available and affordable to individuals and to institutions of all sizes. Marketcetera focuses on building the key trading functions that are common to all organizations, thus freeing our clients to concentrate on proprietary trading algorithms and other specialized software that provide a competitive advantage.
Matrex
http://sourceforge.net/projects/matrex/
http://matrex.sourceforge.net/
Use Matrex, the un-spreadsheet, instead of spreadsheets when working with vectors (e.g. database data, charts) and matrices. The perfect desktop tool for mathematical, statistical models and complex calculations. Adapters to matlab, scilab, octave, R.
Merchant of Venice
http://sourceforge.net/projects/mov
http://mov.sourceforge.net/
Venice is a stock market trading programme that supports portfolio management, charting, technical analysis, paper trading and genetic programming. Venice runs in a graphical user interface with online help and has full documentation.
Open Java Trading System
http://sourceforge.net/projects/ojts/
http://ojts.sourceforge.net/
The Open Java Trading System (OJTS) is meant to be a common infrastructure to develop (stock) trading systems. There are four parts: gathering of raw data over the internet, recognition of trading signals, a visualisation module and trading with banks.
Oropuro trading system
http://sourceforge.net/projects/oropuro
http://www.oropuro.org
Complete technical analysis & trading system, full set of features: retrieve, analyze EOD stocks data; manage multiple portfolios; technical analysis & graphical rendering; neural networks for generation of trading signals; support trader community,
SFL Java Trading System Enviroment
http://sourceforge.net/projects/sfljtse
http://www.sflweb.org/index.php?blog=sfljtse
The SFL Java Trading System Enviroment is a java application built on KISS principle (Keep It Simple,Stupid) and its aim is to provide a fast and platform indipendent infrastructure to develop and execute trading systems.
TrueTrade
http://code.google.com/p/truetrade/
http://groups.google.com/group/TrueTrade-Gen
http://groups.google.com/group/TrueTrade-Dev
TrueTrade is a framework for developing, testing and running automatic trading systems. It is intended to provide support for a wide range of orders, financial instruments and time scales. It provides tooling for backtesting the strategy against historical data, and a separate tool for running the strategies in live mode. Strategies currently require some Java coding experience, though this may change at a later date.
It is currently in pre-alpha mode and should not be used against a live trading account.
Open Source Indicators, Components and Their Documentation
Did not post for a while, because was really slammed with work. But could not resist from sharing this very valuable online resource
http://www2.wealth-lab.com/WL5WIKI/MainPage.ashx
The Wealth-Lab Wiki hosts a Knowledge Base for Wealth-Lab Version 5 (.NET) as well as expanded documentation for Wealth-Lab Standard Indicators and TASC Indicators.
Open Source Code!
This Wiki also serves as our Community portal for open-source Indicators, Components, and their documentation.
Hedge Fund Accounting Software
This article will be about hedge fund accounting software providers. I will add to the article as the time goes and I get more information on this niche of hedge fund software industry.
From the top of my head can name a few companies that develop accounting software for hedge funds and FoHFs:
Cogency Softwre
FundCount
Advent
PennyItWorks
To be continued…