Saturday, August 2, 2008

Participants for FOREX Market

Unlike a stock market, where all participants have access to the same prices, the forex market is divided into levels of access. At the top is the inter-bank market, which is made up of the largest investment banking firms. Within the inter-bank market, spreads, which are the difference between the bid and ask prices, are razor sharp and usually unavailable, and not known to players outside the inner circle. As you descend the levels of access, the difference between the bid and ask prices widens (from 0-1 pip to 1-2 pips for some currencies such as the EUR). This is due to volume. If a trader can guarantee large numbers of transactions for large amounts, they can demand a smaller difference between the bid and ask price, which is referred to as a better spread. The levels of access that make up the forex market are determined by the size of the "line" (the amount of money with which they are trading). The top-tier inter-bank market accounts for 53% of all transactions. After that there are usually smaller investment banks, followed by large multi-national corporations (which need to hedge risk and pay employees in different countries), large hedge funds, and even some of the retail forex market makers. According to Galati and Melvin, "Pension funds, insurance companies, mutual funds, and other institutional investors have played an increasingly important role in financial markets in general, and in FX markets in particular, since the early 2000s." (2004) In addition, he notes, "Hedge funds have grown markedly over the 2001–2004 period in terms of both number and overall size" Central banks also participate in the forex market to align currencies to their economic needs.

Banks:
The interbank market caters for both the majority of commercial turnover and large amounts of speculative trading every day. A large bank may trade billions of dollars daily. Some of this trading is undertaken on behalf of customers, but much is conducted by proprietary desks, trading for the bank's own account.

Until recently, foreign exchange brokers did large amounts of business, facilitating interbank trading and matching anonymous counterparts for small fees. Today, however, much of this business has moved on to more efficient electronic systems. The broker squawk box lets traders listen in on ongoing interbank trading and is heard in most trading rooms, but turnover is noticeably smaller than just a few years ago.

Commercial Companies:
An important part of this market comes from the financial activities of companies seeking foreign exchange to pay for goods or services. Commercial companies often trade fairly small amounts compared to those of banks or speculators, and their trades often have little short term impact on market rates. Nevertheless, trade flows are an important factor in the long-term direction of a currency's exchange rate. Some multinational companies can have an unpredictable impact when very large positions are covered due to exposures that are not widely known by other market participants.

Central Banks:
National central banks play an important role in the foreign exchange markets. They try to control the money supply, inflation, and/or interest rates and often have official or unofficial target rates for their currencies. They can use their often substantial foreign exchange reserves to stabilize the market. Milton Friedman argued that the best stabilization strategy would be for central banks to buy when the exchange rate is too low, and to sell when the rate is too high — that is, to trade for a profit based on their more precise information. Nevertheless, the effectiveness of central bank "stabilizing speculation" is doubtful because central banks do not go bankrupt if they make large losses, like other traders would, and there is no convincing evidence that they do make a profit trading.

The mere expectation or rumor of central bank intervention might be enough to stabilize a currency, but aggressive intervention might be used several times each year in countries with a dirty float currency regime. Central banks do not always achieve their objectives. The combined resources of the market can easily overwhelm any central bank.[4] Several scenarios of this nature were seen in the 1992–93 ERM collapse, and in more recent times in Southeast Asia.

Hedge Funds:
Hedge funds have gained a reputation for aggressive currency speculation since 1996. They control billions of dollars of equity and may borrow billions more, and thus may overwhelm intervention by central banks to support almost any currency, if the economic fundamentals are in the hedge funds' favor.

Investment Management Firms:
Investment management firms (who typically manage large accounts on behalf of customers such as pension funds and endowments) use the foreign exchange market to facilitate transactions in foreign securities. For example, an investment manager bearing an international equity portfolio needs to purchase and sell several pairs of foreign currencies to pay for foreign securities purchases.

Some investment management firms also have more speculative specialist currency overlay operations, which manage clients' currency exposures with the aim of generating profits as well as limiting risk. Whilst the number of this type of specialist firms is quite small, many have a large value of assets under management (AUM), and hence can generate large trades.

Retail forex brokers:
There are two types of retail brokers offering the opportunity for speculative trading. Retail forex brokers or Market makers.Retail traders (individuals) are a small fraction of this market and may only participate indirectly through brokers or banks. Retail forex brokers, while largely controlled and regulated by the CFTC and NFA might be subject to forex scams[5] [6]. At present, the NFA and CFTC are imposing stricter requirements, particularly in relation to the amount of Net Capitalization required of its members. As a result many of the smaller, and perhaps questionable brokers are now gone. It is not widely understood that retail brokers and market makers typically trade against their clients and frequently take the other side of their trades. This can often create a potential conflict of interest and give rise to some of the unpleasant experiences some traders have had. A move toward NDD(No Dealing Desk), And STP(Straight Through Processing) has helped to resolve some of these concerns and restore trader confidence, but caution is still advised in ensuring that all is as it is presented.

Others:
Non-bank foreign exchange companies offer currency exchange and international payments to private individuals and companies. These are also known as Foreign Exchange Brokers but are distinct from Forex Brokers as they do not offer speculative trading but currency exchange with payments. i.e. there is usually a physical delivery of currency to a bank account.

It is estimated that in the UK, 14% of currency transfers/payments are made via Foreign Exchange Companies[7]. These companies' selling point is usually that they will offer better exchange rates or cheaper payments than the customer's bank. These companies differ from Money Transfer/Remittance Companies in that they generally offer higher-value services.

Money Transfer/Remittance Companies perform high-volume low-value transfers generally by economic migrants back to their home country. In 2007, the Aite Group estimated that there were $369 billion of remittances (an increase of 8% on the previous year). The four largest markets (India, China, Mexico and the Philippines) receive $95 billion. The largest and best known provider is Western Union with 345,000 agents globally.

Introduction to Foreign Exchange Market

FOREX Markets
The foreign exchange (currency or forex or FX) market exists wherever one currency is traded for another. It is the largest and most liquid financial market in the world, and includes trading between large banks, central banks, currency speculators, multinational corporations, governments, and other financial markets and institutions. The average daily trade in the global forex and related markets currently is almost US$ 4 trillion.

The foreign exchange market is unique because of the following
( # ) Its trading volumes,
( # ) The extreme liquidity of the market,
( # ) The large number of, and variety of, traders in the market,
( # ) Its geographical dispersion,
( # ) Its long trading hours: 24 hours a day except on weekends (from 5pm EST on Sunday until 4pm EST Friday),
( # ) The variety of factors that affect exchange rates.
( # ) The low margins of profit compared with other markets of fixed income (but profits can be high due to very large trading volumes)
( # ) The use of leverage.

As such, it has been referred to as the market closest to the ideal perfect competition, notwithstanding market manipulation by central banks. According to the BIS, average daily turnover in global foreign exchange markets is estimated at $3.98 trillion. Trading in the world's main financial markets accounted for $3.21 trillion of this.

This $3.21 trillion in main foreign exchange market turnover was broken down as follows:

$1,005 billion in spot transactions
$362 billion in outright forwards
$1,714 billion in forex swaps
$129 billion estimated gaps in reporting

Of the $3.98 trillion daily global turnover, trading in London accounted for around $1.36 trillion, or 34.1% of the total, making London by far the global center for foreign exchange. In second and third places respectively, trading in New York accounted for 16.6%, and Tokyo accounted for 6.0%.

In addition to "traditional" turnover, $2.1 trillion was traded in derivatives.

Exchange-traded forex futures contracts were introduced in 1972 at the Chicago Mercantile Exchange and are actively traded relative to most other futures contracts. Forex futures volume has grown rapidly in recent years, and accounts for about 7% of the total foreign exchange market volume, according to The Wall Street Journal Europe (5/5/06, p. 20).

Foreign exchange trading increased by 38% between April 2005 and April 2006 and has more than doubled since 2001. This is largely due to the growing importance of foreign exchange as an asset class and an increase in fund management assets, particularly of hedge funds and pension funds. The diverse selection of execution venues such as internet trading platforms offered by companies such as First Prudential Markets and Saxo Bank have made it easier for retail traders to trade in the foreign exchange market.

Because foreign exchange is an OTC market where brokers/dealers negotiate directly with one another, there is no central exchange or clearing house. The biggest geographic trading centre is the UK, primarily London, which according to IFSL estimates has increased its share of global turnover in traditional transactions from 31.3% in April 2004 to 34.1% in April 2007. RPP
The ten most active traders account for almost 73% of trading volume, according to The Wall Street Journal Europe, (2/9/06 p. 20). These large international banks continually provide the market with both bid (buy) and ask (sell) prices. The bid/ask spread is the difference between the price at which a bank or market maker will sell ("ask", or "offer") and the price at which a market-maker will buy ("bid") from a wholesale customer. This spread is minimal for actively traded pairs of currencies, usually 0–3 pips. For example, the bid/ask quote of EUR/USD might be 1.2200/1.2203 on a retail broker. Minimum trading size for most deals is usually 100,000 units of currency, which is a standard "lot".

These spreads might not apply to retail customers at banks, which will routinely mark up the difference to say 1.2100 / 1.2300 for transfers, or say 1.2000 / 1.2400 for banknotes or travelers' checks. Spot prices at market makers vary, but on EUR/USD are usually no more than 3 pips wide (i.e. 0.0003). Competition is greatly increased with larger transactions, and pip spreads shrink on the major pairs to as little as 1 to 2 pips.

Thursday, July 31, 2008

Quality By Software Engineering Perspective

Attributes of a Good Quality Software:

1) A good quality software product:
Is the one which meets all the requirements when viewed through customer’s perspective. Hence the prime definition of software quality is meeting customer needs or understanding customer requirements, expectations and exceeding these expectations. If using the software product satisfies the customer, then it is a good quality product otherwise it is not.

2) Customer needs are not always translated into his requirements:
Although the software creation team tries their level best to accurately capture the customer needs into customer requirements; in spite of all these efforts, sometimes the developers fail in their endeavor due to 1) Lack of accurate communication of the exact needs by the customer 2) Misunderstanding of the requirements as captured by the developers.

3) A Software Free from Bugs or Defects may not always be a Quality product:
Quality of a software product is not merely the absence of bugs / defects in it. Even if it has been developed without any bugs; however if it is difficult to learn and tiresome to operate, then it can’t be called a quality product.

4) A Software may be termed as a Quality product in spite of presence of some Bugs or Defects in it:
Acceptance of few known bugs in the software is a subjective term depending upon the nature of the bugs. If the software product is released to the customer very well within the constraints of budget, time & resources, & it contains some known open bugs, which will not cause any loss to the customer; then also it can be termed as a quality product. However for critical products aim of ensuring 100% or zero defect approach becomes necessary.

5) Maintaining quality of a software product is not only the responsibility of software testers:
Producing right quality software product is the responsibility of everyone involved in the chain including the customer. Role of a software tester is to identify the deviations and report them to the development team effectively.

Software Tester has a prime role to validate the correctness, reliability, usability and interoperability of the product and report the deviations.

Software tester may not be able to validate certain important quality related factors like maintainability, reusability, flexibility & portability etc. etc.

6) Software tester should endeavor to detect bugs in the software right from the beginning itself:
As the software moves into advanced stages of its development, the cost of fixing the bugs in it also keeps on increasing exponentially.

For example, If during an advanced stage of system testing of software, any bug is found in its basic design itself, this could lead to an extremely costly process of fixing the bug. In addition to this may necessitate amendments in the design & the basic code itself.

Hence detection & rectification of bugs during initial stages of design are quite economical.

7) Software Quality Factors are essential attributes, absence of which can pose threat to the success of the software:
For any software product following are the important quality factors, the priority and importance of which may vary from software product to product. For example, factors like flexibility and reusability gain prime importance, if the software under development needs to be changed quite frequently.

#) Flexibility: An effort required to modify an operational program.

#) Reusability: Extent to which a program can be used in other applications.

#) Correctness: Extent to which the program satisfies the desired requirements.

#) Reliability: Extent to which the program can be expected to perform its intended functions with desired precision.

#) Efficiency: The amount of computing resources and code required by the program to perform a particular function.

#) Integrity: Extent to which unauthorized persons get prevented / controlled from accessing the software or its data.

#) Usability: Effort required in learning, operating, preparing inputs, and interpreting the outputs of a software program.

#) Maintainability: Effort required in locating and fixing an error in an operational program.

#) Testability: Effort required in testing a program to ensure that it performs in accordance with its intended function.

#) Portability: Effort required to transfer the software from hardware of one configuration to the other.

#) Interoperability: Effort required to couple one system with the other.

8) Cost of software quality refers to the total expenditure incurred on firstly preventing the errors, secondly identifying the errors and lastly correcting these errors:
Cost of quality can be brought down if the software developers are extra vigilant in developing their application and before passing it into testing phase & endeavor to ensure that the application is either free of defects or has bare minimum number of defects. However such activities aimed at preventing errors from going into the product involve additional efforts & costs. This calls for added concentration on building efficient process of development and keeping on continuously improving it by identifying weaknesses therein. The benefits of such extra efforts may not be immediate, however in the long run cost of software quality ought to come down significantly.

9) Cost of fixing a software bug is possible to be brought down, if the bug is able to be detected during the early stages of development:
As the software moves into advanced stages of its development, the cost of fixing the bugs in it also keeps on increasing exponentially. Hence practice of life cycle testing becomes necessary.

10) Apart from testing of the software product, repeated inspections, design reviews & code walkthroughs are effective quality control measures.

An Introduction to Software Testing

Software testing is the process used to assess the quality of computer software. Quality is not limited to, the process of executing a program or application with the intent of finding software bugs.


Software Faults:The software faults occur through the following process. A programmer makes an error (mistake), which results in a defect (fault, bug) in the software source code. If this defect is executed, in certain situations the system will produce wrong results, causing a failure. Not all defects will necessarily result in failures. A defect can turn into a failure when the environment is changed. Examples of these changes in environment include the software being run on a new hardware platform, alterations in source data or interacting with different software.


Software Quality:Quality is not an absolute term; it is value to some person. With that in mind, testing can never completely establish the correctness of computer software. Functional dimensions of quality like Usability, Scalability, Performance, Compatibility, Reliability are highly subjective terms having significant value to one person but may be intolerable to the other.

Complexities in Software Testing:A problem with software testing is that testing all combinations of inputs and preconditions is not feasible when testing anything other than a simple product. This means that the number of defects in a software product can be very large and defects that occur infrequently are difficult to find during testing.

Approach to effective Software Testing:An effective approach to the process of testing of complex products involves "Investigation" or "Questioning" a product in order to evaluate it. Here "Questions" or "Investigations" are the activities which a tester tries to perform on the software product, and the product answers with its behavior in reaction to the probing done by the tester.

Software testing is successful only if used in association with "Verification" and "Validation"

"Verification" asks a question: Have we built the "Software - Right" (i.e. Does it match the specifications)?

"Validation" asks a question: Have we built the "Right – Software" (i.e. Is this what the customer wants)?


Objectives of Software Testing:
1) Testing is a process of executing a software program with the intention of finding an error.
2) A good test case is one that has a high probability of finding an as yet undiscovered error.
3) A successful test is one that uncovers an as yet undiscovered error.


Outcome of Software Testing:
Testing should systematically uncover different classes of errors in a minimum amount of time and with a minimum amount of effort. A secondary benefit of testing is that it demonstrates that the software appears to be working as stated in the specifications. The data collected through testing can also provide an indication of the software's reliability and quality. But, testing cannot show the absence of defect -- it can only show that software defects are present.

What are the CMM Level of Companies

Various Capability Maturity Levels – CMM Levels for Companies

The Capability Maturity Model defines following levels for the organizations depending upon the processes being followed by them.


CMM Level 0 - Companies:
CMM – Level 0 companies are the ones, which do not have any structured Processes, Tracking Mechanisms & Plans. It is left to the developer or any person responsible for Quality to ensure that the product meets the expectations.

CMM Level 1 - Companies: Work is Performed Informally

CMM – Level 1 companies are the ones, where the teams put in extra work hard to achieve the results. Such companies do not have any structured Tracking Mechanisms & defined Standards. The software development work is performed informally but it is not properly documented.

CMM Level 2 - Companies: Work is Planned and Tracked

CMM – Level 2 companies are the ones, where some planned processes within the teams exist and the team can repeat them or follow these processes for all projects being handled by them. However these process are not standardized across the organization. All the teams within the organization do not follow the same standard.

CMM Level 3 - Companies: Work is Well-Defined

CMM – Level 3 companies are the ones, where the processes are well defined and are followed throughout the organization.

CMM Level 4 - Companies: Work is Quantitatively Controlled

CMM – Level 4 companies are the ones, where the processes are well defined and are followed throughout the organization. In such companies, Goals to be achieved are well defined and the actual output is measured. Such companies have proper mechanism to collect the Metrics, hence future performance can predicted.

CMM Level 5 - Companies: Work is based upon Continuous Improvement

CMM – Level 5 companies are the ones, which have well defined processes which are properly measured. Such organizations have good understanding of IT projects which have good effect on the Organizational goals. Level – 5 organizations are able to continuously improve their processes based upon such understanding.

Introduction to CMM & CMMI

It is the prime requirement of any Quality Software that it should reasonably be bug-free, delivered on time and within budgetary constraints. It should meet the defined requirements or expectations, and should be maintainable. Therefore to produce error free and high quality software there arises a great need that certain internationally recognized standards be followed.

Quality Standards: Various Quality Standards are available

ISO 9001: 2000 - is Quality Management System Certification. To achieve this, an organization is expected to satisfy the requirements defined in CL. 1 to 8 of ISO 9001: 2000

Six Sigma - is a process improvement methodology focused on reduction in variation of the processes around the mean. Its objective is to make the process defect free.

CMM - CMM means - Capability Maturity Model. It is a standard for assessing and improving processes related to software development. The software community had developed it in the year 1986 under the leadership from SEI – Software Engineering Institute. It is a process capability maturity model related to software applications & it helps in defining and understanding of the processes followed by the organization. It provides guidance to the measurement of software process maturity and helps process improvement programs. CMM had been devised as a tool for objectively assessing the ability of government contractors' processes to perform a contracted software project.

CMM emphasizes on the appropriateness of the Process followed for developing a software product. CMM aims to ensure that the process is capable to produce error free product. Process driven companies are more successful as compared to people driven companies. Hence a company needs to have a good process for software development for being successful.

Advent of CMMI: In CMM, the entire emphasis had been on the software practices. However software was becoming a major factor in the systems which were being built that it had become virtually impossible to logically separate the two disciplines of systems & practices. Hence SEI redirected all its effort toward the integration of system and software practices which led to the birth of CMMI which stands for Capability Maturity Model Integration.

CMMI has now superceded CMM. The older term CMM has been renamed now to Software Engineering CMM (SE-CMM).

Prior to going deep into CMM or CMMI, lets understand what a software process is.

A Software Process can be defined as set of activities, methods, practices and transformations which people employ to develop and maintain software and the associated products. The quality of a software product is essentially determined by the quality of the processes employed to develop and maintain it.


Five Maturity Levels of SEI CMM: Continuous process improvement is based on many small but evolutionary steps. CMM organizes these steps into 5 maturity levels. Each maturity level comprises of a set of process goals which, upon getting satisfied, stabilizes an important component of the software process. Organizing the goals into different levels helps the organization to prioritize their improvement actions. The five maturity levels of CMM are as under.

1) Initial: The software process is characterized as ad hoc, and occasionally even chaotic. Few processes are defined, and success depends on individual effort and heroics.

2) Repeatable: Basic project management processes are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier successes on projects with similar applications.

3) Defined: The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organization. All projects use an approved, tailored version of the organization's standard software process for developing and maintaining software.

4) Managed: Detailed measures of the software process and product quality are collected. Both the software process and products are quantitatively understood and controlled.

5) Optimizing: Continuous process improvement is enabled by quantitative feedback from the process and from piloting innovative ideas and technologies.

Detailed Information is available on http://www.sei.cmu.edu/cmmi/

Classification Among Software Testing

Broad Differentiation between Levels of Software Testing versus Types of Testing versus Techniques of Testing are:

Levels of Testing: Various levels of testing are
  • Unit Testing
  • Integration Testing
  • System Testing
Types of Testing : classified on the basis of intent of testing
  • Acceptance Testing
  • Performance Testing
  • Load Testing
  • Regression Testing
Techniques of Testing: are broadly categorized as under
  • Black box Testing
  • White box Testing