system administration: prime

102
FIS Cross-Asset Trading and Risk Platform Formerly known as Front Arena System Administration: PRIME PRIME 2021.2 Refer to the FIS Client Portal for a complete list of valid releases. FCA1086-42 July 2021

Upload: others

Post on 18-Dec-2021

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System Administration: PRIME

FIS Cross-Asset Trading and Risk Platform Formerly known as Front Arena

System Administration: PRIME PRIME 2021.2 Refer to the FIS Client Portal for a complete list of valid releases.

FCA1086-42

July 2021

Page 2: System Administration: PRIME

Notices

Copyright Copyright © 2021. By Fidelity National Information Services (FIS).

FIS Cross-Asset Trading and Risk Platform Formerly known as Front Arena

FIS, the FIS logo, and Front Arena are trademarks or registered trademarks of FIS, or its subsidiaries in the U.S. and other countries. All other trade names are trademarks or registered trademarks of their respective holders.

This document and the software described within are copyrighted with all rights reserved. No part of this document may be reproduced, transcribed, transmitted, stored in an electronic retrieval system, or translated into any language in any form by any means without prior written permission of FIS. FIS makes no warranties, express or implied, in this document. In no event shall FIS be liable for damages of any kind, direct or indirect, arising out of the use of this document or the information contained within.

Confidentiality statement This document contains information that is confidential or proprietary to FIS (or its direct or indirect subsidiaries). By accepting this document, you agree that: (1) if there is any pre-existing contract containing disclosure and use restrictions between your company and FIS, you and your company will use this information in reliance on and submit to the terms of any such pre-existing context; or (2) if there is no contractual relationship between you or your company and FIS, you and your Company agree to protect this information and not reproduce, disclose, or use the information in any way, except as may be required by law.

Disclaimer The screens and illustrations are representative of those created by the software, and are not always exact copies of what appears on the computer monitor. Companies, names, and data used in examples herein are fictitious unless otherwise noted. The material in this document is for information only, and is subject to change without notice. FIS reserves the right to make changes in the product design and installation software without reservation and without notice to users.

Supplementary legal notice for product documentation Any information expressed in this document regarding standard practice or conventions in financial markets or in the administration or functioning of banks is included to provide context to information provided about our products and services and thereby clarify how these products and services function. Such information is expressed in good faith but FIS accepts no liability for its accuracy or validity. Users are responsible for verifying the validity and accuracy of such information to their own satisfaction.

Products belonging to third party suppliers other than FIS or its subsidiaries are mentioned in this document only as information to the reader and are not to be regarded as specific recommendations. FIS or its subsidiaries does not guarantee the quality of these products, their performance, or their usage for any special purpose.

Page 3: System Administration: PRIME

Contents 1 ....... Introduction...................................................................................................................................7

1.1..... Document overview .............................................................................................................7

1.2..... Related documents ..............................................................................................................7

1.3..... System architecture .............................................................................................................7

1.3.1 .... PRIME and the ADS or ADM ..................................................................................8 1.3.2 .... PRIME and AMS components ................................................................................8 1.3.3 .... PRIME and other integration components .............................................................8

2 ....... Installing PRIME .........................................................................................................................10

2.1..... Windows registry access ...................................................................................................10

2.2..... Local, administrative, and workstation installations ...........................................................10

2.2.1 .... Local installation ...................................................................................................10 2.2.2 .... Administrative installation .....................................................................................10 2.2.3 .... Workstation installation .........................................................................................10 2.2.4 .... Performing local installation ..................................................................................11 2.2.5 .... Performing administrative installation ...................................................................11 2.2.6 .... Performing workstation installation .......................................................................11

2.3..... Unattended installation and removal .................................................................................11

2.3.1 .... MSI Installer 3.1 (msiexec.exe) requires .NET Framework 3.5 ............................11 2.3.2 .... Standard msiexec options ....................................................................................12 2.3.3 .... PRIME-specific msiexec options ..........................................................................12

2.4..... Before starting PRIME .......................................................................................................13

2.4.1 .... Configuration in arena_<version>.ini ....................................................................13 2.4.2 .... ADS connection ....................................................................................................13 2.4.3 .... User ......................................................................................................................13

2.5..... Starting PRIME ..................................................................................................................14

2.5.1 .... Logging on ............................................................................................................14 2.6..... Access to electronic markets .............................................................................................15

3 ....... Upgrading, downgrading, and removing .................................................................................16

3.1..... Upgrading PRIME ..............................................................................................................16

3.1.1 .... Additional tasks after upgrading PRIME ...............................................................16 3.2..... Downgrading PRIME .........................................................................................................18

3.3..... Removing PRIME ..............................................................................................................18

3.3.1 .... Troubleshooting: Unable to remove previous PRIME versions ............................18 4 ....... Administration and maintenance .............................................................................................19

4.1..... About ARENA user IDs ......................................................................................................19

4.1.1 .... Creating an ARENA user ID .................................................................................19 4.1.2 .... Kerberos support ..................................................................................................20 4.1.3 .... AMS users ............................................................................................................20 4.1.4 .... What happens when you log on to PRIME ...........................................................20

Page 4: System Administration: PRIME

4.2..... Logging ..............................................................................................................................21

4.2.1 .... Logging to the Windows event log........................................................................21 4.2.2 .... Logging to the ADM database ..............................................................................21 4.2.3 .... Logging to file .......................................................................................................21 4.2.4 .... Distributed processing ..........................................................................................24

4.3..... Extension Editor .................................................................................................................24

4.3.1 .... Maintenance modules ..........................................................................................24 4.4..... Monitoring Console ............................................................................................................25

4.5..... Recent Lists .......................................................................................................................25

4.5.1 .... Maintenance after upgrading ................................................................................25 4.6..... Distributed processing .......................................................................................................26

4.7..... Language support ..............................................................................................................26

4.8..... Unicode support .................................................................................................................26

4.9..... Performance profiler snapshots .........................................................................................27

4.9.1 .... Load AEFDevTools ..............................................................................................27 4.9.2 .... To profile ...............................................................................................................27

5 ....... Appendix A: Configuration and command-line options ........................................................30

5.1..... arena_<version>.ini ...........................................................................................................30

5.1.1 .... Options .................................................................................................................30 5.1.2 .... About arena_<version>.ini contexts .....................................................................32 5.1.3 .... Defining servers ....................................................................................................32

5.2..... Options reference ..............................................................................................................33

5.2.1 .... Options .................................................................................................................33 5.2.2 .... PRIME options’ details .........................................................................................45 5.2.3 .... Garbage collection configuration ..........................................................................48

6 ....... Appendix B: Table Translation Tool and suggestname.ttt ....................................................49

6.1..... TTT .....................................................................................................................................49

6.1.1 .... Translation mechanism ........................................................................................50 6.1.2 .... File format .............................................................................................................50 6.1.3 .... Regular expressions .............................................................................................51

6.2..... suggestname.ttt .................................................................................................................53

6.2.1 .... suggestname.ttt variables .....................................................................................53 7 ....... Appendix C: b92_rec_doc.txt ....................................................................................................69

8 ....... Appendix D: PRIMEutil ..............................................................................................................70

8.1..... Installation ..........................................................................................................................70

8.1.1 .... Configuration ........................................................................................................70 8.2..... arena_python .....................................................................................................................70

8.3..... arena_extract .....................................................................................................................70

8.4..... write_appl ...........................................................................................................................70

9 ....... Appendix E: Remote PRIME overview .....................................................................................71

Page 5: System Administration: PRIME

9.1..... Remote displaying .............................................................................................................71

9.2..... Sybase or Microsoft SQL replication server technology ....................................................71

9.3..... Remote connection of PRIME (very slow) .........................................................................72

10 ..... Appendix F: Main user interface features ................................................................................73

10.1... Ribbons terminology and features .....................................................................................73

10.2... Session Manager ribbon ....................................................................................................73

10.3... Trading Manager ribbon .....................................................................................................73

10.4... Ribbon design and modification .........................................................................................74

10.4.1 .. Ribbon Designer ...................................................................................................74 10.4.2 .. Ribbon manipulation in the Ribbon Designer .......................................................74 10.4.3 .. Creating context-sensitive tabs ............................................................................78

11 ..... Appendix G: Performance .........................................................................................................80

11.1... About the Front Arena window ...........................................................................................80

11.2... Basic PRIME performance issue analysis .........................................................................80

11.2.1 .. Log Category: market – enable flow track and log output ....................................80 11.2.2 .. Log Category: Trading Manager – calculation performance ................................81 11.2.3 .. Log Category: quote – performance .....................................................................82

11.3... Startup time ........................................................................................................................82

11.3.1 .. PRIME only ...........................................................................................................82 11.3.2 .. PRIME with the default workspace .......................................................................82 11.3.3 .. Quote Sheets or market making ...........................................................................84

11.4... Responsiveness .................................................................................................................84

11.4.1 .. Portfolio Sheets ....................................................................................................85 11.4.2 .. Market making or Quote Sheets ...........................................................................86

11.5... Processing time of commands ...........................................................................................86

11.5.1 .. Trading on electronic market places.....................................................................86 11.5.2 .. Market making ......................................................................................................86

11.6... Throughput .........................................................................................................................86

11.6.1 .. ADS prices ............................................................................................................86 11.6.2 .. Market connections ..............................................................................................87

11.7... Update time ........................................................................................................................88

11.7.1 .. Portfolio Sheets ....................................................................................................88 11.7.2 .. Quote Sheets or market making ...........................................................................88

11.8... Memory garbage collection ................................................................................................89

11.8.1 .. Incremental as opposed to non-incremental garbage collection ..........................89 11.8.2 .. Garbage collection configuration ..........................................................................90

11.9... Distributed processing .......................................................................................................91

11.9.1 .. PACE ....................................................................................................................91 11.10 Trading Manager ................................................................................................................91

11.10.1 Separating trading from risk .................................................................................92 11.10.2 Sheet cell pre-initialisation ....................................................................................92

Page 6: System Administration: PRIME

11.10.3 Multi-threading ......................................................................................................92 11.11 Quoting performance .........................................................................................................93

11.11.1 General .................................................................................................................93 11.11.2 SAX quoting ..........................................................................................................93 11.11.3 OM quoting ...........................................................................................................94 11.11.4 SWX quoting .........................................................................................................94 11.11.5 Eurex quoting ........................................................................................................94

11.12 Portfolio and risk performance ...........................................................................................94

11.12.1 Data maintenance.................................................................................................95 11.12.2 P/L and funding .....................................................................................................96 11.12.3 Portfolio Sheet configuration ................................................................................96 11.12.4 Calculation approximations ..................................................................................97 11.12.5 Real-time yield curves ..........................................................................................97 11.12.6 FX rate updates ....................................................................................................97

11.13 Hardware ............................................................................................................................98

11.13.1 Memory .................................................................................................................98 11.13.2 CPU ......................................................................................................................98

11.14 Windows .............................................................................................................................98

11.15 Network ..............................................................................................................................98

11.16 Built-in PRIME performance enhancement technologies ..................................................99

11.16.1 Lazy evaluation .....................................................................................................99 11.16.2 Update merging ....................................................................................................99 11.16.3 Approximations .....................................................................................................99 11.16.4 Instrument lot calculations ....................................................................................99 11.16.5 Threads and event handling .............................................................................. 100

Page 7: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

1 Introduction 7 of 102

1 Introduction

1.1 Document overview

Note: This document is about FIS Cross-Asset Trading and Risk Platform, formerly known as Front Arena. The term Front Arena is used in this document.

This document describes the installation, configuration, and system administration of PRIME.

PRIME is the front end of the large and complex Front Arena system. Note that there are many necessary tasks that are considered the system administration of other parts of Front Arena, even though they might affect PRIME and the data shown in PRIME. Such tasks are generally not mentioned in this guide.

1.2 Related documents

• User documentation is available in PRIME Help (FCA1260). • For information about distributed processing, refer to System Administration: Distributed

Processing Using PACE (FCA4619). • For platform requirements, refer to System Administration: Hardware and Software Guide

(FCA1129). • PRIME makes use of the libevent API, available for use under the three-clause BSD

licence. Refer to libevent.org/LICENSE.txt. • PRIME makes use of protobuf, available for use under the new BSD licence.

1.3 System architecture The position of PRIME within the Front Arena system architecture is shown in the following graphic, available in Overview: FIS Cross-Asset Trading and Risk Platform System Architecture Diagram (FCA1463):

Page 8: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

1 Introduction 8 of 102

PRIME communicates with both the ARENA Market Server (AMS) components and the ARENA Data Server (ADS).

1.3.1 PRIME and the ADS or ADM The ADS provides database services for Front Arena clients. The ADS communicates with the ADM database, the main relational database in Front Arena. The ADS also handles transaction logging.

The ADM database is defined by the ARENA Data Model (ADM). PRIME clients communicate with the ADS according to the tables and fields defined in the ADM.

PRIME connects to the ADS during startup. The ADS address can be supplied in various ways:

• Selected in the logon window (selections taken from the file arena_<version>.ini) • Entered in the logon window • Entered on the command line

These ways of supplying the ADS address are described in the following sections:

• 2.4 Before starting PRIME • 2.5 Starting PRIME • 5 Appendix A: Configuration and command-line options

For more information about the ADS and ADM, refer to the following documents:

• Installation: ADS Windows (FCA1328) • System Administration: ADS Windows (FCA1327) • Installation: ADS Linux (FCA1265) • System Administration: ADS Linux (FCA1264)

1.3.2 PRIME and AMS components AMS components provide PRIME with access to electronic markets and exchanges through the ARENA Market Access Server (AMAS) components, as well as with access to an internal marketplace through the ARENA Internal Market Server (AIMS) component.

PRIME uses the Transaction Network Protocol (TNP) to connect to the AMS databases. The TNP is a Front Arena protocol for transaction handling.

For more information about the AMS and TNP, refer to Overview: Introducing AMS Components (FCA1318).

1.3.3 PRIME and other integration components PRIME does not take all types of market data directly from the AMS databases. Some data is routed through to the ADS (and the ADM database) using the Front Arena system components which handle internal integration and messaging.

Market prices, for example, are routed using the ARENA Market Price Handler (AMPH). Trades are routed using the Exchange Message Broker Adapter (XMBA), the ARENA Message Broker (AMB), and the ARENA Message Broker Adapter (AMBA).

Page 9: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

1 Introduction 9 of 102

Note: Not all market prices are routed through the AMPH. For normal order book market prices used for trading, PRIME gets prices directly from the AMAS. It is mainly for portfolio calculations that the market prices come in through the ADS and the AMPH. Further, it is not only prices from the AMAS that come into the ADS to feed the portfolio calculations; prices can also arrive from the ARENA Price Feed Handler (APH). The reason for this is to be able to see profit and loss when the market is closed, and to be able to get prices not supplied by the AMAS.

Page 10: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 10 of 102

2 Installing PRIME Note: For the current list of hardware and software requirements for PRIME and related components, refer to System Administration: Hardware and Software Guide (FCA1129).

Note: While it is possible to install PRIME without having an ARENA user to log on with, it is not possible to start using PRIME without such a user. For more information, see section 2.4 Before starting PRIME.

2.1 Windows registry access The Windows Installer uses registry settings to keep track of the PRIME installation. PRIME itself makes no use of the registry. In other words, running PRIME does not require registry access, but installing PRIME might.

2.2 Local, administrative, and workstation installations There are three types of PRIME installations:

• Local • Administrative • Workstation

2.2.1 Local installation A local installation installs a separate set of all files locally on each workstation. There is no dependency on a file server, but log files can optionally be stored at a common network location.

2.2.2 Administrative installation Administrative and workstation installations are used in combination when the installation should be centralised. First perform an administrative installation. This places a PRIME source image on a file server. Then use that image to perform workstation installations on each workstation that should run PRIME.

Workstation installations installed from the administrative source image (network file location) share the same initialisation (.ini) files and log file location. Executable files are not shareable, and when upgrading, all the workstation installations and the administrative installation must be upgraded.

2.2.3 Workstation installation A workstation installation installs services and run-time libraries on user workstations, and it creates shortcuts in the Start menu for running PRIME from an administrative installation (on the network). Only a small number of files are stored locally; most PRIME files are stored centrally in the administrative installation.

Front Arena home directory Generally, all Front Arena components on the same machine are installed in a common directory structure. The default root directory for all Front Arena components is C:\Program files\Front\Front Arena\. If PRIME is installed on a computer where other Front Arena components are already installed, install it in the same Front Arena directory as the already installed components.

Page 11: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 11 of 102

2.2.4 Performing local installation Unpack your downloaded PRIME .zip file, or otherwise make the installations files available.

1. Verify that the source database data is consistent using the check_data.sql, and run setup.exe, for example, PRIME\2016.5.3\Windows64\setup.exe.

2. For a standard installation, just accept the defaults, and click Next through the installation.

Note: Change installation settings only if you have good reason to do so.

Your choice of Install this application for only affects the appearance of shortcuts on the desktop and in the Start menu.

For local installations, there is no difference between the Complete and Custom setup types, so there is no reason to select Custom. However, if you do, some help text is available.

2.2.5 Performing administrative installation 1. The intended network location for the PRIME source image must be permanently mapped

to a drive letter. This drive letter must be specified as the destination or Network location in the installation window.

2. The setup application must be started with the command-line option /a in the following manner: setup.exe /a.

2.2.6 Performing workstation installation The installation sequence is as that of the local installation, except:

1. The installation must be started using msiexec: msiexec /i "<path to administrative FRONT ARENA PRIME.msi>" FRONTINIDIR="<path to administrative arena_<version>.ini directory>", for example:

msiexec /i "T:\admin\prime43\FRONT ARENA PRIME.msi" FRONTINIDIR="T:\admin\prime43\CommonAppData\Front\ini\"

Failing to supply a correct FRONTINIDIR will result in a faulty shortcut for starting PRIME, that is, a shortcut that will make PRIME look for arena_<version>.ini in the wrong location.

2. On the Setup Type window, select Custom. 3. On the Custom Setup window, select This feature will be installed to run from network

for PRIME program files.

2.3 Unattended installation and removal It is possible to perform installation and removal of PRIME with a single command-line command that completely suppresses the installation windows and does not require any additional user interaction.

2.3.1 MSI Installer 3.1 (msiexec.exe) requires .NET Framework 3.5 1. Make sure that msiexec.exe is version 3.1 or higher. If it is not, you must upgrade. In that

case, run WindowsInstaller-KB893803-x86.exe included in the PRIME package, or download and run WindowsInstaller-KB893803-v2-x86.exe from www.microsoft.com/downloads/details.aspx?FamilyID=889482FC-5F56-4A38-B838-DE776FD4138C&displaylang=en.

2. Install the .NET Framework. Run the command:

Helper.exe /p dotnetfx35.exe /l 1033 /v "/q /norestart"

where Helper.exe is the file included in the PRIME package under \IsSetupPrerequisites\<a GUID>\.

Page 12: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 12 of 102

3. Run the unattended msiexec installation of PRIME, as described in the following examples:

Regular installation:

%WINDIR%\system32\msiexec.exe /i "FRONT ARENA PRIME 2013.4 (x64).msi"

Unattended installation:

%WINDIR%\system32\msiexec.exe /i "FRONT ARENA PRIME 2013.4 (x64).msi" /qb- /l*+ c:\temp\prime_%1_install.log ALLUSERS=1

Regular removal:

%WINDIR%\system32\msiexec.exe /i "FRONT ARENA PRIME 2013.4 (x64).msi" /Q REBOOT="ReallySuppress" REMOVE=ALL

Unattended removal:

%WINDIR%\system32\msiexec /x "FRONT ARENA PRIME 2013.4 (x64).msi" /qb- /l*+ c:\temp\prime_%1_uninstall.log

2.3.2 Standard msiexec options • ADDSOURCE=ALL installation from network (administrative) installation. • ALLUSERS=1 make installation available for all users.

For more information and a list of all valid options, run C:\>msiexec.exe. In addition, refer to the Windows Installer documentation on the Microsoft Developer Network (MSDN) webpage (msdn2.microsoft.com/en-us/library/aa367988.aspx), as well as to support.microsoft.com/.

2.3.3 PRIME-specific msiexec options

Feature-related options The following options are used to choose what individual features will be installed locally on the workstation:

• Install all the features: ADDLOCAL=ALL. • Install the selected features: ADDLOCAL=features [, features...].

Currently, there is only one feature, Prime, which is mandatory.

Other options • /i: Followed by the path/name of the Front Arena PRIME, the .msi file performs a silent

install. • /qb: Specifies that only a progress bar is displayed. • /l*+: Followed by path/name of the install log file specifies the amount of logging done. • ALLUSERS=1: Specifies that PRIME is performed for all users working on that

workstation, always use this option. • /x: Specifies that a de-installation is to be performed. • INSTALLDIR=: All PRIME files are installed to the directories <INSTALLDIR>\Front

Arena\CommonLib and <INSTALLDIR>\Front Arena\PRIME\<version>. <INSTALLDIR> defaults to C:\program files\Front. Therefore, the default location of the PRIME directories is C:\program files\Front\Front Arena\CommonLib and C:\program files\Front\Front Arena\PRIME\<version>, where <version> is, for example, 2009.1.

• FRONTARENADIR=: Replaced by <INSTALLDIR>, but is kept for backward compatibility, although usage is not recommended.

Page 13: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 13 of 102

• FRONTINIDIR=<directory>: Specifies the location of arena_<version>.ini. • FRONTLOGDIR=<directory>: Specifies the location of the log file.

2.4 Before starting PRIME Before it is possible to start and log on to PRIME, some prerequisites must be fulfilled.

2.4.1 Configuration in arena_<version>.ini All of the following options should be set in arena_<version>.ini:

• server= • username= • B92_REC_DOC_FILE= • FCS_SUGGEST_NAME_FILE= • FCS_DIR_TMP= • FCS_DIR_PYTHON_LIB= • FCS_DIR_PYTHON_EXT= • logdir= • nbrOfItems= • Server0= • ADS.<name>] • ServerAddress=

For more information about arena_<version>.ini, see section 5.1 arena_<version>.ini.

2.4.2 ADS connection The ADS supplies PRIME with both business and system data, and PRIME cannot start without successfully connecting to an ADS. The ADS address, hostname and port, as well as the user are generally read from the arena_<version>.ini file (see 5.1 arena_<version>.ini). The password is generally supplied by the user when logging on.

The ADS address (hostname:port) can also be manually entered in the ADS Server field of the Log On window.

2.4.3 User A valid user must be defined before it is possible to start PRIME and log on. For brand new databases with no users yet defined, use the default user "ARENASYS" with the password "intas".

To create more users:

1. Log on to PRIME. 2. Select Admin>Administration Console. 3. In the tree to the left, select Users, Groups & Organisations and then drill down to the

group to which you want to add a user. If there is no group, you must add a group first, and maybe add an organisation before that.

a. To add a new organisation, right-click Users, Groups & Organisations, and select New Organisation. Enter a name and save.

b. To add a new group, right-click the Organisation and select New Group. Enter a name, select the profile ALL_COMPONENTS, and save.

However, before doing this, spend some time planning how your organisation’s user structure should look.

Page 14: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 14 of 102

Right-click the group and select New User. Enter at least Name, Password, and Profile, then save (File>Save). Maximum user name length is 20 characters (255 with Kerberos).

Maximum password length is 14 characters (127 with Kerberos).

4. After the user has been created the ADS administrator must run the script intas_revusers (or intas_revusers_intraday) to create the necessary corresponding database user.

2.5 Starting PRIME

With default options, from the Start menu Select Start>All Programs>Front Arena>FRONT ARENA PRIME <version>.

This shortcut starts PRIME and picks default startup options from arena_<version>.ini. For more information about arena_<version>.ini, see section 5.1 arena_<version>.ini.

With other options, from your own shortcut To start PRIME with other options, make a shortcut to prime.exe, generally <Front Arena home>\PRIME\<version>\prime.exe, and enter options in Target.

For options, see section 5 Appendix A: Configuration and command-line options.

From the command line To start PRIME with options from the command line, use:

<Front Arena home>\PRIME\<version>\prime.exe [options]

For options, see section 5 Appendix A: Configuration and command-line options.

2.5.1 Logging on The logon window can be seen with different levels of detail. Click the chevrons (>>) to expand the window.

User Name and Password must be for a valid ARENA user defined in the ADS. See section 2.4.3 User.

If supplied, User Name and AMAS Password must be for a valid Windows user account in the domain where the AMASs are running.

The ADS server information is read from arena_<version>.ini or from the command line. The ADS address (hostname:port) can also be entered directly in the ADS Server field.

A workspace, that is, a predefined saved set of windows, can be automatically opened when PRIME starts. Workspace takes precedence over Load Default Workspace. If a workspace is supplied, then that set of windows is opened when PRIME starts. If no workspace is supplied but Load Default Workspace is selected, the windows in the default workspace are opened when PRIME starts.

Note: Because workspaces are primarily personal, there might exist several workspaces with the same name, saved by different users. If there are two or more workspaces with the same name, the one saved by the user logging on will be opened. If none of the workspaces were saved by the user logging on, the user’s default workspace will be opened instead.

The Archived check box and the fields Date Today, Extension Context, and Historical Date are the same as the corresponding command-line options (see section 5 Appendix A: Configuration and command-line options).

Page 15: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

2 Installing PRIME 15 of 102

Reconnection If the ADS is stopped while PRIME is connected, PRIME tries to reconnect repeatedly and will reconnect as soon as the ADS is up and running again. PRIME then notifies the ADS and all subscriptions are restored.

If a request is sent from PRIME when the ADS is stopped, it will be resent to the ADS on reconnect. A maximum of three resends will be performed, after the fourth reconnect the request will be aborted and the result empty. Each resend attempt is logged in the log window and the log file.

Troubleshooting If there is a problem to log on, test the connection to the ADS, using telnet in the following way:

telnet <server> <port>

If there is a reply, the connection is OK, and the logon problem is most likely related to the user and not the connection. The reply looks mostly like garbage, similar to the following example:

☺☺♥♦ADM43☺♦sundevilARENAV♦d♥♥♥♥

That is, however, in order.

2.6 Access to electronic markets PRIME connects to electronic markets using the AMS components. Each market that PRIME connects to must be defined as a party of type marketplace in the ADM database. In the Party Definition (All>Admin>Party Definition), there must be some connection information stated, such as the AMS address and port number. This information is given in the fields Free Text 1 and Free Text 2, where:

• Free Text 1: The name or IP address of the server machine where the AMAS or AIMS is running.

• Free Text 2: The port number used to connect to the AMAS or AIMS.

The market connections are inserted as parties into the ADM database by the XMBA when it is connected for the first time. These definitions must be manually updated, because they do not contain the necessary connection information.

Overriding the AMAS address It is possible to override the AMAS address on a user level which is convenient in Front Arena installation where more than one AMAS is used to connect to the same market place. For example, this could be the case when different users are trading using different banking member IDs and must be connected to different market servers for the same market place.

1. Open the Explorer (Data>Explorer) and select Business Objects>Marketplaces. 2. Right-click the market where the address should be overridden and select Trading

Settings. 3. Edit the values Market – Host Name and Market – Port Number and click OK.

Page 16: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

3 Upgrading, downgrading, and removing 16 of 102

3 Upgrading, downgrading, and removing

3.1 Upgrading PRIME Upgrades are essentially the same as new installations. Follow the procedures described in section 2 Installing PRIME, as well as the following notes. When upgrading, use the new setup.exe or FRONT ARENA PRIME.msi from the PRIME release you are upgrading to, not the old ones from the already installed PRIME instance.

Important: Mandatory migration. The ADM table price_definition is not supported starting from 2014.4. Manual conversion to price_link_definition is possibly required. For more information, refer to:

• Data model: Table "price_definition" not supported from Front Arena 2014.4 (Front Arena bulletin #10867)

• Installation: APH (FCA1385) and System Administration: APH (FCA1386)

Important: It is extremely important to differentiate between upgrading PRIME and upgrading the supporting Front Arena environment, most notably the ADM.

Upgrading PRIME is a simple task of having the setup application replace a few binaries.

Upgrading the supporting Front Arena environment might require upgrade of several other components, database changes, rewrites of various scripts, plug-ins and adaptations, and lots of testing. A procedure that in a production environment might take months. In general, the whole thing must be treated as an upgrade project with proper project planning and so on.

Worth noting is also that PRIME cannot function properly without a correct supporting environment.

Important: Also, before changing PRIME release, always check for special installation instructions in release notes for that release.

Going from an earlier release to a later release For example, going from 4.3 to 2010.1. Different releases of PRIME are installed in parallel. Thus, what you do in this case is to install 2010.1 and start using it instead of using 4.3 (which will be unaffected by the installation of 2010.1). Optionally, you can then uninstall 4.3.

Going from an earlier hotfix to a later hotfix For example, going from 4.3 to 4.3.hotfix1. Follow the standard installation procedure to install 4.3.hotfix1. The installation of 4.3.hotfix1 will overwrite the 4.3 files.

3.1.1 Additional tasks after upgrading PRIME This section discusses some additional issues following successful "upgrade" installation.

Edit arena_<version>.ini • If upgrading from PRIME 4.2 or earlier:

Move to new arena_<version>.ini. With PRIME 2010.1, the arena.ini file moved to a new directory and some manual actions are required to keep the configuration. The recommended approach is to manually copy all settings from the old arena.ini* to the new arena_<version>.ini**.

* Generally: C:\Program files\FRONT\FRONT ARENA\Prime\<version>\arena.ini

** Generally: C:\Documents and Settings\All Users\Application Data\Front\ini\arena_<version>.ini

Page 17: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

3 Upgrading, downgrading, and removing 17 of 102

• If upgrading to PRIME 2010.1 or later:

The arena.ini file has been renamed to arena_<version>.ini for PRIME 2010.1 and later.

It is possible to use the system variable FCS_DIR_ARENA_INI to specify the full path of arena_<version>.ini and for example, have it pointing to the PRIME executable directory.

DataUpgrade

Important: Read the file <Front Arena Home>\Prime\<Version>\DataUpgrade\ReadMe.txt.

The directory DataUpgrade contains several Python scripts that should be run in certain upgrade scenarios. Read the file DataUpgrade\ReadMe.txt for more information.

Check site-startup Python module The site-startup Python module is run when PRIME is started. It can be used to perform various settings and tasks. In PRIME 4.x or earlier, it was common to set various Python-related paths in site-startup. Now, this is generally not needed, except for, perhaps, in-house or other customer-added modules.

Setting of FCS_DIR_PYTHON_LIB, FCS_DIR_PYTHON_EXT, and sys.path in site-startup should be removed after careful testing.

1. From the System menu, select the Python Editor. 2. From the File menu in the Python Editor, select Open and then site-startup.

Python paths can also be defined in arena_<version>.ini or as system environment variables.

Note: It might be necessary to update Python paths on Linux when changing the PRIME version, that is, the PRIMEutil version. Refer to Installation: ADM Linux (FCA1436) and System Administration: ADS Linux (FCA1264).

Run write_appl.exe

Note: write_appl.exe needs only to be executed once for each database, it does not have to be run by each user upgrading PRIME.

New PRIME functionality might require new user profile components. write_appl.exe adds these new user profile components to the ADM database.

If Kerberos is used, write_appl must be used with the -sso option.

Example C:\Program files\FRONT\FRONT ARENA\PRIME\2010.2\write_appl.exe -server aska:9001 -user system C:\Program files\FRONT\FRONT ARENA\PRIME\2010.2\write_appl.exe -server aska:9001 -user system -sso

Page 18: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

3 Upgrading, downgrading, and removing 18 of 102

3.2 Downgrading PRIME

Important: It is extremely important to differentiate between downgrading PRIME and downgrading the supporting Front Arena environment, most notably the ADM.

Downgrading PRIME is the simple task of replacing a few binaries.

Downgrading the supporting Front Arena environment is generally not supported. It might be possible but require lots of manual work. The ADM database must be restored from backup, and older releases of various components might have to be reinstalled. In general, it should be treated as an upgrade project with proper project planning, and so on.

Worth noting is also that PRIME cannot function properly without a correct supporting environment.

Important: Also, before changing PRIME release, always check for special installation instructions in release notes for that release.

Downgrading, in the true meaning of the word, is not possible. There are two scenarios:

• Going from a later release to an earlier release. For example, going from 2010.1 to 4.3. Different releases of PRIME are installed in parallel. Thus, what you would do in this case is to install 4.3 and start using it instead of 2010.1 (which will be unaffected by the installation of 4.3).

• Going from a later hotfix to an earlier hotfix. If you have, for example, 4.3.hotfix2 installed, then it is not possible to install 4.3.hotfix1. If this is what you have to do, first uninstall 4.3.hotfix2, and then install 4.3.hotfix1.

3.3 Removing PRIME Remove PRIME as you would remove any other typical Windows application, using the Control Panel and the Add or remove programs application:

1. Select Start>Control Panel>Add or Remove Programs. 2. If not selected, select Change or Remove Programs. 3. Select Front Arena PRIME and Remove.

3.3.1 Troubleshooting: Unable to remove previous PRIME versions If several PRIME installations have been installed and uninstalled on the workstation, the system can be in a state that locks all PRIME installations. In this state, neither installation nor removal can be performed. All Front Arena component installations comply with the Windows Installer standard (managed by Windows), so a review and removal of all installations can be made through the registry.

1. Open the Registry Editor by running Regedit or Regedt32 from the Start>Run menu. 2. Drill down to the subkey HKEY_CLASSES_ROOT\Installer\Products. 3. Search through the installed products and look in the right pane for ProductName Front

Arena PRIME or Front ARENA clients. If you find such entry, delete the corresponding ID number from the tree view in the left pane.

4. Use the same procedure for features; information is stored under the subkey HKEY_CLASSES_ROOT\Installer\Features. In this case, search in the right pane for the installed features, including the word "Prime". Then delete the corresponding ID.

Page 19: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 19 of 102

4 Administration and maintenance

4.1 About ARENA user IDs A human user needs an ARENA user ID and usually a password to log on to PRIME. Other components, such as the ATS and AMBA, also need an ARENA user ID and a password to connect to the ADS.

4.1.1 Creating an ARENA user ID ARENA user IDs are set up as users in PRIME in the Administration Console (All>Admin>Administration Console>Users, Groups & Organisations).

Refer to PRIME Help (FCA1260) for more information about the Administration Console details.

The ARENA user ID is stored in the user_ table in the ADM database. After creating an ARENA user ID in the Administration Console, the ARENA user ID must be defined as a login and a user in both the database server and in the ADM database. This is usually done by running a stored procedure, intas_revusers or intas_revusers_intraday, in the database:

isql> intas_revusers [<password>]

<password> is the password specified by the ADS initialisation option db_client_password.

Refer to System Administration: ADS Linux (FCA1264) and System Administration: ADS Windows (FCA1327) for more information about the difference between intas_revusers or intas_revusers_intraday. Basically, intas_revusers is more complete and removes old users, but the procedure can be disruptive and should not be run during office or trading hours. intas_revusers_intraday can be run during the day but should then be followed up by running intas_revusers later.

Note: This procedure must be run by a user with the system administrator role.

Note: If a Microsoft SQL Server is used it must have been installed in Mixed Mode.

Avoiding intas_revusers – manually adding database login and user If you do not want to use intas_revusers, you can add the login and set the user manually.

Example isql> sp_addlogin MyUserID, MyP4ssw0rd, null, null,

The syntax is:

sp_addlogin <loginname>, <password> [, <defdb> [, <deflanguage> [, ]]]

The default database and language, defdb and deflanguage, (if not specified) are master and us_english. No specific roles are required.

The ADM database users must belong to the intas role, to which all access rights are granted.

The database owner or sa can add users by using the following command:

isql> use prodDB isql> sp_adduser MyUserID, MyUserID, intas

The syntax is:

sp_adduser <loginname> [, <name_in_db> [, <role>]]

The login name and name_in_db (user ID) should be the same.

Page 20: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 20 of 102

4.1.2 Kerberos support PRIME supports Kerberos 5 authentication and security methods by using the Front Arena Security library.

To enable Kerberos for PRIME, follow the steps for setting up a Kerberos service principal described in System Administration: Kerberos Authentication Linux (FCA2602) and System Administration: Kerberos Authentication Windows (FCA4510) and make use of the Kerberos and principal options in PRIME.

A default PRIME installation is not Kerberos-enabled.

4.1.3 AMS users The user ID used by PRIME when connection to an AMS must be a valid Windows user account. To get access to the AMS, the user ID must be defined in the AMS Windows user group. Typically, this is a group called either TradeNet Users or AMS Users in the AMS resource domain.

For further details on user and group account setup in the AMS, refer to Installation: AMS Setup and Configuration (FCA1725).

Removal ARENA user IDs are generally not removed when no longer needed. Instead, they are deactivated in PRIME, in the Administration Console User Definition window.

4.1.4 What happens when you log on to PRIME If Kerberos authentication is disabled, the logon steps are as follows. This also applies for Front Arena Security (FAS) type LEGACY.

1. In the logon window, the default user name (that is, the ARENA user ID) is the same as the user’s Windows user name.

2. The ADS logs on to the database server using the specified User name (ARENA user ID) and the password from the ADS initialisation option db_client_password.

3. PRIME then connects to the ADM database. 4. The user_ table in the ADM database is read to see if the supplied User name (ARENA

user ID) is present and active. 5. The password column in the user_ table is read. 6. If a password is set, PRIME encrypts the password supplied in the logon window and

compares it with the password stored in the password column.

If Kerberos authentication is enabled, logon steps depend on which FAS type the ADS is configured to use. For more information about Kerberos, refer to System Administration: Kerberos Authentication Linux (FCA2602) and System Administration: Kerberos Authentication Windows (FCA4510). The main steps are as follows:

1. PRIME connects to the ADS and receives the FAS information, including what FAS type to use, what FAS QoP (Quality of protection) to deploy, and what Kerberos service principal name the ADS uses.

2. Depending on FAS type PRIME verifies user credentials (Kerberos principal and password) and a Kerberos ticket is validated or fetched into the Kerberos cache.

3. PRIME tries to initiate, and the ADS accepts a secure context based on FAS QoP. 4. The mapping between the user Kerberos principal and ARENA user IDs is investigated by

the ADS, and a list of allowed ARENA user IDs is sent to PRIME. PRIME chooses one of the ARENA user IDs.

5. The ADS logs on to the database server using the specified User name (ARENA user ID) and the password from the ADS initialisation option db_client_password.

6. PRIME connects to the ADM database.

Page 21: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 21 of 102

4.2 Logging

Note: PRIME logs are not intended for auditing purposes. There is a special Audit Tool and audit file for that. Refer to User Guide: ADS Audit Tool (FCA1012).

4.2.1 Logging to the Windows event log The main part of PRIME logging is written to the log file (see section 4.2.3 Logging to file), but a few of the messages related to market integration and connection are logged to the Windows event log and should be viewed using the Windows Event Viewer.

4.2.2 Logging to the ADM database Note: This functionality might require additional database licences.

When using -log_to_server or -proc_frequency, the client makes a background connection to the ADS, which in turn makes an additional second unique connection to the database. This can pose problems if you are using database licenses based on the number of connections.

Note that using -log_to_server or -proc_frequency creates additional connections to the database. Therefore, check your current licence with your database provider.

The background connection does not affect Front Arena licensing. The ADS counts each unique username as a connection. The background connection is done with the same username as the parent connection; therefore, the ADS licence is not affected by background connections.

The same log information that is written to the log file can also be sent to the ADS and stored in the server_client_log table in the ADM database. Log messages are truncated to 255 characters. To enable logging to the ADM database, set log_to_server to 1 in arena_<version>.ini.

In case of a crash, PRIME can end its execution in such a way that it does not get to write the trace logging to the ADS. Because such a logging cannot be guaranteed, the server_client_log table is not a reliable source of information when it comes to monitoring crashes.

Logging process information For performance monitoring and similar, PRIME can log process information to the server_client_process table in the ADM database. Set -proc_frequency <frequency> in arena_<version>.ini to set the frequency (in seconds) with which to log process information. Suitable values are 5–60 sec in most cases. The default value is 0 (off).

4.2.3 Logging to file PRIME logs messages to file for significant events, for example, when processes start and stop, or when warnings or errors occur. PRIME starts logging as soon as it is started, with the first log entries showing the initialisation and startup procedure. If no previous log file exists, one is created. PRIME log files are generally found in the following locations:

• On Windows 7: C:\ProgramData\Front\log\prime_<user>.log (with a link from C:\Users) • On Windows 7 64-bit: C:\ProgramData\Front\64bit\log\prime_<user>.log

The log directory defaults to the directory in which PRIME is started, but this can be overridden by the arena.ini option logdir.

Page 22: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 22 of 102

If PRIME is started in the following way: C:\Program Files\FRONT\FRONT ARENA\PRIME\2013.3>prime.exe, then the name of the log file will be prime.exe_<username>.log.

Examples If logdir is not set.

If starting from the command line: C:\temp>"C:\Program Files\FRONT\FRONT ARENA\PRIME\2013.3\prime.exe", then the log is written to C:\temp\prime_<username>.log.

If starting from a shortcut (the Start menu or an icon on the desktop), then the log is written to the directory specified as "Start in" in the shortcut properties.

Workstation For workstation installations, the log files are generally found on a file server, and the location of log files can also be set with the following options:

• FRONTLOGDIR: Used with msiexec when installing PRIME to specify a log file location other than the default.

• Logdir: Options in arena_<version>.ini for specifying log file directory.

Selecting what to log To select which events to log use the Log Categories (select Admin>Monitoring Console>Log Categories in PRIME).

Duplicate logging If not filtered out certain log messages might be repeated many times and create unnecessarily large log files. By default, duplicate loggings are filtered out and replaced with a log message, such as the following:

[last log message repeated 9 times]

It is possible to disable the duplicate log filter by setting the arena.ini option filterlog to 0.

Reading log files The format of a log entry is: <date> <time> <level> <pid> <message>.

<pid> is the process ID in hexadecimal representation. Windows generally use decimal.

<level> can be any of the following letters:

Letter Level Description

I Information General information.

W Warning A non-critical program error (not E or F) does not obstruct program execution, often business-related.

E Error Create traceback but continue to run.

F Fatal Create traceback and terminate

D Debug Debug information. (Only in the log window, not log file.)

U User User information. For example, if the user tries something without having the necessary permission or rights. (Only in the log window, not log file.)

T Trace Diagnostic messages, (Not shown unless enabled with dbgmode.)

Page 23: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 23 of 102

Identifying a session A log file generally contains information from more than one session, whereby a session means: starting PRIME, logging on, using, and then logging out.

To identify a session, search in the log file for a line that looks similar to the following (search for connecting):

081105 093210 I 1620 RIC@EU9 connecting prime_4.3 to ADS sun2:9043

The end of the session is identified by one of the following:

• A normal shutdown: Identified by a disconnect message: "081105 101202 I 1620 RIC@EU9 disconnected from server"

• An abnormal shutdown: If PRIME forcibly shuts down because of an internal error (trace) or crash, there will be no disconnect message. Instead, look for the last line with the sessions process ID (PID). Often, the end of one session can be detected by looking for the beginning of a new session, that is, PRIME crashes and is then restarted by the user. ###################### End of NT Traceback ###################### 081112 131831 I 17F8 RIC@EU9 connecting prime_4.3 to ADS Sun:9043

However, this is not always the case. If the user is using multiple clients, then the start of one session does not have to mean the end of another session.

Multiple simultaneous sessions Instances of PRIME started by the same user on the same computer will log to the same log file. If several PRIME instances are running at the same time the messages logged by all instances will be mixed in the log file in the following manner. In this case, you must use the PID to distinguish the messages from each session.

020304 172000 W 0610 prof_tools Non-existing component 'Dual Currency' 020304 172001 W 0620 prof_tools Non-existing component 'MBS/ABS' 020304 172002 W 0610 prof_tools Non-existing component 'Dual Currency' 020304 172003 W 0620 prof_tools Non-existing component 'Dual Currency'

Identifying a system failure Traceback information about a system failure is found at the end of a session section. If more than traceback occurs in one session, then it is the first traceback that is significant.

Note: When sending log files to Front Arena for analysis in support cases preferably send whole log files, or if they are very large at least send whole sessions.

Search in the log file for "Begin of NT Traceback". This indicates the beginning of a section with information about one traceback. The section ends with "End of NT Traceback".

The following entries in the traceback are of particular interest: Local time, Operating system, OS major number, OS minor number, OS build number, Patch level, and Module.

The module is often the name of the process (for example, prime.exe). The module information is part of lines that look similar to the following:

# ====================================================================== # Call Stack # ====================================================================== # Address [Section]:Offset Module!Function+Displacement Source File #

Page 24: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 24 of 102

# 0x0041D42B [.text]:0x0001C42B prime.exe!CReconnectDlg::Quit+0x1B c:\build\working\root\primefamily\primefamily_main_Windows\release\checkouts\base\tm_fobject\application\mainapp\creconnectdialog.cpp line 188 # 0x00BDC29B [.text]:0x007DB29B prime.exe!CStdMessageDlg::HandleCloseDlg+0x9B c:\build\working\root\primefamily\primefamily_main_Windows\release\checkouts\base\tm_fobject\application\uicommonwin32\stdmessagedlg.cpp line 97 # 0x00BDC327 [.text]:0x007DB327 prime.exe!CStdMessageDlg::OnBtn3+0x7 c:\build\working\root\primefamily\primefamily_main_Windows\release\checkouts\base\tm_fobject\application\uicommonwin32\stdmessagedlg.cpp line 390 # 0x7822AF0A [.text]:0x00059F0A MFC80.DLL!

Action Requests and system failure logs When entering an Action Request related to a system failure, try to find out what the user was doing when the system failure occurred. It is often difficult to investigate a system failure with no other information apart from the log file. Also, only attach log information from one session to the Action Request. Do not attach the whole log file. Use the date and time information in the system failure section to verify with the customer, if possible, that the system failure and the system failure log match.

4.2.4 Distributed processing Logging for sheets using distributed processing is propagated back to the parent. Refer to System Administration: Distributed Processing Using PACE (FCA4619).

4.3 Extension Editor Variable settings and extensions capable of affecting virtually all of PRIME characteristics and behaviours are contained in Modules and maintained using the Extension Editor.

For more information about the Extension Editor, refer to PRIME Help (FCA1260).

4.3.1 Maintenance modules Front Arena sometimes releases maintenance modules to fix known problems with the PRIME setup. These maintenance modules must be imported using the PRIME Extension Editor.

Follow these steps to upgrade PRIME with a maintenance module:

1. In PRIME, start the Extension Editor (System>Extension Editor). 2. In the Context pane, select the context containing the module for upgrading (for example,

Standard). 3. Select Module>Import / Export>From File. 4. Navigate to and select the maintenance module text file, generally Maint_<ver>.txt. Click

Open. A module with the name Maint_<ver> appears as the last entry in the context. 5. In the Context pane, highlight the module and select Module>Arrange>Move Up.

Continue to move the module up until it is below the last of the following modules: Default, REMod, CRMod, IRMod, FIMod, EQMod, FXMod, and FXOMod.

6. Select File>Save Context to save the changes to the context. 7. Repeat the previously listed steps for other contexts containing the module for upgrading.

Page 25: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 25 of 102

4.4 Monitoring Console The Monitoring Console can be accessed from the PRIME Session Manager, by selecting All>Admin>Monitoring Console. For full details, refer to PRIME Help (FCA1260).

Use the Monitoring Console to monitor connected users, client/server activity, and calculation traces:

• Calculation Trace is used to view calculations performed by the system. • Client/server Monitor is used to monitor traffic between PRIME and the ADS. • Connected Users shows which users and applications that are connected to the ADS. • Old Price Monitor is used to monitor usage of prices from yesterday or before. • Client Database Cache shows an overview of what is cached in PRIME. • Threads shows the current threads in the prime.exe process. • Performance shows some statistic on memory usage and work done.

4.5 Recent Lists Recent Lists are lists of the objects most recently used in various PRIME windows. The functionality is similar to the Bookmarks. The Recent Lists are available in PRIME in two locations:

• File>Properties • Admin>Administration Console

In the Administration Console, select Users, Groups & Organisations, and then expand and browse down through the organisations and groups to the user level. When you get to a user, expand the user, and the Recent Lists are available there together with the Bookmarks directory.

You can modify the lists using Move and Remove. These changes are overwritten by PRIME when the user works in the GUI, and new objects become the most recently used.

4.5.1 Maintenance after upgrading After completing the upgrade to a new PRIME release, all entries listed as "(no longer in use)" should be removed. It might however be desirable to keep these during the upgrade test phase, because removing them might affect the old release.

Some windows in PRIME change name between releases, some windows are removed. Recent Lists with references to these obsolete and no longer existing windows will remain in the system. These obsolete entries cause database lookups that slows PRIME down.

Page 26: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 26 of 102

Use Remove All Unused to remove all these obsolete items. Do this for each user.

4.6 Distributed processing Refer to System Administration: Distributed Processing Using PACE (FCA4619).

4.7 Language support It is possible to use non-Latin character sets in PRIME, for example, Russian Cyrillic. On the workstation, configure Windows with the desired language, location, and regional settings. Note that all workstations in the system should be configured in the same way or they cannot properly share language-specific information. An instrument name entered from a client in Cyrillic (for example, "АББ") cannot be properly displayed on a client with different regional settings.

Server machines running Front Arena components and supporting databases must be configured with identical regional settings. Regardless of regional settings collation and sort order should be as installed by default on Sybase ASE, on Microsoft SQL Server collation should always be SQL_Latin1_General_CP1_CI_AS.

4.8 Unicode support It is possible to start PRIME components with the -unicode flag. This enables the support for multiple languages in the PRIME session, including Asian characters. When starting PRIME with -unicode, it is only possible to connect to an ADS where Unicode is enabled. A non-Unicode ADS can be upgraded to Unicode.

For Unicode upgrades of the ADM and the ADS, refer to:

• Installation: ADM Windows (FCA1492) • System Administration: ADS Windows (FCA1327) • Installation: ADM Linux (FCA1436) • System Administration: ADS Linux (FCA1264)

A collation can also be set for a PRIME session by specifying the -collation flag. This will change the behaviour of how sorting is performed. A list of available collation names can be found at www.localeplanet.com/icu/.

Page 27: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 27 of 102

4.9 Performance profiler snapshots The performance profiler snapshots show in detail where time is spent when performing a task. Use this to investigate and improve performance of in house developed extensions, columns, and such.

4.9.1 Load AEFDevTools 1. Start the Extension Editor (System>Extension Editor). 2. Open the list of built-in modules (Module>Insert>Builtin). 3. Select AEFDevTools and click OK.

4.9.2 To profile 1. First, start the profiler. In the Session Manager, select Extensions>Tools>Generate

Profiler Snapshot (Brief or Verbose, does not matter). 2. Perform the required task on the profile, for example, open an Order Book in the Trading

Manager. 3. Generate the snapshot report. In the Session Manager, select

Extensions>Tools>Generate Profiler Snapshot.

The result is shown in the log window and can look similar to the following for the (Verbose) option:

------------------------------------------------------------------------------------------ count T+D ms D ms P cost .root (1)1 8818.345 8818.345 509.136 >do_select:asp.c c (318)18975 5312.397 0.000 53.899 >dh_entity_and_status:dh.cpp c (127703)154056 3822.861 3786.483 147.934 >>do_record_read:dh.cpp c (9190)9237 3815.199 3559.481 71.455 ~~~do_select:asp.c c (9415)18975 ~~~dh_entity_and_status:dh.cpp c (1)154056 >>>record_subscribe_scan:dsb92api.cpp c (9285)18520 1212.188 1034.671 37.254 >>>>do_send:asp.c c (18520)18520 1034.671 0.000 22.272 >>>do_receive:asp.c c (9415)18667 77.851 0.000 28.150 >>>dh_find_union:dh.cpp c (47)104906 16.253 0.000 44.176 >>>find_scan_answer:dh.cpp c (47)47 0.184 0.000 0.024 >dh_record_read:dh.cpp c (9122)9225 3756.030 3752.009 86.368 ~~dh_entity_and_status:dh.cpp c (9178)154056 >dh_union:dh.cpp c (90998)95624 3718.565 3694.133 180.306 ~~dh_union:dh.cpp c (8)95624 >>dh_legs:tools.cpp c (9129)9129 3614.378 3041.839 85.936

Page 28: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 28 of 102

~~~do_select:asp.c c (9129)18975 >>>dh_record_scan:dh.cpp c (9129)9286 648.118 606.757 28.613 ~~~~record_subscribe_scan:dsb92api.cpp c (9235)18520 ~~~~dh_find_union:dh.cpp c (9235)104906 >>>>do_select:dh.cpp c (51)51 5.214 5.152 0.200 ~~~~~dh_entity_and_status:dh.cpp c (51)154056 ~~~~~dh_union:dh.cpp c (51)95624 ~~~do_receive:asp.c c (9129)18667 >>dh_cash_flows:tools.cpp c (38)38 29.118 16.112 0.459 ~~~do_select:asp.c c (38)18975 ~~~dh_record_scan:dh.cpp c (38)9286 ~~~do_receive:asp.c c (38)18667 >>dh_prices:tools.cpp c (47)47 18.599 17.270 0.522 ~~~do_select:asp.c c (47)18975 ~~~dh_record_scan:dh.cpp c (47)9286 ~~~do_receive:asp.c c (47)18667 ~~dh_find_union:dh.cpp c (95624)104906 >>dh_trades:tools.cpp c (2)2 2.802 1.568 0.026 ~~~do_select:asp.c c (3)18975 ….and so on …

This first part (above) can be many thousands of lines. It is provided if Generate Profiler Snapshot (Verbose) was selected. If Generate Profiler Snapshot (Brief) is selected, then only the second part, top 25, is provided:

top 25(27202): ---------------------------------------------------------------------------------------------- count T ms 0 do_select:asp.c c 8975 5312.397 1 do_send:asp.c c 8520 1034.671 2 <code object <module> at 1374A5D0, file "_internal_zoneinfo", line 2> 1 937.753 3 dh_legs:tools.cpp c 9129 572.539 4 do_record_read:dh.cpp c 9237 255.718 5 record_subscribe_scan:dsb92api.cpp c 18520 177.516 6 ADM.TextObject 18230 78.372 7 do_receive:asp.c c 18667 77.851 8 dh_record_scan:dh.cpp c 9286 41.361 9 dh_entity_and_status:dh.cpp c 154056 36.379 10 dh_union:dh.cpp c 95624 24.433

Page 29: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

4 Administration and maintenance 29 of 102

11 FExtensionContext.MemberNames(type, group, item) m 36 17.778 12 dh_find_union:dh.cpp c 104906 16.253 13 dh_cash_flows:tools.cpp c 38 13.006 14 <code object <module> at 13772EB8, file "\\prime\2014.3-4.17.568.0-2 1 10.002 15 <code object findRule at 1376ADC8, file "\\prime\2014.3-4.17.568.0-2 15 8.030 16 ADM.Party 2014 7.035 17 FPriceFinding.OrderBookMarketSearchOrder(marketSet) m 76 6.295 18 FValueSource.Get() m 38 5.343 19 FRowHeaderCell 1 4.394 20 dh_record_read:dh.cpp c 9225 4.021 21 <code object __init__ at 1374AA08, file "\\prime\2014.3-4.17.568.0-2 3067 3.514 22 FFxCell.CellValue(baseDateTime) m 75 2.818 23 <code object __init__ at 137573F0, file "\\prime\2014.3-4.17.568.0-2 2081 2.115 24 dh_quotations:tools.cpp c 1 1.913

Page 30: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 30 of 102

5 Appendix A: Configuration and command-line options The basic PRIME behaviour is affected by the following files and a set of command-line options:

• b92_rec_doc.txt describes the data model, see section 7 Appendix C: b92_rec_doc.txt. • suggestname.ttt contains rules for instrument names, see section 6.2 suggestname.ttt. • arena_<version>.ini specifies the setup environment, see section 5.1 arena_<version>.ini. • prime.exe also accepts many command-line options, see section 5.2 Options reference.

Additional configuration is done in the application itself. Refer to PRIME Help (FCA1260) for more information about the in-application configuration.

5.1 arena_<version>.ini The ARENA initialisation file, arena_<version>.ini, is used to specify startup and other environment options for PRIME. The file arena_<version>.ini is found in different locations on different Windows versions.

• Windows 7: C:\ProgramData\Front\ini\arena_<version>.ini (with a link from C:\Users) • 64-bit Windows 7: C:\ProgramData\Front\64bit\ini\arena_<version>.ini Alternative paths to arena_<version>.ini can after installation be specified in the following ways:

• By using the command-line option -inifile, followed by the full path to arena_<version>.ini, including the file name.

• By setting the system environment variable FCS_DIR_ARENA_INI to the full path of the directory where arena_<version>.ini resides.

If you already before installing know you want to use an alternative location for arena_<version>.ini use the msiexec option FRONTINIDIR to specify the directory where the arena_<version>.ini will be.

Example msiexec /i "D:\prime43\Front Arena PRIME.msi" FRONTINIDIR="T:\admin\prime43\CommonAppData\Front\ini\"

Upgrade note An existing C:\Documents and Settings\All Users\Application Data\Front\ini\arena_<version>.ini is not affected by upgrades or new installations.

Upgrades and new installations include a template file, <Front Arena home>\prime\<version>\arena_<version>.ini_template. After an upgrade, check the template file for new options that might need to be manually included in your existing arena_<version>.ini.

5.1.1 Options The following table shows the initialisation file options that can be set in arena_<version>.ini.

[ARENA] context In addition to the options listed here, all command-line options (see 5.2 Options reference) can also be added to the [ARENA] context. The syntax is slightly different from the command line.

On the command line, the syntax is:

-<option name> <value>

Page 31: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 31 of 102

In arena.ini, the syntax is:

<option name>=<value>

Option Description

B92_REC_DOC_FILE Path and file name of b92_rec_doc.txt. This is where PRIME looks first. PRIME will then look in the current directory and issue a warning so that you are aware that it is using a local version.

FCS_SUGGEST_NAME_FILE Path and file name of suggestname.ttt. This is where PRIME looks first. PRIME will then look in the current directory and issue a warning so that you are aware that it is using a local version.

FCS_DIR_LOCAL Location of customer-specific files.

FCS_DIR_RISK Location of risk metrics and scenario files.

FCS_DIR_TMP Location of temporary files.

FCS_DIR_PYTHON_LIB Location of the Python lib.

FCS_DIR_PYTHON_EXT Location of Python extensions. You can set multiple directories in FCS_DIR_PYTHON_EXT, which enables you to define custom locations for Python extensions. The directories must be separated by a semicolon (";").

logdir Location of all log files.

[ARENA.PRIME] context Legacy subcontext, currently not used by default. The [ARENA] context is used by all components using the arena_<version>.ini file. The [ARENA.PRIME] subcontext is only used by PRIME and can be used to specify PRIME options that override the options in the [ARENA] context.

[ADSServers] context

Option Description

nbrOfItems Number of the ADS specified in the file.

Server<number> List of ADS names. These names appear in the ADS server field on the logon window.

ServerAddress Address for each ADS name.

PrimaryServerAddress Used to locate the primary ADS in a replicated installation.

nbrOfFailOverItems Number of the alternative ADS in a failover setup. Note: This option is not present in arena_<version>.ini_template. It must be added to arena_<version>.ini if it is to be used.

FailOverAddress0 Address to the alternative ADS in a failover setup. Note: This option is not present in arena_<version>.ini_template. It must be added to arena_<version>.ini if it is to be used.

Page 32: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 32 of 102

Option Description

PingInterval=15 Send heart beats to the ADS. A heart beat message is sent every "pinginterval" seconds, if no activity is detected on the socket after another "pinginterval" seconds, the connection is broken, and the client is offered to reconnect to another ADS. Clients will only send heart beats if a failover ADS is available in the client configuration. Default value of "pinginterval" is 30 sec. Note: This option is not present in arena_<version>.ini_template. It must be added to arena_<version>.ini if it is to be used.

See section 5.1.3 Defining servers for explanations of additional options related to the ADS.

5.1.2 About arena_<version>.ini contexts All options in arena_<version>.ini are defined in different contexts. A context is defined by a context label between square brackets, for example [ARENA]. All option defined after one context label but before the next context label belong to the first context.

The [ARENA] context is the highest context level. Every option defined in this context is valid for every Front Arena component that uses the arena_<version>.ini file.

By defining a subcontext to [ARENA] it is possible to define component-specific options. A subcontext label is defined using the syntax [ARENA.<component>], for example, [ARENA.PRIME].

All values defined in a subcontext override the same options defined in the parent context, in other words, any component-specific settings override the equivalent Front Arena settings.

5.1.3 Defining servers

[ADSServers] context The ADSServers context contains the definition of the available ARENA Data Servers.

First, the number of servers is defined:

nbrOfItems= <number>

Then a list of all servers:

Server0 = <servername1> Server1 = <servername2>

Note: Do not use the characters ampersand (&), at (@), or colon (:) when defining these server names.

All servers then have a context where the server address is defined:

[ADS.servername1] ServerAddress=hostname:port [ADS.servername2] ServerAddress=hostname:port

The list of servers (server0…servern) appears in ADS server on the PRIME logon window.

Page 33: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 33 of 102

5.2 Options reference Most of these options can also be used as initialisation option in the arena_<version>.ini file.

On/Off options Options that are either active or inactive come in two variants: options requiring a value and "switch"-style options that are active if provided. This is best illustrated with an example:

Example Differences between the options -archived and -log_to_server.

-archived is a switch-style option. It is enough to supply this option to activate it. Even -archived 0 turns the behaviour on. The only way to turn it off is to not supply the option.

-log_to_server is an option that requires a value. Supply the value 1 to activate the functionality, or the value 0 to inactivate the functionality.

Default values The default value is what PRIME uses if the option is not supplied. Switch-style options, which do not take a value, are described as On or Off.

Note: The options and option values supplied by default in the file arena.ini_template are not default values. Consider these to be example values.

5.2.1 Options Option Description

-? Show short descriptions of all command-line options. Default: Off Example: -?

-amasdomain domain Name of the Arena Market Access Server (AMAS) domain. Refer to System Administration: AMS Permissions (FCA1190). Default: undefined Example: -amasdomain internal

-amaspwd password Password to the Arena Market Access Server (AMAS). Refer to System Administration: AMS Permissions (FCA1190). Default: undefined Example: -amaspwd arena

-archived PRIME reads archived data from the ARENA Data Server. Refer to Data Management: BDP Trade Aggregation (FCA1816) for more information. Default: Off Example: -archived

-argfile file Use -argfile to supply a file containing a list of command options (as would be specified on the command line). Default: undefined Example: -argfile c:\temp\testarg.txt

Page 34: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 34 of 102

Option Description

-autologin Do not ask for user credentials. Logon automatically using Windows username. Default: Off Example: -autologin

-batchmode Disable subscriptions to perform tasks quicker. Usable when running AEL tasks that are not depending on subscriptions. Default: Off Example: -batchmode

-checkgridcolumns Inform user about column overrides. See -checkgridcolumns. Default: Off Example: -checkgridcolumns

-client_server_logging 0|1 Log detailed information about the communication between the ADS and the log file. To log all record types, set the option to 1. Alternatively, you can provide a list of the record types to log (for example, -client_server_logging "User;Trade"). Default: 0 Example: -client_server_logging 1

-collation Specifies the collation to be used. Works only in Unicode mode. Example of collation names: • de – German • sv – Swedish • fr – French • en -Enlish Default: None Example: -collation sv

-colour colour Specifies session colour scheme with either a predefined colour name or a custom colour value. The predefined colours are: • "Light Red" • "Dark Red" • "Light Green" • "Dark Green" • "Light Blue" • "Dark Blue" • "Purple" • "Olive" • "Gold" The custom colour is given in the following format: • "MyColor=r155, g155 b155" Default: undefined Example: -color "purple"

Page 35: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 35 of 102

Option Description

-context context Specifies the file context in the initialisation file from where PRIME reads. Default: undefined Example: -context [ARENA.test]

-customername name Make the supplied name appear in the title bar of PRIME. Default: undefined Example: -customername NewBank

-customguitracking When enabled, extra information about the fields logical name is displayed in the tooltips and information about the source of the menu item is be added after the items name. For menu items created from extensions, information about the module and the definition is provided. The log categories "gui - custom menus" and "gui - custom layouts" are enabled automatically when enabling "customguitracking". When enabled, information about custom menu and layout building is logged. Default: Off Example: -customguitracking

-date_today date Use this day as "today" in calculations. Relative dates can be supplied in the following format: <n><u>, where <n> is a positive or a negative integer, and u is a unit: d, w, m, or y for day, week, month, or year. Note that this is different from the option -historicaldate which basically simulates a past point in time, whereas -date_today does not change any underlying data used in calculations, just the current date. Default: undefined Example: -date_today 2003-05-01

-datezone datezone Set the time zone for dates. Available time zones are found in the Party Definition application in PRIME. See -datezone and -zoneoffset. Default: undefined Example: -datezone Tokyo

-dbgmode mode nbr For use by FIS Front Arena staff only. Write trace log to the PRIME log file. Modes are 1 to 5 with higher numbers meaning more logging. Default: 0 Example: -dbgmode 1

Page 36: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 36 of 102

Option Description

-dbgmodules module=mode For use by FIS Front Arena staff only. If -dbgmode>0, write trace log to the PRIME log file for the listed modules only. A module is an internal PRIME file name. Use "=<number>" to set the dbgmode for each module. Default: undefined Example: -dbgmodules {dsapi} -dbgmodules {dsapi=2} -dbgmodules {dsapi=2,dh=1}

-disableinstrumentlots For use by FIS Front Arena staff only. Option for debugging. Do not use instrument lots in ADFL valuation trees. Default: Off Example: -disableinstrumentlots

-displayhostname By default, -displayhostname is not set and then PRIME sends the hostname of the machine where the prime.exe process is running to the ADS. If -displayhostname is set, then PRIME instead sends the hostname of the machine where the PRIME GUI is displayed. Default: Off Example: -displayhostname

-distributionconfiguration config name

Override distribution configuration. Use the Distribution Configuration supplied, regardless of other (user) configuration. If the configuration cannot be found, PRIME will show an error message and exit. Default: Off/undefined Example: -distributionconfiguration test

-dontexpand For use by FIS Front Arena staff only. Do not expand the garbage collector memory heap unless forced to. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. Default: Off Example: -dontexpand

-ebcachestrategy number Restrain memory usage by setting caching strategy in evaluator builders. See -ebcachestrategy. Default: 0 Example: -ebcachestrategy 200

Page 37: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 37 of 102

Option Description

-embedded_server_config For use by FIS Front Arena staff only. Path and file name pointing to the embedded server configuration file. Default: undefined Example: -embedded_server_config C:\Users\ricber01\Desktop\eADS\eads.ini

-embedded_server_path For use by FIS Front Arena staff only. Path to the embedded server dynamic library. Optional, default search paths for the operating system are used if option is not supplied. Default: undefined Example: -embedded_server_path C:\Users\ricber01\Desktop\eADS

-extappserver server External application server name, in the format ipc://host/directory. Refer to Developer Guide: ACM .NET (FCA4584). Default: undefined Example: -extappserver ipc://faserv/a

-failoverservers servers List of alternative servers in the failover solution. Default: undefined Example: -failoverservers sun03:9012

-filterlog 0|1 Filter out duplicate log entries. Disable filtering out of duplicate log entries by setting -filterlog to 0. See Duplicate logging. Default: 1 Example: -filterlog 0

-fixedroots Limit the garbage collection. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. Default: Off Example: -fixedroots

-forcedistributedprocessing 0|1

For use by FIS Front Arena staff only. Force all compatible sheets to run in distributed mode when reporting (not in the GUI). If the complementary option -distributionconfiguration is not supplied then the sheets will run in local distributed mode, that is, be distributed to a local prime.exe worker subprocess. Default: 0 Example: -forcedistributedprocessing 1

Page 38: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 38 of 102

Option Description

-fsd nbr For use by FIS Front Arena staff only. Set the free_space_divisor count in the garbage collector. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. If fsd is set to 0 or has no value at all, the default value 3 is used. Default: 3 Example: -fsd 5

-gclog Enables the log category "base – garbage collection", which logs the garbage collector messages to the log window. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. Default: Off Example: -gclog

-gridcellprofiling level Enable "performance cost" profiling of cells in sheets. The option takes one parameter indicating the level of profiling. A positive level value sets the number of levels in the ADFL tree to profile. Value 1 profiles only the topmost evaluators in the ADFL tree, value -1 profiles the entire ADFL tree, and value 0 disables profiling. Default: 0 Example: -gridcellprofiling -1

-help Same as the -? option. Default: Off Example: -help

-historicaldate date System date is set to a historical date in the past. All valuation will use this date as base date. The system is set in historical mode. A session in historical mode will use historical valuation parameters prices stored for that particular date and roll back some financial and technical events. Note that instrument and trade amendments, configurations (such as context mappings, risk factor mappings, and valuation parameters) cannot be rolled back. However, changes in stored valuation parameters, such as in Yield Curve Definition, will be rolled back. For more information, refer to running PRIME in historical mode in PRIME Help (FCA1260). Relative dates can be supplied in the following format: <n><u>, where <n> is a negative integer, and <u> is a unit: d, w, m, or y for day, week, month, or year. Note that this is different than the option -date_today. Default: undefined Example: -historicaldate 2003-05-01

Page 39: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 39 of 102

Option Description

-historicaluseallmarkets Use all markets when reading prices. If not specified, only the selected mark-to-market (MtM) market in Administration Console>Accounting Parameters is used. Default: Off (use the MtM market only) Example: -historicaluseallmarkets

-i18n With -i18n, Extension Editor extensions are saved as pure ASCII. This is necessary if using a Microsoft SQL database in a non-Latin alphabet locale (for example, if locale is set to "Korean"). Default: Off Example: -i18n

-incremental Force the garbage collector to always work in incremental mode. Do not use together with -nonincremental. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. Note: To successfully run large processes in incremental mode on Linux, an administrator must ensure that the value of the sysctl vm.max_map_count setting has been increased and is higher than the default; otherwise, an error message will appear in the log file. A value of 10,000,000 is a good starting point. Other processes are not affected by the sysctl vm.max_map_count setting. Default: incremental mode is enabled by default Example: -incremental

-inifile file Point out an alternative arena_<version>.ini file and read initialisation options from this file instead of from the default file. Default: undefined Example: -inifile C:\temp\test.ini

-ipashost If this option is set, the client will send the IP address in place of the hostname to the ADS. If -ipashost is set together with -displayhostname, the local IP address of the host where the client is displayed will be sent as host. In default mode with -ipashost not set PRIME passes the machine name where the Bloomberg/Reuters and PRIME client applications are to the ADS. This machine name is then converted to an IP Address using the ADS machine's DNS or /etc/hosts file. In some cases, for example, where the PRIME client is behind a firewall, it cannot be possible for the ADS to look up the IP address. In these cases, use -ipashost to change the machine name to the IP address, which would then be passed to the Entitlements .dll file. Default: Off Example: -ipashost

Page 40: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 40 of 102

Option Description

-kerberos Enable Kerberos when logging on to the ADS. See section 4.1.2 Kerberos support. Default: Off Example: -kerberos

-log_to_server 1|0 Write log messages to ADS. See section 4.2 Logging. Send the same log information that is written to the log file to the ADS and store it in the server_client_log table in the ADM database. Only the latest log entry is stored in the table. Default: 1 Example: -log_to_server 0

-log_to_terminal 1|0 Write all log messages to the terminal (log file). Default: 1 Example: -log_to_terminal 0

-logcategory category Control which loggings to initiate. Use with caution, some log categories affect behaviour and extensive logging can affect performance. The available log categories are listed in PRIME under Admin>Monitoring Console>Log Categories. Default: undefined Example: -logcategory "base - exceptions"

-memsize 1|0 Enable the log category "base - memory size", which logs the garbage collector memory consumption to the log window. The logging frequency is set by -memsizedelta. Default: 0 Example: -memsize 1

-memsizedelta mb Delta in megabytes between two -memsize loggings. Default: 1 Example: -memsizedelta 10

-memtrace Enable the log category "base - memory trace enable" which collects memory allocation statistics. To see the collected statistics, enable the log category "base - memory trace statistics". Default: Off Example: -memtrace

-model model For use by FIS Front Arena staff only. Use custom model mapping. Default: undefined Example: -model test

-monitor_address address The address (host:port) for PACE monitoring. Default: undefined Example: -monitor_address server1:9100

Page 41: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 41 of 102

Option Description

-monitor_host_name name The host name to use when the monitor address or the command-port address is registered in the ADS. If an explicit -monitor_address (host:port) is defined, the host name defined is used when registering in the ADS, as opposed to 127.0.0.1. Default: undefined Example: -monitor_host_name server1

-no_split_adj Deprecated – do not use. PRIME will not make any adjustments for stock splits. No adjustment for stock splits. This is related to corporate actions. Instead of running corporate action scripts to modify the data in the database the ADS is capable of recalculating on the fly before sending data to clients, such as PRIME. This means that PRIME will show data as affected by the corporate action, but the original data will still be in the database. The option -no_split_adj makes the client request the actual database data from the ADS, without the corporate action adjustment. Default: Off Example: -no_split_adj

-nodefaultworkspace Do not load the default workspace when starting. Default: Off Example: -nodefaultworkspace

-nonincremental For use by FIS Front Arena staff only. Force the garbage collector to always work in non-incremental mode, instead of in the default incremental mode. -nonincremental makes PRIME unresponsive for periods. -nonincremental does not affect the Python or the Information Manager memory usage. Do not use together with -incremental. For information about the garbage collector, see section 5.2.3 Garbage collection configuration. Default: Off Example: -nonincremental

-notraceback Do not generate trace back information on system failure. Default: Off Example: -notraceback

-password password Use this option to specify the logon password. Default: undefined Example: -password 123abc

-pinginterval interval For use in failover configurations. Sets the PRIME heart-beat interval. If PRIME registers no activity from the ADS in pinginterval * 2 seconds, it will try to switch to an alternative ADS. Default: -1 Example: -pinginterval 15

Page 42: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 42 of 102

Option Description

-pollinthread 1|0 Read data from network in separate thread if main thread is busy for more than -pollthreadperiod. Disable by setting to 0. Default: 1 Example: -pollinthread 0

-pollthreadperiod period Milliseconds to wait before reading network data on a separate thread if the main thread is busy. Valid only if -pollinthread is active. Default: Example: -pollthreadperiod 5

-primary_server address Address of the primary ADS. Used when running PRIME in a replicated environment. Default: undefined Example: -primary_server server2:9000

-proc_frequency interval Interval, in seconds, with which to log process information to the ADS. See section 4.2 Logging. Default: 2 Example: -proc_frequency 60

-regserver For use by FIS Front Arena staff only. Register PRIME as a COM server. PRIME does not start when this option is provided. Default: Off Example: -regserver

-ribbons 0|1|2 Specify ribbons mode: • 0: Start PRIME with menus instead of ribbons. (This

option is deprecated and will be removed in a later release.)

• 1: Start PRIME with ribbons (standard behaviour). • 2: Start PRIME with ribbons in all windows (experimental,

for use by FIS Front Arena only). Default: 1 Example: -ribbons 1

-runaeltask task Run the specified AEL task then exit. See also -startupaeltask. Default: undefined Example: -runaeltask myTask

-server server Default ADS (in the format hostname:port). If specified, it appears as default in the ADS server field, in the logon window. Default: undefined Example: -server server1:6000

Page 43: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 43 of 102

Option Description

-session session Name of the session (PRIME Workspace) containing parameter settings for valuations to be used in the ATS. Requires the parameter runaeltask to be defined. Default: undefined Example: -session ats_session

-showcustomername Show server_data customer name in all captions. Default: undefined Example: -showcustomername

-softcmx For use by FIS Front Arena staff only. For testing purposes. Do not populate the Default extension module with built-in extensions. Default: Off Example: -softcmx

-startupaeltask task Run named AEL task at startup. See also -runaeltask. Default: undefined Example: -startupaeltask myTask

-suppresspopups For use by FIS Front Arena staff only. Prevents PRIME windows, for example, the log window, from taking focus. Suppress the Fatal Application Error window that otherwise appears if PRIME crashes. Default: Off Example: -suppresspopups

-testmode For use by FIS Front Arena staff only. Default: Off Example: -testmode

-tracebackonwarning Produce trace backs on warnings. See -tracebackonwarning. Default: Off Example: -tracebackonwarning

-tradefilternoasql Do not runtime convert trade filters to ASQL. Default: Off Example: -tradefilternoasql

-uitest For use by FIS Front Arena staff only. Disable certain features, used for testing. Default: Off Example: -uitest

-unicode Starts PRIME in Unicode mode. This requires the ADS and ADM to be configured for Unicode. Default: Off Example: -unicode

Page 44: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 44 of 102

Option Description

-unregserver For use by FIS Front Arena staff only. Unregister PRIME as a COM server. PRIME does not start with this option given. Default: Off Example: -unregserver

-useclrinacm Enable the use of Common Language Runtime classes in the ARENA Class Model (ACM). Use this switch when starting PRIME with ACM .NET. For more information, refer to Developer Guide: ACM .NET (FCA4584). Default: Off Example: -useclrinacm

-username name Default ARENA user. If specified, it appears as the default User name in the logon window. Default: undefined Example: -username rickb

-validatestandardcontext Warn if the context "Standard" has been altered. Default: Off Example: -validatestandardcontext

-version Display the version and the build time. Default: Off Example: -version

-visibleLogonDialogLevels level

Enable or disable fields on the logon window: • 0: Only the User name and Password field are displayed. • 1: Only the fields User name, Password, AMAS

Password, ADS Server, and Load Default Workspace are displayed.

• 2: All fields are displayed. Default: 2 Example: -visibleLogonDialogLevels 0

-workspace workspace Load the specified workspace when starting. Default: undefined Example: -workspace admin

-wutcount threads Number of background work unit threads. Set -wutcount to specify the number of work unit threads. If not specified, the system uses the number of cores * 2 threads. To disable this functionality, set -wutcount to 0. Default: -1 Example: -wutcount 4

-xadfl For use by FIS Front Arena staff only. Enable extended ADFL for test purposes. Default: Off Example: -xadfl

Page 45: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 45 of 102

Option Description

-zoneoffset seconds Time zone offset for dates, in seconds. See -datezone and -zoneoffset. Default: 0 Example: -zoneoffset 7200

-default_extension_context extensioncontext

The extension context to use. Default: undefined Example: -default_extension_context userContext

5.2.2 PRIME options’ details This section provides further explanations of some of the options.

-checkgridcolumns This is primarily related to upgrades. When -checkgridcolumns is used, PRIME checks for and displays all column overrides that affect the session and differ from the preset values delivered in the built-in modules.

If any such overrides are found, the user is presented with a window, instructing the user to inform the system administrator that this window appears, and that the administrator should have already removed or verified all potentially harmful column overrides in the upgrade process.

The system administrator should remove all potentially harmful overrides before the new release is put into production. This is done in the Verify Column Overrides window, which is available under Admin>Administration Console>Control Parameters, by clicking the Verify Column Overrides button. The window has a grid with all non-built-in extension modules. The first column displays the module names, the second (Verified In) shows the version of a verification in a module, and the third (Operation) shows all unapplied changes.

The version used when verifying is shown in an input field. The default value is the current PRIME release, but the administrator can change it to any desired value, that is, it is possible to back to any previous release.

In the verify window, the administrator can perform four actions on the modules presented in the grid:

• Verify: Set the overrides as verified in the selected modules. • Unverify: Remove earlier verification from the selected modules. • Revert: Remove unapplied changes on the selected modules. • Revert All: Remove all unapplied changes in the entire list.

By clicking Apply or OK, the administrator commits all changes, and the grid will be updated. The modules with committed verifications or uncommitted changes are always presented first in the grid. Normally the administrator will just verify in one module that is used in the organisation and that all users have in their contexts, that is, it will affect all users, or in all user modules.

The column attributes that are checked are:

• ExtensionAttribute • Method • Format • Class • OnPostInputHook

Page 46: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 46 of 102

• OnInputHook • BaseExtensionAttribute • Type • ChoiceExpr • InheritsFrom • ValueType • ReadOnly • Save • ValueType

It is also possible to open the Column Overrides window from Admin>Administration Console>Control Parameters, but when opened from there, all potentially harmful overrides in all non-built-in modules are shown.

-datezone and -zoneoffset Add time zone and offset as command-line arguments to express in which local time dates are specified.

Without these options a date is defined to start and end at midnight local time according to the computer. This can create problems with sites in different time zones running toward the same database. In such cases, use -datezone and -zoneoffset to specify a time zone for dates, at what time dates start and end.

Available time zones are found in the Party Definition application, by selecting the Correspondent Bank check box.

Example By specifying -datezone Tokyo and -zoneoffset 7200, the day will change two hours (7,200 sec) after the midnight Tokyo time.

-ebcachestrategy Try setting -ebcachestrategy if PRIME or the ATS keeps running out of memory.

Note: When memory usage is an issue, FIS Front Arena strongly recommends using 64-bit PRIME on 64-bit Windows.

The purpose of -ebcachestrategy is to resolve a garbage collect situation that in some cases results in continuously increasing memory usage, most frequently seen in reporting and Information Manager type work. In the typical situation, memory usage develops toward infinity, and ebcachestrategy breaks this trend.

This is achieved by modifying the caching strategy in FEvaluatorBuilder evaluator builders. In normal operation the evaluator builder caches are flushed after a period of low builder activity, but in some cases, activity remains above the threshold, causing unbound memory growth.

Page 47: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 47 of 102

ebcachestrategy can be used also to reduce memory usage in other cases. Well-tuned usage of ebcachestrategy will reduce memory usage in most situations, the trade-off is increased CPU usage, sometimes with longer startup and execution times.

The result of using ebcachestrategy varies significantly between cases, and it is not possible to predict it in detail. Testing must be done to find the optimal ebcachestrategy value. The following is a schematic graphic of the relation between the ebcachestrategy value, memory usage, and CPU usage:

When setting ebcachestrategy, start with -ebcachestrategy 200. If the result is good enough, use that value. If not, try with -ebcachestrategy 100. If the result is good enough, use that value. If not, continue to change the value in steps of a 100, 50, or 10 in the range 0 to 1,000 until you are satisfied, or until it is not possible to improve performance any more. Be prepared that the penalty in CPU usage, time, might be high.

Setting a negative value (for example, -ebcachestrategy -200) puts a much stricter limit on memory usage and is primarily intended for Front Arena internal testing during development.

The cache strategies are (number : strategy):

• > 0 : lruHybrid with <number> fixed elements • = 0 : passive (default behaviour) • < 0 : lru with abs(<number>) elements

-tracebackonwarning Use -tracebackonwarning as a help in identifying why warning messages are produced. -tracebackonwarnings activate traceback generation also for warnings (LOG_WARN) and not only for errors (LOG_ERROR), which is the default.

-wutcount The following valuation models will run with multi-threading by default, unless PRIME is started with -wutcount 0:

• Barrier Continuous Monte Carlo • Barrier Finite Difference Local Volatility • Barrier Finite Difference Local Volatility Full Yield Curve • Credit Basket Linear • Credit Basket Monte Carlo • Credit Basket Monte Carlo IS • Credit Basket MC One Factor • Credit Basket MC One Factor IS • Semi-Analytic Basket Underlying • Finite Difference Local Volatility • Finite Difference Local Volatility Full Yield Curve • Finite Difference

Page 48: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

5 Appendix A: Configuration and command-line options 48 of 102

• Finite Difference Full Yield Curve • Finite Difference Underlying Future • Trinomial Swaption

5.2.3 Garbage collection configuration In PRIME, the garbage collector runs in incremental mode by default, which gives better startup times for larger processes. For details, see section 11.8 Memory garbage collection.

Page 49: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 49 of 102

6 Appendix B: Table Translation Tool and suggestname.ttt The Table Translation Tool (TTT) is used to generate standard names when creating new instruments in PRIME. This section describes the tool and how to use it to generate customised names when creating new instruments.

Note: The AEL hook FInstrumentSuggestId can be used as an alternative to modify suggestname.ttt.

6.1 TTT The translation program, TTT, takes a text file as input. The text file contains one or more tables. The tables define input parameters and output parameters. These parameters are used to determine the translation result.

Example To translate a month character string to a month number.

#table Month \\ MonthNr ---------------- JAN \\ 1 FEB \\ 2 MAR \\ 3 APR \\ 4 MAY \\ 5 JUN \\ 6 JUL \\ 7 AUG \\ 8 SEP \\ 9 OCT \\ 10 NOV \\ 11 DEC \\ 12 ----------------

In this example, containing one table, the only input parameter named Month is translated to a single output parameter named MonthNr. By default, parameters are of type string, so the output parameter MonthNr is returned in a character string.

The table has a table header, a match side, and a rules side. The table header starts the table with #table and lists the parameters to the table: input parameters to the left of the \\ and output parameters to the right. The match side is the left side of the table (left of the \\). It is used when matching input parameters. The rules side is the right side of the table (to the right of the \\). It describes the rules for generating the output parameters.

At translation, the TTT takes the actual values of the input parameters and matches them against the match sides of tables in the TTT file (for example, suggestname.ttt). In this case, for example, with Month="JUN", the table is searched top down until a match occurs. The row where a match occurs is then followed to the rules side, and the rules are executed to generate the output parameter.

In this case, for Month="JUN", there is one rule, the rule is to return the character string "6" in MonthNr. All values in the table (containing only strings) could have been written within double

Page 50: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 50 of 102

straight quotation marks (""), but these can be omitted for strings that do not contain blanks or operators (more on operators later).

Input parameters to the TTT file are considered constant during the translation.

6.1.1 Translation mechanism The tables are executed in the order they are defined in the TTT file. Starting with the first table: Matching is done with the current value of the input parameters to that table, searching top down on the match side, stopping when a match is found (that is, all input parameters match the table patterns on that row). The corresponding rules on the rules side are then evaluated, giving new values for the output parameters of that table. Then the next table is executed, and so on until end of file.

6.1.2 File format The TTT file is built from one or more translation tables, where output parameter results in one table can be used in other tables further down in the file.

General structure The TTT-file (the tables file) has the following general structure:

#table (one or more translation tables) #table

The tables file is free-format, with the only exception that table rows must be completed before end-of-line (that is, carriage return). Note that VMS cannot handle rows longer than 512 characters.

Comments start with "--", and end with end-of-line.

Matching regular expressions On the match side of a table (the left side), there are, on each table row, table patterns for each input parameter to that table. These table patterns are used when matching the current values of the input parameters. The table patterns can be given using regular expressions. This is a powerful method of specifying matching strings.

Matching is not case sensitive, for example, juN matches Jun perfectly.

Match entries that are strings can also be given within double straight quotation marks, for example, "25.*2A". The string within the quotation marks will not be interpreted as a regular expression. It will match 25.*2A and 25.*2a.

Rules The rules side of a table contains rules for generating the output parameters. Each output parameter has a rule that specifies how to create it for a given set of input parameters (on the match side). Building blocks are the input parameters to the tables file, constants, and results from other previous tables.

The following are the building blocks in a rule:

• Constant "JAN" can be written without "" if it does not contain a blank or an operator. • Value of input parameter of type string. • Value of string output parameter of a previous table.

Page 51: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 51 of 102

The following are the operators in a rule:

• + concatenates strings • x[i] using a character in a string x • z[1..u] using a substring of the string z

6.1.3 Regular expressions You can include regular expression matching in your programs. Regular expressions are a notation for specifying and matching strings.

Here is a summary of regular expressions.

Regular expressions have a syntax in which a few characters are special constructs and the rest are "ordinary". An ordinary character is a simple regular expression, which matches that character and nothing else. The special characters are: "$", "^", ".", "*", "+", "?", "[", "]","(",")","|", and "\"; no new special characters will be defined. Any other character appearing in a regular expression is ordinary, unless a "\" precedes it.

For example, "f" is not a special character, so it is ordinary, and therefore "f" is a regular expression that matches the string "f" and no other string. (It does not match the string "ff".) Likewise, "o" is a regular expression that matches only "o".

Any two regular expressions A and B can be concatenated. The result is a regular expression which matches a string if A matches some amount of the beginning of that string and B matches the rest of the string.

As a simple example, you can concatenate the regular expressions "f" and "o" to get the regular expression "fo", which matches only the string "fo". Still trivial. To do something non-trivial, you must use one of the special characters. Here is a list of them:

Character Description

. A special character that matches any single character except a newline. Using concatenation, you can make regular expressions, such as "a.b", which matches any three-character string which begins with "a" and ends with "b".

* Not a construct by itself; it is a suffix, which means the preceding regular expression is to be repeated as many times as possible. In "fo*", "*" applies to "o", so "fo*" matches one "f" followed by any number of "o"s. The case of zero "o"s is allowed: "fo*" does match "f". "*" always applies to the smallest possible preceding expression. Thus, "fo*" has a repeating "o", not a repeating "fo". The matcher processes a "*" construct by matching, immediately, as many repetitions as can be found. Then it continues with the rest of the pattern. If that fails, the backtracking occurs, discarding some of the matches of the "*"-modified construct, in case that makes it possible to match the rest of the pattern. For example, matching "ca*ar" against the string "caaar", the "a*" first tries to match all three "a"s; but the rest of the pattern is "ar" and there is only "r" left to match, so this try fails. The next alternative is for "a*" to match only two "a"s. With this choice, the rest of the regular expression matches successfully.

Page 52: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 52 of 102

Character Description

+ A suffix character similar to "*", except that it requires that the preceding expression is matched at least once. So, for example, "ca+r" will match the strings "car" and "caaaar" but not the string "cr", whereas "ca*r" would match all three strings.

? Is a suffix character similar to "*", except that it can match the preceding expression either once or not at all. For example, "ca?r" will match "car" or "cr", nothing else.

[ ... ] " [" begins a "character set", which is terminated by a "]". In the simplest case, the characters between the two form the set. Thus, "[ad]" matches either one "a" or one "d", and "[ad]*" matches any string composed of just "a"s and "d"s (including the empty string), from which it follows that "c[ad]*r" matches "cr", "car", "cdr", "caddaar", and so on. Character ranges can also be included in a character set, by writing two characters with a "-" between them. Thus, "[a-z]" matches any lower-case letter. Ranges can be intermixed freely with individual characters, as in "[a-z$%.]", which matches any lower-case letter or "$", "%", or period. Note that the usual special characters are not special any more inside a character set. A completely different set of special characters exists inside character sets: "]", "-", and "^". To include a "]" in a character set, you must make it the first character. For example, " []a] " matches "]" or "a". To include a "-", write "---", which is a range containing only "-". To include "^", make it other than the first character in the set.

[^ ... ] "[^" begins a "complement character set", which matches any character except the ones specified. Thus, "[^a-z0-9A-Z]" matches all characters except letters and digits. "^" is not special in a character set unless it is the first character. The character following the "^" is treated as if it was first (the characters "-" and "]" are not special there). Note that a complement character set can match a new line, unless new line is mentioned as one of the characters not to match.

^ A special character that matches the empty string, but only if at the beginning of a line in the text being matched. Otherwise, it fails to match anything. Thus, "^foo" matches a "foo" which occurs at the beginning of a line.

$ Is similar to "^" but matches only at the end of a line. Thus, "xx*$" matches a string of one "x" or more at the end of a line.

| Specifies an alternative. Two regular expressions A and B with "|" in between form an expression that matches anything that either A or B will match. Thus, "foo|bar" matches either "foo" or "bar" but no other string. "|" applies to the largest possible surrounding expressions. Only a surrounding "( ... )" grouping can limit the grouping power of "|".

( ... ) A grouping construct that serves for two purposes: • To enclose a set of "|" alternatives for other operations. Thus, "(foo|bar)x"

matches either "foox" or "barx". • To enclose a complicated expression for the postfix "*" to operate on.

Thus, "ba(NA)*" matches vbananana", and so on, with any (zero or more) number of "NA" strings.

Page 53: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 53 of 102

Character Description

\ Has two functions: • It quotes the special characters (including "\"). • It introduces additional special constructs. Because "\" quotes special characters, "\$" is a regular expression which matches only "$", and "\[" is a regular expression which matches only "[", and so on.

6.2 suggestname.ttt

Note: suggestname.ttt is replaced when upgrading PRIME. Any changes in the old file will be lost. Hence, a copy of suggestname.ttt should be edited, and PRIME should be pointed to the copy instead, by editing the FCS_SUGGEST_NAME_FILE entry in the initialisation file, arena_<version>.ini.

It is possible to let PRIME generate a name for an instrument when it is created in PRIME. This is primarily applied to OTC instruments which are created in PRIME at the time it is traded and is used to make sure that the instrument names are consistent also when they are created by different users.

The rules that are used when generating the instrument names are stated in the text file suggestname.ttt which is delivered with PRIME. A tool called Table Translation Tool (TTT) is used to parse the file and to generate the names.

The file suggestname.ttt that is delivered with PRIME contains default rules for all instrument types and in most cases, there is no need to change any of the rules in the file. However, it is fully possible to further customise the generated instrument names by editing suggestname.ttt. For a detailed description of the TTT and how to modify suggestname.ttt, see section 6 Appendix B: Table Translation Tool and suggestname.ttt.

6.2.1 suggestname.ttt variables The available variables are based on the instrument record, its field names, and their reference. Records that can be referenced are:

• Instrument and its legs • Underlying instrument and its legs

References to other records are included by using the unique fields of that record (excluding fields that contain just a number, for example, legnbr). The fields to be used in the TTT translation program are prefixed by:

• INS • UND_INS • LEG1 • LEG2 • UND_LEG1 • UND_LEG2

The underscore character (_) is used to make references to fields.

Page 54: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 54 of 102

The following example lists all fields. All fields are available even if they do not have a meaning. The example is for a swap. Note that the exact fields can vary with different ADM versions.

Variable Example for a swap

INS_RECORD_TYPE <Instrument>

INS_CREAT_TIME <2005-10-13 11:08:01>

INS_CREAT_USRNBR_USERID <GRUNER>

INS_UPDAT_TIME <2005-05-05 16:14:19>

INS_UPDAT_USRNBR_USERID <ERIKHED>

INS_PROTECTION <W:RWD,O:RWD,G:RWD,U:RWD>

INS_OWNER_USRNBR_USERID <>

INS_FOUR_EYE_ON <No>

INS_AUTHORIZER_USRNBR_USERID <>

INS_INSID <.ag-swap>

INS_GENERIC <No>

INS_OPEN_END <No>

INS_NOTIONAL <No>

INS_INSTYPE <Swap>

INS_CURR_INSID <DEM>

INS_CURR_EXTERN_ID1 <>

INS_CURR_EXTERN_ID2 <>

INS_QUOTE_TYPE <Clean>

INS_RATE_TYPE <None>

INS_OTC <Yes>

INS_MTM_FROM_FEED <No>

INS_SPOT_BANKING_DAYS_OFFSET <2>

INS_EXTERN_ID1 <eeeee222>

INS_EXTERN_ID2 <>

INS_SUSPENDED <No>

INS_PRODUCT_CHLNBR_ENTRY <Swap>

INS_PRODUCT_CHLNBR_LIST <ValGroup>

INS_CATEGORY_CHLNBR_ENTRY <>

INS_CATEGORY_CHLNBR_LIST <>

INS_ISSUER <>

INS_ISSUER_PTYNBR_PTYID <>

INS_ISSUER_PTYNBR_PTYID2 <>

INS_CONTR_SIZE <1000000>

Page 55: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 55 of 102

Variable Example for a swap

INS_ORIG_CONTR_SIZE <0>

INS_UND_INSADDR_INSID <>

INS_UND_INSADDR_EXTERN_ID1 <>

INS_UND_INSADDR_EXTERN_ID2 <>

INS_UND_INSTYPE <None>

INS_MONTH_CHAR < >

INS_SETTLEMENT <None>

INS_PAYTYPE <Spot>

INS_EXP_DAY <2005-12-11>

INS_EXP_PERIOD <0d>

INS_PAY_DAY_OFFSET <0>

INS_PAY_PERIOD <0d>

INS_CALL_OPTION <No>

INS_EXERCISE_TYPE <None>

INS_STRIKE_PRICE <0>

INS_STRIKE_CURR_INSID <DEM>

INS_STRIKE_CURR_EXTERN_ID1 <>

INS_STRIKE_CURR_EXTERN_ID2 <>

INS_EXOTIC_TYPE <None>

INS_DIGITAL <No>

INS_BARRIER <0>

INS_PAYOUT <0>

INS_CALLABLE <No>

INS_PUTABLE <No>

INS_EX_COUP_METHOD <None>

INS_EX_COUP_PERIOD <0d>

INS_INDEX_FACTOR <0>

INS_INDEX_TYPE <None>

INS_ROUND_CLEAN <11>

INS_ROUND_PREMIUM <11>

INS_RATE <0>

INS_REF_PRICE <0>

INS_REF_VALUE <0>

INS_RATING1_CHLNBR_ENTRY <>

INS_RATING1_CHLNBR_LIST <>

Page 56: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 56 of 102

Variable Example for a swap

INS_RATING2_CHLNBR_ENTRY <>

INS_RATING2_CHLNBR_LIST <>

INS_RATING3_CHLNBR_ENTRY <>

INS_RATING3_CHLNBR_LIST <>

INS_BETA <0>

INS_COUPONS <0>

INS_COUP_RATE <0>

INS_FACE_VALUE <0>

INS_ISSUE_DAY <2006-01-01>

INS_LAST_COUP_DAY <2006-01-01>

INS_DAYCOUNT_METHOD <None>

INS_ACCRUED_ARREAR <No>

INS_FREE_TEXT <>

INS_SETTLE_CALNBR_CALID <>

INS_STRIKE_TYPE <None>

INS_YTM_METHOD <None>

INS_TOTAL_ISSUED <0>

INS_PRICE_DIFF_LIMIT_ABS <0>

INS_PRICE_DIFF_LIMIT_REL <0>

INS_SHORT_SELL <Short Sell Allowed>

INS_PAY_OFFSET_METHOD <Business Days>

INS_ARCHIVE_STATUS <0>

INS_START_DAY <2006-01-01>

INS_SETTLE_CATEGORY_CHLNBR_ENTRY <>

INS_SETTLE_CATEGORY_CHLNBR_LIST <>

INS_CONVERSION_RATIO <0>

INS_ORIGINAL_CURR_INSID <>

INS_ORIGINAL_CURR_EXTERN_ID1 <>

INS_ORIGINAL_CURR_EXTERN_ID2 <>

UND_INS_RECORD_TYPE <Instrument>

UND_INS_CREAT_TIME <0>

UND_INS_CREAT_USRNBR_USERID <>

UND_INS_UPDAT_TIME <0>

UND_INS_UPDAT_USRNBR_USERID <>

UND_INS_PROTECTION <W:RWD,O:RWD,G:RWD,U:RWD>

Page 57: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 57 of 102

Variable Example for a swap

UND_INS_OWNER_USRNBR_USERID <>

UND_INS_FOUR_EYE_ON <No>

UND_INS_AUTHORIZER_USRNBR_USERID <>

UND_INS_INSID <>

UND_INS_GENERIC <No>

UND_INS_OPEN_END <No>

UND_INS_NOTIONAL <No>

UND_INS_INSTYPE <None>

UND_INS_CURR_INSID <>

UND_INS_CURR_EXTERN_ID1 <>

UND_INS_CURR_EXTERN_ID2 <>

UND_INS_QUOTE_TYPE <None>

UND_INS_RATE_TYPE <None>

UND_INS_OTC <No>

UND_INS_MTM_FROM_FEED <No>

UND_INS_SPOT_BANKING_DAYS_OFFSET <0>

UND_INS_EXTERN_ID1 <>

UND_INS_EXTERN_ID2 <>

UND_INS_SUSPENDED <No>

UND_INS_PRODUCT_CHLNBR_ENTRY <>

UND_INS_PRODUCT_CHLNBR_LIST <>

UND_INS_CATEGORY_CHLNBR_ENTRY <>

UND_INS_CATEGORY_CHLNBR_LIST <>

UND_INS_ISSUER <>

UND_INS_ISSUER_PTYNBR_PTYID <>

UND_INS_ISSUER_PTYNBR_PTYID2 <>

UND_INS_CONTR_SIZE <0>

UND_INS_ORIG_CONTR_SIZE <0>

UND_INS_UND_INSADDR_INSID <>

UND_INS_UND_INSADDR_EXTERN_ID1 <>

UND_INS_UND_INSADDR_EXTERN_ID2 <>

UND_INS_UND_INSTYPE <None>

UND_INS_MONTH_CHAR <>

UND_INS_SETTLEMENT <None>

UND_INS_PAYTYPE <None>

Page 58: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 58 of 102

Variable Example for a swap

UND_INS_EXP_DAY <2006-01-01>

UND_INS_EXP_PERIOD <0d>

UND_INS_PAY_DAY_OFFSET <0>

UND_INS_PAY_PERIOD <0d>

UND_INS_CALL_OPTION <No>

UND_INS_EXERCISE_TYPE <None>

UND_INS_STRIKE_PRICE <0>

UND_INS_STRIKE_CURR_INSID <>

UND_INS_STRIKE_CURR_EXTERN_ID1 <>

UND_INS_STRIKE_CURR_EXTERN_ID2 <>

UND_INS_EXOTIC_TYPE <None>

UND_INS_DIGITAL <No>

UND_INS_BARRIER <0>

UND_INS_PAYOUT <0>

UND_INS_CALLABLE <No>

UND_INS_PUTABLE <No>

UND_INS_EX_COUP_METHOD <None>

UND_INS_EX_COUP_PERIOD <0d>

UND_INS_INDEX_FACTOR <0>

UND_INS_INDEX_TYPE <None>

UND_INS_ROUND_CLEAN <0>

UND_INS_ROUND_PREMIUM <0>

UND_INS_RATE <0>

UND_INS_REF_PRICE <0>

UND_INS_REF_VALUE <0>

UND_INS_RATING1_CHLNBR_ENTRY <>

UND_INS_RATING1_CHLNBR_LIST <>

UND_INS_RATING2_CHLNBR_ENTRY <>

UND_INS_RATING2_CHLNBR_LIST <>

UND_INS_RATING3_CHLNBR_ENTRY <>

UND_INS_RATING3_CHLNBR_LIST <>

UND_INS_BETA <0>

UND_INS_COUPONS <0>

UND_INS_COUP_RATE <0>

UND_INS_FACE_VALUE <0>

Page 59: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 59 of 102

Variable Example for a swap

UND_INS_ISSUE_DAY <2006-01-01>

UND_INS_LAST_COUP_DAY <2006-01-01>

UND_INS_DAYCOUNT_METHOD <None>

UND_INS_ACCRUED_ARREAR <No>

UND_INS_FREE_TEXT <>

UND_INS_SETTLE_CALNBR_CALID <>

UND_INS_STRIKE_TYPE <None>

UND_INS_YTM_METHOD <None>

UND_INS_TOTAL_ISSUED <0>

UND_INS_PRICE_DIFF_LIMIT_ABS <0>

UND_INS_PRICE_DIFF_LIMIT_REL <0>

UND_INS_SHORT_SELL <Short Sell Allowed>

UND_INS_PAY_OFFSET_METHOD <None>

UND_INS_ARCHIVE_STATUS <0>

UND_INS_START_DAY <2006-01-01>

UND_INS_SETTLE_CATEGORY_CHLNBR_ENTRY <>

UND_INS_SETTLE_CATEGORY_CHLNBR_LIST <>

UND_INS_CONVERSION_RATIO <0>

UND_INS_ORIGINAL_CURR_INSID <>

UND_INS_ORIGINAL_CURR_EXTERN_ID1 <>

UND_INS_ORIGINAL_CURR_EXTERN_ID2 <>

LEG1_RECORD_TYPE <Leg>

LEG1_CREAT_TIME <2005-10-13 11:08:08>

LEG1_CREAT_USRNBR_USERID <GRUNER>

LEG1_UPDAT_TIME <2005-05-05 16:14:19>

LEG1_UPDAT_USRNBR_USERID <ERIKHED>

LEG1_INSADDR_INSID <.ag-swap>

LEG1_INSADDR_EXTERN_ID1 <eeeee222>

LEG1_INSADDR_EXTERN_ID2 <>

LEG1_LEGNBR <11308>

LEG1_TYPE <Fixed>

LEG1_PAYLEG <No>

LEG1_DAYCOUNT_METHOD <30E/360>

LEG1_CURR_INSID <DEM>

LEG1_CURR_EXTERN_ID1 <>

Page 60: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 60 of 102

Variable Example for a swap

LEG1_CURR_EXTERN_ID2 <>

LEG1_NOMINAL_FACTOR <1>

LEG1_FLOAT_RATE_INSID <>

LEG1_FLOAT_RATE_EXTERN_ID1 <>

LEG1_FLOAT_RATE_EXTERN_ID2 <>

LEG1_FLOAT_RATE2_INSID <>

LEG1_FLOAT_RATE2_EXTERN_ID1 <>

LEG1_FLOAT_RATE2_EXTERN_ID2 <>

LEG1_ROUNDING <Normal>

LEG1_DECIMALS <5>

LEG1_START_DAY <2005-12-11>

LEG1_START_PERIOD <-370d>

LEG1_END_DAY <2005-12-11>

LEG1_END_PERIOD <5y>

LEG1_ROLLING_PERIOD <1y>

LEG1_ROLLING_BASE_DAY <2005-12-11>

LEG1_PAY_DAY_OFFSET <0d>

LEG1_PAY_DAY_METHOD <Mod. Following>

LEG1_PAY_CALNBR_CALID <Frankfurt>

LEG1_PAY2_CALNBR_CALID <>

LEG1_PAY3_CALNBR_CALID <>

LEG1_RESET_TYPE <Single>

LEG1_RESET_PERIOD <0d>

LEG1_RESET_DAY_OFFSET <-2>

LEG1_RESET_DAY_METHOD <Following>

LEG1_RESET_CALNBR_CALID <London>

LEG1_RESET2_CALNBR_CALID <>

LEG1_RESET3_CALNBR_CALID <>

LEG1_FIXED_RATE <5.1>

LEG1_FIXED_COUPON <Yes>

LEG1_EXCLUDE_FIRST_PERIOD <No>

LEG1_SPREAD <0>

LEG1_STRIKE <0>

LEG1_EXOTIC_TYPE <None>

LEG1_BARRIER <0>

Page 61: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 61 of 102

Variable Example for a swap

LEG1_NBR_EXERCISES <0>

LEG1_NOMINAL_AT_END <No>

LEG1_CASH_FLOWS_UPDATED <No>

LEG1_IS_LOCKED <No>

LEG1_RESET_IN_ARREAR <No>

LEG1_LONG_STUB <No>

LEG1_AMORT_PERIOD <0d>

LEG1_FLOAT_RATE_FACTOR <0>

LEG1_FLOAT_RATE_OFFSET <0>

LEG1_AMORT_TYPE <None>

LEG1_AMORT_START_DAY <2005-10-28>

LEG1_AMORT_START_PERIOD <0d>

LEG1_AMORT_END_DAY <2005-10-28>

LEG1_AMORT_END_PERIOD <0d>

LEG1_AMORT_DAYCOUNT_METHOD <30E/360>

LEG1_AMORT_END_NOMINAL_FACTOR <0>

LEG1_ANNUITY_RATE <0>

LEG1_DIGITAL <No>

LEG1_ARCHIVE_STATUS <0>

LEG1_ORIGINAL_CURR_INSID <DEM>

LEG1_ORIGINAL_CURR_EXTERN_ID1 <>

LEG1_ORIGINAL_CURR_EXTERN_ID2 <>

LEG2_RECORD_TYPE <Leg>

LEG2_CREAT_TIME <2005-10-13 11:08:02>

LEG2_CREAT_USRNBR_USERID <GRUNER>

LEG2_UPDAT_TIME <2005-05-05 16:14:19>

LEG2_UPDAT_USRNBR_USERID <ERIKHED>

LEG2_INSADDR_INSID <.ag-swap>

LEG2_INSADDR_EXTERN_ID1 <eeeee222>

LEG2_INSADDR_EXTERN_ID2 <>

LEG2_LEGNBR <11307>

LEG2_TYPE <Float>

LEG2_PAYLEG <Yes>

LEG1_DECIMALS <5>

LEG2_DAYCOUNT_METHOD <Act/360>

Page 62: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 62 of 102

Variable Example for a swap

LEG2_CURR_INSID <DEM>

LEG2_CURR_EXTERN_ID1 <>

LEG2_CURR_EXTERN_ID2 <>

LEG2_NOMINAL_FACTOR <1>

LEG2_FLOAT_RATE_INSID <DEM-LIBOR-6M>

LEG2_FLOAT_RATE_EXTERN_ID1 <>

LEG2_FLOAT_RATE_EXTERN_ID2 <>

LEG2_FLOAT_RATE2_INSID <>

LEG2_FLOAT_RATE2_EXTERN_ID1 <>

LEG2_FLOAT_RATE2_EXTERN_ID2 <>

LEG2_ROUNDING <Normal>

LEG2_DECIMALS <5>

LEG2_START_DAY <2005-12-11>

LEG2_START_PERIOD <-370d>

LEG2_END_DAY <2005-12-11>

LEG2_END_PERIOD <5y>

LEG2_ROLLING_PERIOD <6m>

LEG2_ROLLING_BASE_DAY <2005-12-11>

LEG2_PAY_DAY_OFFSET <0d>

LEG2_PAY_DAY_METHOD <Mod. Following>

LEG2_PAY_CALNBR_CALID <Frankfurt>

LEG2_PAY2_CALNBR_CALID <>

LEG2_PAY3_CALNBR_CALID <>

LEG2_RESET_TYPE <Single>

LEG2_RESET_PERIOD <0d>

LEG2_RESET_DAY_OFFSET <-2>

LEG2_RESET_DAY_METHOD <Following>

LEG2_RESET_CALNBR_CALID <London>

LEG2_RESET2_CALNBR_CALID <>

LEG2_RESET3_CALNBR_CALID <>

LEG2_FIXED_RATE <0>

LEG2_FIXED_COUPON <No>

LEG2_EXCLUDE_FIRST_PERIOD <No>

LEG2_SPREAD <0>

LEG2_STRIKE <0>

Page 63: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 63 of 102

Variable Example for a swap

LEG2_EXOTIC_TYPE <None>

LEG2_BARRIER <0>

LEG2_NBR_EXERCISES <0>

LEG2_NOMINAL_AT_END <No>

LEG2_CASH_FLOWS_UPDATED <No>

LEG2_IS_LOCKED <No>

LEG2_RESET_IN_ARREAR <No>

LEG2_LONG_STUB <No>

LEG2_AMORT_PERIOD <0d>

LEG2_FLOAT_RATE_FACTOR <1>

LEG2_FLOAT_RATE_OFFSET <0>

LEG2_AMORT_TYPE <None>

LEG2_AMORT_START_DAY <2005-10-28>

LEG2_AMORT_START_PERIOD <0d>

LEG2_AMORT_END_DAY <2005-10-28>

LEG2_AMORT_END_PERIOD <0d>

LEG2_AMORT_DAYCOUNT_METHOD <Act/360>

LEG2_AMORT_END_NOMINAL_FACTOR <0>

LEG2_ANNUITY_RATE <0>

LEG2_DIGITAL <No>

LEG1_START_DAY <2005-12-11>

LEG2_ARCHIVE_STATUS <0>

LEG2_ORIGINAL_CURR_INSID <DEM>

LEG2_ORIGINAL_CURR_EXTERN_ID1 <>

LEG2_ORIGINAL_CURR_EXTERN_ID2 <>

UND_LEG1_RECORD_TYPE <Leg>

UND_LEG1_CREAT_TIME <0>

UND_LEG1_CREAT_USRNBR_USERID <>

UND_LEG1_UPDAT_TIME <0>

UND_LEG1_UPDAT_USRNBR_USERID <>

UND_LEG1_INSADDR_INSID <>

UND_LEG1_INSADDR_EXTERN_ID1 <>

UND_LEG1_INSADDR_EXTERN_ID2 <>

UND_LEG1_LEGNBR <0>

UND_LEG1_TYPE <None>

Page 64: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 64 of 102

Variable Example for a swap

UND_LEG1_PAYLEG <No>

UND_LEG1_DAYCOUNT_METHOD <None>

UND_LEG1_CURR_INSID <>

UND_LEG1_CURR_EXTERN_ID1 <>

UND_LEG1_CURR_EXTERN_ID2 <>

UND_LEG1_NOMINAL_FACTOR <0>

UND_LEG1_FLOAT_RATE_INSID <>

UND_LEG1_FLOAT_RATE_EXTERN_ID1 <>

UND_LEG1_FLOAT_RATE_EXTERN_ID2 <>

UND_LEG1_FLOAT_RATE2_INSID <>

UND_LEG1_FLOAT_RATE2_EXTERN_ID1 <>

UND_LEG1_FLOAT_RATE2_EXTERN_ID2 <>

UND_LEG1_ROUNDING <None>

UND_LEG1_DECIMALS <0>

UND_LEG1_START_DAY <2005-01-01>

UND_LEG1_START_PERIOD <0d>

UND_LEG1_END_DAY <2006-01-01>

UND_LEG1_END_PERIOD <0d>

UND_LEG1_ROLLING_PERIOD <0d>

UND_LEG1_ROLLING_BASE_DAY <2006-01-01>

UND_LEG1_PAY_DAY_OFFSET <0d>

UND_LEG1_PAY_DAY_METHOD <None>

UND_LEG1_PAY_CALNBR_CALID <>

UND_LEG1_PAY2_CALNBR_CALID <>

UND_LEG1_PAY3_CALNBR_CALID <>

UND_LEG1_RESET_TYPE <None>

UND_LEG1_RESET_PERIOD <0d>

UND_LEG1_RESET_DAY_OFFSET <0>

UND_LEG1_RESET_DAY_METHOD <None>

UND_LEG1_RESET_CALNBR_CALID <>

UND_LEG1_RESET2_CALNBR_CALID <>

UND_LEG1_RESET3_CALNBR_CALID <>

UND_LEG1_FIXED_RATE <0>

UND_LEG1_FIXED_COUPON <No>

UND_LEG1_EXCLUDE_FIRST_PERIOD <No>

Page 65: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 65 of 102

Variable Example for a swap

UND_LEG1_SPREAD <0>

UND_LEG1_STRIKE <0>

UND_LEG1_EXOTIC_TYPE <None>

UND_LEG1_BARRIER <0>

UND_LEG1_NBR_EXERCISES <0>

UND_LEG1_NOMINAL_AT_END <No>

UND_LEG1_CASH_FLOWS_UPDATED <No>

UND_LEG1_IS_LOCKED <No>

UND_LEG1_RESET_IN_ARREAR <No>

UND_LEG1_LONG_STUB <No>

UND_LEG1_AMORT_PERIOD <0d>

UND_LEG1_FLOAT_RATE_FACTOR <0>

UND_LEG1_FLOAT_RATE_OFFSET <0>

UND_LEG1_AMORT_TYPE <None>

UND_LEG1_AMORT_START_DAY <2006-01-01>

UND_LEG1_AMORT_START_PERIOD <0d>

UND_LEG1_AMORT_END_DAY <2006-01-01>

UND_LEG1_AMORT_END_PERIOD <0d>

UND_LEG1_AMORT_DAYCOUNT_METHOD <None>

UND_LEG1_AMORT_END_NOMINAL_FACTOR <0>

UND_LEG1_ANNUITY_RATE <0>

UND_LEG1_DIGITAL <No>

UND_LEG1_ARCHIVE_STATUS <0>

UND_LEG1_ORIGINAL_CURR_INSID <>

UND_LEG1_ORIGINAL_CURR_EXTERN_ID1 <>

UND_LEG1_ORIGINAL_CURR_EXTERN_ID2 <>

UND_LEG2_RECORD_TYPE <Leg>

UND_LEG2_CREAT_TIME <0>

UND_LEG2_CREAT_USRNBR_USERID <>

UND_LEG2_UPDAT_TIME <0>

UND_LEG2_UPDAT_USRNBR_USERID <>

UND_LEG2_INSADDR_INSID <>

UND_LEG2_INSADDR_EXTERN_ID1 <>

UND_LEG2_INSADDR_EXTERN_ID2 <>

UND_LEG2_LEGNBR <0>

Page 66: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 66 of 102

Variable Example for a swap

UND_LEG2_TYPE <None>

UND_LEG2_PAYLEG <No>

UND_LEG2_DAYCOUNT_METHOD <None>

UND_LEG2_CURR_INSID <>

UND_LEG2_CURR_EXTERN_ID1 <>

UND_LEG2_CURR_EXTERN_ID2 <>

UND_LEG2_NOMINAL_FACTOR <0>

UND_LEG2_FLOAT_RATE_INSID <>

UND_LEG2_FLOAT_RATE_EXTERN_ID1 <>

UND_LEG2_FLOAT_RATE_EXTERN_ID2 <>

UND_LEG2_FLOAT_RATE2_INSID <>

UND_LEG2_FLOAT_RATE2_EXTERN_ID1 <>

UND_LEG2_FLOAT_RATE2_EXTERN_ID2 <>

UND_LEG2_ROUNDING <None>

UND_LEG2_DECIMALS <0>

UND_LEG2_START_DAY <2006-01-01>

UND_LEG2_START_PERIOD <0d>

UND_LEG2_END_DAY <2006-01-01>

UND_LEG2_END_PERIOD <0d>

UND_LEG2_ROLLING_PERIOD <0d>

UND_LEG2_ROLLING_BASE_DAY <2006-01-01>

UND_LEG2_PAY_DAY_OFFSET <0d>

UND_LEG2_PAY_DAY_METHOD <None>

UND_LEG2_PAY_CALNBR_CALID <>

UND_LEG2_PAY2_CALNBR_CALID <>

UND_LEG2_PAY3_CALNBR_CALID <>

UND_LEG2_RESET_TYPE <None>

UND_LEG2_RESET_PERIOD <0d>

UND_LEG2_RESET_DAY_OFFSET <0>

UND_LEG2_RESET_DAY_METHOD <None>

UND_LEG2_RESET_CALNBR_CALID <>

UND_LEG2_RESET2_CALNBR_CALID <>

UND_LEG2_RESET3_CALNBR_CALID <>

UND_LEG2_FIXED_RATE <0>

UND_LEG2_FIXED_COUPON <No>

Page 67: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 67 of 102

Variable Example for a swap

UND_LEG2_EXCLUDE_FIRST_PERIOD <No>

UND_LEG2_SPREAD <0>

UND_LEG2_STRIKE <0>

UND_LEG2_EXOTIC_TYPE <None>

UND_LEG2_BARRIER <0>

UND_LEG2_NBR_EXERCISES <0>

UND_LEG2_NOMINAL_AT_END <No>

UND_LEG2_CASH_FLOWS_UPDATED <No>

UND_LEG2_IS_LOCKED <No>

UND_LEG2_RESET_IN_ARREAR <No>

UND_LEG2_LONG_STUB <No>

UND_LEG2_AMORT_PERIOD <0d>

UND_LEG2_FLOAT_RATE_FACTOR <0>

UND_LEG2_FLOAT_RATE_OFFSET <0>

UND_LEG2_AMORT_TYPE <None>

UND_LEG2_AMORT_START_DAY <2006-01-01>

UND_LEG2_AMORT_START_PERIOD <0d>

UND_LEG2_AMORT_END_DAY <2006-01-01>

UND_LEG2_AMORT_END_PERIOD <0d>

UND_LEG2_AMORT_DAYCOUNT_METHOD <None>

UND_LEG2_AMORT_END_NOMINAL_FACTOR <0>

UND_LEG2_ANNUITY_RATE <0>

UND_LEG2_DIGITAL <No>

UND_LEG2_ARCHIVE_STATUS <0>

UND_LEG2_ORIGINAL_CURR_INSID <>

UND_LEG2_ORIGINAL_CURR_EXTERN_ID1 <>

UND_LEG2_ORIGINAL_CURR_EXTERN_ID2 <>

CURR <DEM>

INSTYPE <>

INSMATDATE <>

CALLOPTION <>

UNDTYPE <Swap>

UNDSRTDATE <051211>

UNDMATDATE <051211>

PRICE <5.10>

Page 68: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

6 Appendix B: Table Translation Tool and suggestname.ttt 68 of 102

Variable Example for a swap

NOTIONAL <0>

UNDINSID <.ag-swap>

RECSFIXED <>

PAYSFIXED <0>

PAYCURR <DEM>

PAYPRICE <>

PAYINDEX <DEM-LIBOR-6M>

INDEX <>

SETTLTYPE <>

ISSUER <>

ISSUER2 <>

EXTERNID1 <eeeee222>

EXTERNID2 <>

REPORATE <>

OPENEND <>

INSSRTDATE <>

ROLLINGPERIOD <1Y>

Note: The last 25 variables of this list are provided for backward compatibility.

Page 69: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

7 Appendix C: b92_rec_doc.txt 69 of 102

7 Appendix C: b92_rec_doc.txt The file b92_rec_doc.txt contains a description of the data model used when accessing data from the ADS. It is used by PRIME when editing ASQL queries in the Information Manager and when creating and editing trade filters.

Note: b92_rec_doc.txt can be edited to further customise the behaviour of PRIME. However, note that the file b92_rec_doc.txt will be replaced with a new one during an upgrade of PRIME.

Note: To reliably execute ASQL queries containing wildcard characters from Python using ael.asql(), the location of the b92_rec_doc.txt file needs to be specified. Thus, when importing AEL, the arena_<version>.ini file must be found. The .ini file must be in the same directory as the main executable, in this case, arena_python.exe. The location of b92_rec_doc.txt can also be specified by setting the B92_REC_DOC_FILE environment variable to point to the b92_rec_doc.txt file, which default location is in the PRIME installation directory.

Page 70: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

8 Appendix D: PRIMEutil 70 of 102

8 Appendix D: PRIMEutil The PRIME GUI is not available for operating systems other than Windows. PRIMEutils is a collection of PRIME-related tools for Linux.

The tools are arena_python, arena_extract, and write_appl (to name a few).

8.1 Installation 1. Download PRIME for Windows. 2. Unzip. 3. Go to the Linux directory. 4. Copy the PRIMEutil .pkg or .rpm package to your Linux system. 5. Install using a standard procedure for .pkg or .rpm packages.

8.1.1 Configuration For the ADS, ATS, and AMBA, PRIMEUTIL_VERSION should be set in the configuration file.

Example PRIMEUTIL_VERSION=2012.1

8.2 arena_python arena_python is Front Arena’s native Python interpreter, which should be used instead of, for example, pyhon.exe from python.org.

Refer to Developer Guide: AEF Python (FCA2831) for more information.

8.3 arena_extract Refer to User Guide: ARENA Extract (FCA1011) for more information.

ARENA Extract is a separate executable run from the operating system command line that enables external systems to retrieve data stored in the ADM database.

ARENA Extract takes as its input an ASQL query, or an ASQL query and a form. The query can be read from a file, or retrieved from the ADM database, or entered interactively. The form improves the layout and formatting of the report.

You can use ARENA Extract for automating reporting through batch jobs, extracting data to the ARENA Message Broker (AMB), importing and exporting ASQL queries and AEL scripts. ARENA Extract is also used as a support tool by FIS Front Arena staff.

8.4 write_appl write_appl must be run when PRIME is installed or upgraded. write_appl adds user profile components to the ADM database.

See section 3.1 Upgrading PRIME.

Page 71: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

9 Appendix E: Remote PRIME overview 71 of 102

9 Appendix E: Remote PRIME overview When users away from the main Front Arena site need access to PRIME there are several alternatives. The following is an overview of setting up a Front Arena for running PRIME at multiple sites. It does not deal with the issues of setting up a complete distributed installation for disaster fallback and recovery purposes.

Distributed solutions are usually configured to run either with a local ADS server at each site with the data being synchronised from the primary RDBMS, or with a remote display of clients running on a primary site.

For detailed information, refer to:

• System Administration: ADS Windows (FCA1327) • System Administration: ADS Linux (FCA1264)

9.1 Remote displaying

Remote displaying using Windows or third-party products generally provides easy installation and immediate connection for new sites. Investment cost is low and centralised administration does not require local system administration.

Remote displaying is primarily for solitary remote clients, but it is also used by several organisations as the sole solution for distributing Front Arena, even within the primary site.

9.2 Sybase or Microsoft SQL replication server technology

SQL replication should be the default choice. It is well proven and has relatively good performance even with relatively low bandwidth. On the downside, the remote servers have to be actively managed, just like the servers on the primary site.

The solution requires two replicated database servers to be set up: one at the primary host site and one at the secondary remote site. All tables but prices are fully replicated, which means that PRIME will load all its data from the local (primary or secondary) database. All writes (except for prices) are directed to the primary database.

The (WAN) traffic between the sites consists only of traffic needed to update the secondary site server plus writes from the secondary to the primary.

The two installations function as two separate installations with the only difference that one installation serves as master. This requires all components to be installed at both sites as well as a need for complete system management routines at both sites. In addition, detailed knowledge regarding the database replication technology is required.

Delay is depending on both bandwidth and network latency but generally delay should be in the range 5–10 sec.

Page 72: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

9 Appendix E: Remote PRIME overview 72 of 102

9.3 Remote connection of PRIME (very slow)

Connecting PRIME directly to an ADS over a slow high latency connection is generally not recommended all though possible. PRIME performance in this setup is very low. Startup times can be minutes and wait times can be severely long, for example, when running the Trading Manager or Information Manager.

Still, this setup can be useful for low intensity work, such as administration work from small remote sites not needing or meriting another solution.

Page 73: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 73 of 102

10 Appendix F: Main user interface features The PRIME user interface is ribbon-based. This is the Microsoft standard and similar menus are found, for example, in Microsoft Office.

10.1 Ribbons terminology and features For an overview of general ribbon features, refer to PRIME Help (FCA1260).

10.2 Session Manager ribbon In the Session Manager, you can choose between different types of user layouts that the ribbon will be adapted for: Front Office, Middle Office, Back Office, Electronic Trading, or Administrator. This is done using the Select Usage Type icon.

To define which usage type to display by default for a user, select and save Default Usage Type on the Application Settings tab on the user record in the Administration Console.

10.3 Trading Manager ribbon This is a quick overview of the ribbon in the Trading Manager. Note that the ribbon is not just a new look, it is an entirely new concept.

One important difference is that the ribbon adapts depending on the type of the active sheet in the Trading Manager. The layout below is for an Order Book Sheet. However, the ordering of the icons is the same everywhere. Some very important commands can be present in several categories (tabs), such as the Leave Markets command, which is present both in the Home category and in the Trading category. This is to minimise clicking when urgently needing this command.

Home The Home category contains the most frequently used commands, such as inserting items and docked viewers.

Trading The Trading category contains all commands that are important when working with the different Trading Sheets: Order Book, Call/Put Order Book, Quote, Call/Put Quote, Quote Request, Order, Market Deal Report, and Agent Sheet. Note that the Trading category only appears for Trading Sheets.

Sheets The Sheets category contains all commands regarding inserting and modifying different sheets.

Note that the layout of the ribbon also depends on the setup of the used Extension Editor context. For example, if the Electronic Trading built-in extension modules are not present in the context, the Trading Sheets (except for the Order Book Sheet) are not available to insert, and the Leave Markets command is not visible in the Home category.

Reports The Report category contains the commands linked to reporting. From here, it is possible, for example, to launch a report from the active Trading Manager sheet.

Page 74: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 74 of 102

View The View category contains all window-related commands, and from here, it is also possible to open other windows.

10.4 Ribbon design and modification The ribbons are defined as extensions of type FCommandExtension. As such they can be created and modified in the Extension Manger. In most cases it is better to use the Ribbon Designer.

Note: Ribbon extensions override ribbon updates when upgrading. For example, in the Edit group, there are two commands: Find and Sort. You edit the third command: Replace. In the next version of PRIME, the Sort command has been removed, but after upgrading, you will still have Find, Sort, and Replace.

The recommended usage is to create your own categories, which will not affect or be affected by upgrades.

10.4.1 Ribbon Designer To start the Ribbon Designer, press Ctrl+Alt+R, or select File>Design Ribbon. The ribbon designer is only available if the user has the Ribbon Designer application in the user profile.

The Ribbon Designer includes the following major parts:

• Ribbon (right): This shows the current ribbon as a tree structure. • Commands (left): List of all commands that can be added to the ribbon. • Buttons: Used to structure the ribbon and to confirm or abort changes. • Right-click menu: Various options depending on what is right-clicked. Primarily

commands for modifying icons and labels. • Select View Type list/check box (top): Used to set if the commands should be present on

the toolbar for all objects of a specific type or only for the selected object.

Select View Type The Select View Type list has different names depending on which window the Ribbon Designer is opened from, for example, UsageTypes (from the Session Manager) and Sheet (from the Trading Manager). It contains different types of objects depending on the window, for example, usage types (in the Session Manager) and sheet types (in the Trading Manager).

To the left of the list is a check box. If the check box is cleared, the commands are present on the toolbar for all objects of that type. If the check box is selected, the commands are present on the toolbar for the selected object only.

Tip: The Ribbon Designer is an application and user access to the application can be set in the Administration Console just as for other applications.

10.4.2 Ribbon manipulation in the Ribbon Designer The following instructions should be carried out in the Ribbon Designer, unless otherwise is stated. The "Click OK" step has been omitted from the instructions.

Note: Your ribbon modifications are stored in the lowest module in the Extension Editor. Before you start manipulating ribbons, make sure you have a suitable module as the lowest module (for example, your user module).

Page 75: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 75 of 102

To add a tab Tabs are automatically added to the top level and cannot be added anywhere else.

1. Click the Add Category button. 2. Enter the name of the new tab.

Note: The tab will not show up until a group and a command is added.

To add a group Groups can only be added to tabs.

1. Select the tab you wish to add the group to. 2. Click the Add Panel button. 3. Enter the name of the new group.

Note: The group will not show up until a command is added.

To add a command to a group Commands can only be added to groups and menus.

1. Select the group you wish to add the command to. 2. Select the command on the list to the left. 3. Click the greater than (>) button to add the command to the

group.

To add a menu A menu can contain a list of commands or submenus. Menus can be added to groups or to other menus.

1. Select the group or menu you wish to add the menu to. 2. Click the Add Menu button. 3. Enter the name of the new menu.

Note: The menu will not show up until a command is added.

To add a command to a menu 1. Select the menu you wish to add the command to. 2. Select the command on the list to the left. 3. Click the greater than (>) button to add the command to the

menu.

Page 76: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 76 of 102

To add, change, or remove a command icon 1. On the left, right-click the command for which you want to

add or change the icon. 2. Select Icon. 3. Select one or more icons from the list. If more than one is

selected, the images are stacked. 4. To show a larger icon for a command, right-click the

command (on the left) and select Large Icon. 5. To remove the icon, right-click the command (on the left)

and select Remove Icon.

To add, change, or remove group icon The group icon is only shown when the window is too narrow to show the group in full.

1. Right-click the group for which you want to add or change the icon.

2. Select Icon. 3. Select one or more icons from the list. If more than one is

selected, the images are stacked. 4. To remove the icon, right-click the group and select Remove

Icon.

To change, hide, or reset a command name 1. On the left, right-click the command for which you want to

change the name. 2. To change the name, select Label and enter a new name. 3. To hide the name, clear Show Label. 4. To reset the name to its default, select Remove Label.

Page 77: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 77 of 102

To add, change, or remove a tooltip Tooltips are shown when pointing to a command with the mouse pointer. They consist of four parts:

• Header • Keyboard shortcut: If a shortcut exits, it

is automatically shown as part of the header, and this cannot be changed.

• Description • F1 link to the Help

To add, change, or remove a tooltip, follow these steps:

1. On the left, right-click the command for which you want to add or change the tooltip.

2. Select Description. 3. Enter a header and optionally a

description. 4. Leave Context Help Id empty (this field

takes a non-public help reference as an argument).

To organise ribbon elements Use the buttons Move Up, Move Down, Add Separator, and Remove to manipulate the layout of the ribbon elements in the ribbon tree on the right side of the Ribbon Designer.

Layout notes • A panel is one standard command high. The standard command label is wrapped and

displayed below the icon. The standard commands have the largest icons and are the most frequently used commands.

• Three lesser commands (with small icons) fit on top of each other in a panel. The command label is displayed to the right of the icon. Lesser commands are less frequently used than standard commands, hence awarded a smaller space.

• If a separator is inserted, the next command will appear to the right of the separator line. This can be used to break the stacking of lesser commands.

• The ribbon design displayed when Select View Type is applied to all sheets. By selecting a specific sheet type, settings for that particular sheet can be merged with the common definitions. Note that sheet-specific panels, menus, and so on are appended to the end by default. To change the panel order, enter an empty panel in the right position on the top level. This ensures that the panel will appear in the right place. For those sheets for which the panel will be empty, it will not be displayed.

Page 78: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 78 of 102

Example A new category, with one panel, one command, and one menu with three commands. Design view in the Ribbon Designer and the result in PRIME.

10.4.3 Creating context-sensitive tabs One of the main ribbon features are context sensitivity, that they can display different sets of commands depending on the circumstances.

The main steps are:

• In the Ribbon Designer, right-click a category and select Context Category. • Supply the ModuleName.FunctionName of a Python function, called to check if the

category should be visible. • Create the Extension Editor FPythonCode extension, called by the contextual tab.

Example In this example, you will create a contextual tab that is displayed in the Trading Manager only when you select a row header or a column header:

Steps to create a tab 1. Open the Trading Manager (All>Trading>Trading Manager). 2. Open the Ribbon Designer (File>Design Ribbon). 3. Clear the Sheet check box (to apply the contextual tab to all sheets). 4. Click Add Category, enter Row or Column. Click OK. 5. Right-click Row or Column and select Context Category. 6. In the Context Category window, select the Enable check box, and as Function enter

RibbonContextCategories.TradingManagerRowHeader. Click OK. 7. Add at least one group to the tab. (Click Add Panel and enter, for example, Row. Click

OK.) 8. Add at least one command to the group: select the command to the right (for example,

Remove Row), then click the arrow (>) button. 9. When done, click OK to close the Ribbon Designer.

Page 79: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

10 Appendix F: Main user interface features 79 of 102

Steps to create a Python function 1. From the Session Manager, open the Extension Editor (All>System>Extension Editor). 2. In the Extension Editor, create an extension:

a. Select Home>New. b. Select Type=FPythonCode and Module=<Your user module>. c. In the editing pane, enter the following code:

FObject:RibbonContextCategories def TradingManagerRowHeader( eii ) : tradingManager = eii.ExtensionObject() activeSheet = tradingManager.ActiveSheet() if activeSheet != None : selection = activeSheet.Selection() if selection != None : selectedCell = selection.SelectedCell() if selectedCell != None : return selectedCell.IsHeaderCell()

d. Apply and save the changes.

Test 1. Open a Portfolio Sheet in the Trading Manager (Sheets>Add Position Control

Sheet>Portfolio). 2. Clicking the column heading Pos, your contextual tab (Row or Column) becomes visible,

as in the following graphic:

Page 80: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 80 of 102

11 Appendix G: Performance There are many different aspects of performance; each is contributing to the overall perception of the application. For an application such as PRIME, three things are needed for it to be perceived as quick by a user.

It must be responsive, that is to readily accept commands and other input from the user.

It must complete tasks in a timely fashion perceived as reasonable by the user.

In some areas, it must perform in real time or near real time with only an acceptable lag.

Performance perceived when using PRIME is dependent on many things, for example:

• The responsiveness of the subsystems feeding information to PRIME. • The performance of the LAN. • The workstation hardware. • The complexity of used valuation models. • The amount of data in PRIME and in the system as a whole. • The quality of the code in various extensions.

11.1 About the Front Arena window

In the PRIME Session Manager, click the icon to open the About Front Arena window. This window contains some basic information, such as the exact PRIME build and the ADS address and build. There is also some statistics and configuration information available.

11.2 Basic PRIME performance issue analysis Investigate the following:

• Are there performance warnings in the log or Log window? • Can anything specific be observed by switching on the following Log Categories?

11.2.1 Log Category: market – enable flow track and log output By enabling TNP transaction flow measurement points, it is possible to measure the time for a TNP message to travel between two or more measure points, both within PRIME and between components in Front Arena.

All TNP message transactions originating from PRIME are updated with Flow Track Point information at specific points in the Front Arena components during their "flow life time". When PRIME receives a reply or an MC message with Flow Track Point information from one of its connected AMASs, it is written to the prime_<user>.log file.

Example: Logging The following is an example of a log record, as it looks in the PRIME log file:

050926 111642 D 0A00 marketutilities

mft> main(): Flow Track Points

TnpInitializeReply

* 11:15:45:273 0,000 0,000 FRT-STO-

WS277A CLIENT_SEND About to send TNP msg

Page 81: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 81 of 102

* 11:14:31:357 0,000 0,000 LEMPO AIMS_RECEIVE_FR

OM_CLIENT MSRV msg in

* 11:14:35:859 4,501 4,501 LEMPO AIMS_SEND_TO_CL

IENT MSRV reply out

* 11:15:58:589 13,316 13,316 FRT-STO-

WS277A CLIENT_RECEIVE

Valid TNP msg received -- post to input queue

* 11:15:58:602 0,012 13,329 FRT-STO-

WS277A CLIENT_RECEIVE About to dispatch reply

• Column 1: Computer's local time when the Flow Track Point was added. • Column 2: Delta time to previous Flow Track Point on same computer. • Column 3: Delta time to first Flow Track Point on same computer. • Column 4: Computer name. • Column 5: Flow Track Point identifier. • Column 6: Programmer's comment on the Flow Track Point.

Note: Times in Column 1 might look to be out of order. This is due to differences in the clocks on the different computers.

11.2.2 Log Category: Trading Manager – calculation performance Produce statistical performance information for the Trading Manager calculations and log every 60 sec. Information is generated for:

• ARENA function: Measures every call to ARENA functions. • Python calls: Measures every call to Python functions. • Calculated values: These are reported for each extension attribute visible in a cell on the

screen. Usually, only top row values show up in the logging.

The average time for every category is measured and logged. In addition, all calls more than twice as slow as the average in each category are reported as peak values. This logging helps pinpointing which call it is that is causing the problem.

The resolution is one millisecond. Calls that are faster than one millisecond are excluded.

Calculated values include the time coming from Python and ARENA function calls. Normally this means that you should first look for slow calculated values, and then look for slow Python or ARENA function calls matching this.

Example: Logging main() 2005-01-11 13:50:13: Average = 2.83 millisecs for 12726 arena function calls. Peak time for used_price for SEK = 18 millisecs. Peak time for used_price for SEK = 34 millisecs. Peak time for used_price for SEK = 8 millisecs. Peak time for used_price for SEK = 7 millisecs. Peak time for used_price for SEK = 8 millisecs. Peak time for used_price for SEK = 9 millisecs. Peak time for used_price for SEK = 7 millisecs. Peak time for used_price for SEK = 8 millisecs.

Page 82: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 82 of 102

Excluded 13315 unmeasurable arena function calls (< 1 millisec) main() 2005-01-11 13:50:18: Average = 1.01 millisecs for 1525 python calls. Peak time for vanilla = 5 millisecs. Peak time for vanilla = 4 millisecs. Peak time for vanilla = 3 millisecs. Peak time for vanilla = 5 millisecs. Peak time for vanilla = 5 millisecs. Excluded 18447 unmeasurable python calls (< 1 millisec) main() 2005-01-11 13:50:20: Average = 160.29 millisecs for 299 calculated values. Peak time for hedgeEq = 1466 millisecs. Peak time for vega = 409 millisecs. Peak time for theta = 319 millisecs. Peak time for rho = 234 millisecs. Peak time for thTPL = 4062 millisecs. … Peak time for thTPL = 52 millisecs. Excluded 688 unmeasurable calculated values (< 1 millisec)

Look for calculations that are slower than 400 ms. In the previous example, it appears that the time is used up by calling the ARENA function used_price() an excessive amount of times (12,726) within the logging time of 60 sec. This indicates that out of 60 sec, the system uses 36 sec (12,726*2.83 ms) for used_price().

Do not draw conclusions from loggings created directly after the startup of a sheet, because this can include caching and initial setup time.

11.2.3 Log Category: quote – performance This logging is similar to the Trading Manager – calculation performance category (see section 11.2.2 Log Category: Trading Manager – calculation performance), except that it reports the same type of values for calculations made in Quote Sheets.

11.3 Startup time This is the time it takes to start PRIME or the time it takes to open various windows within PRIME. There are cases, for example after a crash, when too long startup time can be a problem.

11.3.1 PRIME only Starting only PRIME should be quick. About 20 sec is a normal value. However, PRIME is generally set to also load the default workspace, and starting and loading a workspace can take considerable time. To test pure PRIME startup time, make sure that Load Default Workspace is cleared.

If PRIME is slow to start even without the default workspace, this might indicate that the ADS is under a very heavy load, that the workstation is very busy with some other application, or that a network is slow.

11.3.2 PRIME with the default workspace How much time it takes to start a workspace entirely depends on what is in the workspace.

When loading a typical workspace, PRIME will request large amounts of data from the ADS, both a few requests returning big batches of data, and many smaller ones. PRIME also parses many soft descriptions of how to build data structures and dependency links making up the calculated values and real-time data flows.

Page 83: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 83 of 102

This means that workspace startup is both I/O dependent and CPU intensive.

The possible bottlenecks are the ADS, network, and workstation. With many PRIME’s loading workspaces at the same time, it can be difficult for the ADS to provide the requested data without delay. With a high-performance server and network, the workstation might not be able to receive and process data as quickly as the ADS can send it.

Improvements • If possible, avoid starting large number of workspaces at the same time. • The amount of data has a significant impact on startup time. Especially for large sheets,

portfolio, and risk. See section 11.12.1 Data maintenance. • If experiencing problems, find out if server or workstation is the bottleneck. • Strive to read data in a more efficient manner, the aim is to make as few single requests as

possible. This can be achieved both by changing the logic in the calculation structures, or by optimising the way data can be requested so that whole "clustersv of data can be read in one transaction. One example of this would be reading an instrument or a trade and including all relevant related objects, so that those objects would not have to be read one by one.

Portfolio Sheets Startup time of a portfolio is represented by the sum of the following:

• Time to read the data (instruments, trades, cash flows, valuation parameters) • Time to create the portfolio tree structure (portfolios, subportfolios, underlying instrument

subtotals, plus any other type of grouping), • Time to create calculated valuation trees with all nodes and data flows.

A high-level overview of the time taken for each of these steps when viewing an existing Portfolio Sheet can be obtained by using the Portfolio Performance Profiler Tool.

The following example performance metrics are taken on a 3.2 GHz machine with 100 Mbit network:

Reading Instruments*:

Loading and wrapping: 8190/s

Load to data handler cache: 15561/s

Wrap with instrument class: 17290/s

Memory 3.2 KB/instrument

* Reading instruments in a batch. Under normal conditions in a Portfolio Sheet, they would typically be read one by one, which is considerably slower.

Reading Trades**:

Loading and wrapping: 4478/s

Load to data handler cache: 5655/s

Wrap with trade class: 21526/s

Memory: 2.4 KB/trade

** Reading trades causes the corresponding instruments to be read as well, to display attributes from the instrument. Hence the lower number compared to instruments. Note that the distribution of instruments to trades is quite low. There are many trades per instrument, so the effect is not very large.

Page 84: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 84 of 102

Creating Portfolio structure:

The number of grouping levels will affect load and startup time in two ways.

Firstly, it will create additional positions and aggregated positions. Consider a grouping where one level is grouping on a trade attribute, such as acquirer. This means that the same instrument can appear in more than one position; one for each different acquirer where there is a trade.

Secondly, the deeper tree structure will add an overhead in addition to the increase in positions.

Therefore, the amount of time needed in seconds can be approximated by:

(1.1no of grouping levels) * positions / 1,000 + number of trades / 20,000

ADFL nodes are built with an average speed of 0.1 ms per node.

11.3.3 Quote Sheets or market making With market making, load and startup time can be crucial. If there is an interruption in the client, the quoting cannot be continued until workspace has been reloaded. During this time the market maker is either losing market shares, or opportunities. Generally, quotes are automatically removed by AMAS it the PRIME connection is lost.

The main part of the startup time consists of building the valuation trees used by the Quote Sheet. The trees are used to calculate proposed quotes with spreads and offsets, and to handle the quote logic, such as deciding if quotes are safe and valid. The size of these trees is usually about 250 nodes per instrument (equity options/derivatives) plus an additional 70 nodes per underlying. This means that the build time can be calculated by the number of instruments in the sheet multiplied by 250+70, multiplied by 0.1 ms per node (which equals 25 ms per instrument). This means that valuation trees for 40 instruments can be built each second.

Certain time will be needed to start the order book subscriptions to the AMAS. This is split up into sending subscription requests (1,000/s) using TNP and handling the responses.

11.4 Responsiveness To promptly respond to user commands is very important for the user experience.

To achieve this, no resources can be inaccessible for more than approximately 0.2 sec at any given time. This is because if the system responds to input within 0.2 sec, it is perceived as instantaneous by the user. The most important resource (with respect to GUI responsiveness) that must be accessible is the CPU. Automatic real-time-driven calculations must not interrupt the user according to the previously described reasoning, but calculations that are performed when a manual command is issued can lock the system for a longer period. A general yard-stick is that a period of three seconds is acceptable to users, with users also accepting periods up to 20–30 sec if the task is perceived as large (so long as there is an indication that the system is processing the request). It is important to differentiate between involuntary freezes of the system and processing time initiated manually by the user.

In PRIME, all values are calculated atomically, meaning that the system locks for the whole duration of calculating a value to be displayed on the screen. Each single calculation should not take more than 0.2 sec. If any automatic calculation takes more than 0.4 sec, a warning, recommending the user to contact his/her system administrator, is displayed. If these warnings are frequent, they should be addressed.

If the user issues a command which needs data from the ADS before a response can be initiated, PRIME will stop until the ADS responds. A quick response from the ADS is crucial because if PRIME is waiting for a read response from the ADS instead of reacting to user input, performance will not be satisfactory.

Page 85: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 85 of 102

The ADS handles requests in parallel. A large response is copied onto the network layer in batches and the ADS checks for other network activity between the copy operations. This means that small requests can be handled while results from a large request are pending. This approach decreases the total wait time for all clients and the ADS will not appear "unavailable". Still, large requests from one client can decrease the ADS performance toward other clients.

Memory handling (for example, garbage collection) can lock resources necessary to respond to user commands. See section 11.8 Memory garbage collection.

11.4.1 Portfolio Sheets Portfolio Sheets can have a large impact on responsiveness. To ensure that data is consistent during calculation PRIME is effectively locked during the calculation. Large portfolios that takes a long time to calculate will result in periods of unresponsiveness.

Improvements Relocate calculation of the sheet to another process, see 11.9 Distributed processing.

Risk and profit/loss calculations can have a large impact on the GUI responsiveness due to the nature of portfolios and the theoretical risk calculations. In the Trading Manager, top level total values are calculated using the sum of all the constituent instrument positions in the portfolio. These need to be performed in a consistent manner where all prices and parameters are frozen during the whole calculation.

To ensure that the data is consistent during the calculation, the process must lock inputs during the calculation. The means that the GUI-response will be halted during the time it takes to make a calculation.

The time it takes to calculate a total portfolio present value, for example, is the sum of the valuation function time of all the instruments with changes in any of the parameters to the function, plus an overhead for book keeping and general handling of the valuation trees. In practice, the overhead is very small, and the calculation time can be approximated by just multiplying function time by the number of instruments.

Example Calculating a total value for a portfolio with 1,000 positions using a simple Black-Scholes valuation function:

Function time per position: 0.1 ms

Total time: 100 ms

This means that GUI response can be delayed by a maximum of 100 ms, which is assumed acceptable and not particularly noticeable to end users. In reality, the 1,000 positions will usually be spread across a number of underlying instruments, which means they will normally not change simultaneously. If not all the positions have changed, only those with changed underlying prices will be recalculated (according to the lazy evaluation feature utilised by PRIME). In most cases this will lead to a GUI-response under 100 ms due to calculations in this example.

To keep the calculation as unobtrusive as possible, calculations are only started when the system is idle. This means that PRIME tries to prioritise the user at all times. If a calculation is started, however, it will finish it before letting the user interrupt it.

Page 86: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 86 of 102

11.4.2 Market making or Quote Sheets To ensure that correct quotes are sent to the market quote calculations have higher priority than other calculations, this can affect responsiveness.

The Quote Sheet in PRIME behaves in a special manner compared to the Order Book and Portfolio Sheets in the sense that calculations will be performed regardless of whether the values are visible or not. This is to ensure that correct quotes are sent to the market at all times. There is also a difference in the priority given to quote calculations. Quote calculations have the same priority as user commands, while the other calculations are only performed when the system is idle.

To keep the system responsive, quote calculations have been split up into 50 ms calculation time slots. This means that quotes will be calculated for up to 50 ms but are then interrupted so that other activities in the system receive access to resources.

11.5 Processing time of commands This is the time it takes to perform a task. For example, sending an order to the market or saving a new instrument to the database. A lot of data reading can be involved in the processing of a command. Commands that requires data to be sent off to other systems (for example, orders to a market place) are affected by the system throughput.

11.5.1 Trading on electronic market places Sending, deleting, and modifying orders are the most important commands when trading on electronic market places. The transaction is sent to an AMAS and the AMAS sends it to the market place. If there is a queue in the AMAS, caused, for example, by extensive quoting, the order will be queued.

11.5.2 Market making Sending quote works in two different ways depending on the market place.

• If the market place supports true double-sided quote transactions, then quotes are sent immediately.

• If the market place uses two separate order transactions, then these two orders must be committed to the ADS before they are sent to the market. This means that when sending quotes made up of two orders, the initial send is slow. The consequent modifications to these orders are not committed to the ADS though, meaning that modifications are much quicker than the initial send operation. This is good because it is the modifications that are performance critical.

11.6 Throughput Primarily, this is the number of transactions that can be processed per second without the system falling behind. However, it is also the time a transaction takes to reach its destination.

Tasks that requires data to be sent off to other systems, for example, orders to a market place, are affected by the system throughput.

11.6.1 ADS prices Price updates are not immediately written to disk in the ADS. Instead, they use a write cache and the transaction is immediately passed to all subscribing clients. Prices are only written to disk when the ADS is idle before being written to disk. This means that either the network or the CPU limits the throughput.

Page 87: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 87 of 102

11.6.2 Market connections The market connections (AMASs) affect PRIME. Processing time of transactions sent to the AMAS is critical. Market updates must not fall behind, leaving the user looking at old prices.

AMAS prices The throughput of prices and transactions on the AMAS is mainly dependent on the write speed of the storage solution used to store the transactions log (MCLog), because every transaction must be committed to the log. The number of transactions per second that the AMAS can handle will be limited by the storage solution used. If the exchange sends more transactions than the limit of the AMAS and its storage solution, then AMAS will start to lag and orders and trades will start to queue up.

Refer to System Administration: AMS Maintenance (FCA1189) for more information.

Trades Trade capture has been tested up to 322 trades/second. This was achieved using a fast disk solution able to handle the physical data transfer and write speed.

Trades are written to the ADS by an AMBA. Higher throughput can be achieved, to a certain degree, by using multiple AMBAs. This enables the RDBMS to use multiple CPUs.

With a powerful storage solution, CPU and memory will become the bottleneck when writing trades. This is because when writing trades, many indexes and constraints must be handled. This leads to massive reading, both using indexes and table scans. This uses CPU and memory. It is very important for the RDBMS to be able to cache all tables involved in this operation. This means that the memory and CPU available to the RDBMS, the better the write speed will be.

By hosting the ADS and the RDBMS on different machines, more CPU and memory will be made available to the RDBMS. This setup requires a very fast, low latency network between the two nodes.

Market making It is critical to use the limited transaction bandwidth available in the market connection wisely:

• The most important updates must be sent first • Previous updates not yet sent must be replaced with new updates • Unimportant updates should not be sent as frequently as important ones • Extreme update frequencies in underlying price must not slow down the system • Handling of new underlying prices must be as efficient as possible • Use underlying price slack • Price slack on quoted order book as percentage of spread.

These features are implemented for good throughput:

• Distributed quote workers using PACE. Refer to User Guide: Market Making (FCA1617) for more details.

• Queue management in AMAS with supersede functionality. This means that if a new quote update is sent from the client before the previous one has been sent to the exchange, the new update will supersede the previous and take its place in the queue. This technique ensures that no queues ever build up for the same order book.

• Quote priority is calculated by PRIME using a formula including the delta of the instrument and the quoted spread. The quotes are calculated according to this priority the next time

Page 88: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 88 of 102

they change, and they are sent strictly in this order. This ensures that the most important quotes are updated first.

• PRIME is designed to handle extreme amounts of price updates from the market connections. This is achieved by handling batches of price updates every 20 ms, instead of handing them one-by-one. This provides a more efficient and effective use of CPU power, leaving more CPU for the actual quoting. To ensure that this does not affect reaction time in a negative way, a special feature has been implemented where PRIME handles one extra prioritised update between every batch that is posted immediately as it happens.

• Throttling of quote updates to make sure that no two consecutive quote updates to the same order book are sent with a smaller time difference than specified in the Quote Setting Update Frequency. If more time than the specified time has passed, a new quote will be sent immediately though. The default value is Medium, corresponding to around 200 ms.

• Using the "Underlying Price Slack" feature saves bandwidth when the underlying prices are oscillating or moving constantly in any direction tick by tick, instead of taking large leaps.

• Spread based slack is calculated based on the spread of the quote. If the spread is large, the need to modify the quote is not as important compared to quotes with one or two ticks. This is especially true if the delta is low.

• Mass quote transactions used on exchanges supporting these. A mass quote transaction is a more efficient way of sending a number of quotes. All quotes in a mass transaction will reach the exchange at the same time, and the throughput to the exchange increases noticeably.

• Approximation techniques used to calculate option prices used as quote prices. This makes it possible to calculate more quotes per second.

• PRIME calculates quotes for up to 50 ms without allowing any other activities to disturb the process, except for sending quotes in the separate thread used for that purpose.

11.7 Update time This is the time it takes to react on new information. It includes throughput, the time it takes for the information to get to PRIME, and the time it takes for PRIME to respond. The necessary response might be to show new values or to automatically send a transaction. The system must be quick enough to feed new information to PRIME without falling behind. PRIME needs to be quick enough to process the information as it received.

11.7.1 Portfolio Sheets For risk and profit/loss values the reaction time is equal to the time it takes to finish the previous calculation, plus the time it takes to recalculate again based on the new information that has arrived in the system.

The performance experienced by the end user is to high degree dependent on the amount of data used. In many cases, good data maintenance is an important factor in getting good performance with the system. Strive to minimise the quantity of business data, especially data cached by the ADS. This significantly decreases the need for memory and improves startup time and run-time performance. See section 11.12.1 Data maintenance.

11.7.2 Quote Sheets or market making The reaction time is very important in market making. When an underlying price updates, it is critical to send out a response quickly with new modified quotes.

Price updates are received on the TNP thread. These updates are posted on a queue. The main thread which is responsible for, among other things calculating new quotes, polls this queue every 20 ms. If a new price arrives just after prices have been polled, a special message is

Page 89: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 89 of 102

posted with high priority on the windows queue of the main thread. This will boost the priority of the main thread, and the new message will be handled as quickly as possible. Only one priority message will be sent between every poll. This means that the system has both good reaction time when the transaction flow is slow, as well as good efficiency when the transaction flow is great.

The TNP order thread is designed to run in a separate compartment and is not affected by the locks in the main thread. This means that it can start sending transactions to the AMAS immediately.

Quote sending order Quotes are calculated and sent in priority order. A priority is calculated using the delta of the quoted instrument compared to the spread and the underlying tick size. This order is stored so that the next time calculations are performed, they can be processed in that order. When orders are sent to the market they are sent in this order.

Approximations The Quote Sheet can make use of precalculation and approximation techniques. This means that small amounts of CPU and time will be used for the calculation of the new quotes. The precision is assumed sufficient as the quotes must be adjusted to even tick sizes before they are sent to the market.

11.8 Memory garbage collection PRIME uses a garbage collector to allocate and collect memory. The collector allocates memory from the operating system and keep this in a pool of unused memory reserved for PRIME. The garbage collector also reclaims unused memory and returns it to the pool. PRIME can allocate memory a lot faster from this dedicated pool than from the operating system.

11.8.1 Incremental as opposed to non-incremental garbage collection A non-incremental garbage collection completely halts execution of the program to run a collection cycle. This has the obvious disadvantage that the program can perform no useful work during a collection cycle.

Incremental garbage collectors are designed to reduce this disruption by interleaving their work with the activity from the main program.

In PRIME, the garbage collector runs in incremental mode by default, which gives better startup times for larger processes.

It is possible to start PRIME in incremental or non-incremental mode. It can be wise to run in non-incremental, if running batch only (typically for the ATS). Incremental can be used if memory seems to grow unbounded during startup, or if there is no clear distinction between startup mode and run-time mode.

Note: The incremental and the non-incremental garbage collector do not respond in exactly the same way to the settings -fds and GC_INITIAL_HEAP_SIZE.

Sometime,s the harvester must halt PRIME to search for memory to collect. If the prime.exe process is large this memory sweep can take a few seconds during which PRIME will be halted and unable to perform any other task. The collections occur at a frequency that is very much dependent on the activity but can be expected every 20 minutes or so.

Page 90: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 90 of 102

The garbage collector uses a modified mark-sweep algorithm. Conceptually it operates roughly in four phases, which are performed occasionally as part of a memory allocation:

• Preparation: Each object has an associated mark bit. Clear all mark bits, indicating that all objects are potentially unreachable.

• Mark phase: Marks all objects that can be reachable via chains of pointers from variables. Often the collector has no real information about the location of pointer variables in the heap, so it views all static data areas, stacks, and registers as potentially containing pointers. Any bit patterns that represent addresses inside heap objects managed by the collector are viewed as pointers.

• Sweep phase: Scans the heap for inaccessible, and hence unmarked, objects, and returns them to an appropriate free list for reuse.

• Finalisation phase: Unreachable objects, registered for finalisation, are queued for finalisation outside the collector.

If the total amount of allocation since the last collection is less than the heap size divided by GC_free_space_divisor, the heap is expanded. Otherwise, a garbage collection is initiated. Do not alter these settings without contacting the support first.

Incremental collection Incremental collection means that most of the garbage collection effort is spent on newly allocated memory.

This is achieved by leaving all "old" memory when collecting. The collector will only follow the root set pointing to new memory. If old memory is updated possibly pointing to new memory it will be added to the current root set. Write access is used to notice when old pages are written to.

In incremental mode, the heap is always expanded when insufficient space is encountered for an allocation. Garbage collection is triggered whenever it is noticed that more than GC_heap_size / 2 * GC_free_space_divisor bytes of allocation have taken place. After GC_full_freq minor collections, a major collection is started.

Using the incremental collector brings down the freezes considerably. It also brings down the memory usage.

Refer to www.hboehm.info/gc/ for more information about how a garbage collector works.

Note: Memory allocated when reading persistent data from the ADS is never returned or collected. Instead it is cached, because it will most likely be used again at a later stage.

11.8.2 Garbage collection configuration The following settings control the mode of the garbage collector:

• To use Incremental mode, do nothing, because this is the default mode used if nothing else is set.

• To use Non-incremental mode, supply -nonincremental to the command line when starting PRIME.

The free space divisor is 3 by default, but it can be set using the -fsd command-line switch.

For more information about the garbage collector, refer to www.hboehm.info/gc/.

If the garbage free space is small and there appears to be an excessive amount of garbage collections performed, consider changing the default free space divisor (fsd) value to 1. This is done in the shortcut to PRIME, by adding the option -fsd 1.

Page 91: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 91 of 102

-fsd controls the amount of extra headroom allocated by the system on top of the currently used memory. The size of this free space is a compromise between the memory size and the performance. Setting 1 instead of the default 3 means that there will be more free space available so that PRIME is not forced to garbage collect as often.

The number of garbage collections and the free space can be observed in the Monitoring Console or can be logged by switching on the garbage collection log in the Log Categories window. If PRIME is performing more than five garbage collections per hour, or the free garbage collector memory is less than 20 percent after a garbage collection, then reconfiguration might be necessary.

The GC_INITIAL_HEAP_SIZE setting makes it possible to set the initial size of the allocated memory of the application. Setting this to, for example, 1,000,000,000 means that PRIME will allocate 1 GB of memory directly at startup.

The reason for changing this is that it will take fewer collects at startup (less time for starting the workspace) and also that you can make a "small" session of PRIME larger and, hence, allow for a lesser number of garbage collects. On the negative side, it also causes some collects to take longer, because it is dependent on the memory allocated by the process.

Background finalisation Background finalisation is a garbage collector setting which directs the garbage collector to destroy objects in a background thread. This can improve the responsiveness of the system. Background finalisation is enabled by default. The setting is found on the Log Categories window. This setting can also be set through the acm.Memory.GcBackgroundFinalization(enabled) method or using the acm.LogStatus method.

Note: Background finalisation should not be used during long running Python processes. This is because the background finalisation will not be performed until the Python process has terminated. This can cause severe memory issues when, for example, running large reports.

11.9 Distributed processing If suffering from poor performance the first step is usually to try to improve the performance of the underlying systems and to optimise scripts and extensions. If this has been done and performance is still not satisfactory then distributing the processing might be an option.

11.9.1 PACE It is possible to use local subprocesses for sheet computation. This leaves the main PRIME process free to handle the GUI and does much to resolve sheet-related GUI freeze problems.

For more information, refer to System Administration: Distributed Processing Using PACE (FCA4619).

11.10 Trading Manager Trading Manager performance is affected by many things, for example:

• The amount of data in positions, trades, order books. • The number of calculated values and their complexity. • The workspace setup. Multiple sheets in one Trading Manager is different from multiple

Trading Managers.

Restrict the amount of data as much as possible. For example, by using trade filters, standalone grouping rows, or Insert Items Query folders.

Page 92: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 92 of 102

Standalone grouping rows are created by dragging a group folder from a portfolio to another place in the same sheet, to another sheet, or to a custom docked view.

For example, if a group has been dragged and dropped further up in a sheet, and you are only interested in the calculations in this specific group, you can remove the portfolio from the sheet. This would also greatly improve the performance.

Query folders can be used so traders can include only relevant order books, instead of entire market segments or option series.

11.10.1 Separating trading from risk Split large trading and risk sessions into two Workspaces and run these in two different PRIME sessions, one for risk, and one for trading. This lessens the negative impact of the risk calculations in the trading session. Short interruptions can be tolerated in a risk session, but not in a trading session used for fast trading on an electronic market. Note that simulations will only affect the session in which it was made. To run two sessions on the same workstation, there should be at least two CPUs or cores available.

Use the Trading Manager – calculation performance logging (see section 11.2 Basic PRIME performance issue analysis), to see if there are calculations which are slower than 200–500 ms. If there are frequent slow loggings, then this means that the system locks up for the whole duration of the calculation, and the risk part should be moved to a separate session. If frequent "performance warning" loggings persist, reduce the amount of order books and portfolios, or investigate the reason for these performance warnings.

11.10.2 Sheet cell pre-initialisation In the Trading Manager, under Sheets>Options, there is the Cell initialization list. By default, this list is set to Pre-initialize no cells for most sheets. For the most part, this is a good setting, which reduces the CPU load and makes the sheet startup faster. The setting is important to reduce the time needed to open the sheet, as well as to reduce memory consumption. The drawback of this setting is that scrolling down and right might be slow the first time an area in the sheet is looked up. This happens because data for the cells which were hidden so far must be retrieved, and the values must be calculated. If this behaviour is not acceptable, then the setting can be changed. The more grouping levels are initialised, the more time it takes to open a sheet, and the more memory is used initially.

11.10.3 Multi-threading In the PRIME Extension Editor, there is an extension type called FBlockInfo. An FBlockInfo has one attribute (MT) determining whether the FBlock that the FBlockInfo refers to should utilise multi-threading or not. By default, MT is set to "False". The FBlock is identified with the a string corresponding to the DocKey() of the FBlock.

Example FBlock:trinomialSwaptionModel$14 = MT=True

You can specify if an FBlock should use multi-threading or not from the Extension Editor. For an FBlock to utilise multi-threading, it also must be MTSafe, and PRIME needs to be run with wutcount larger than 2.

Page 93: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 93 of 102

11.11 Quoting performance

11.11.1 General The bottleneck in quoting is the maximum number of transactions per second that can be sent to the exchange. This number varies between different exchanges, where SAX, for example, allows approximately 70 quotes per second from one exchange member, while SWX has a maximum of 120 for all members to share. This means that the settings must be different for different exchanges.

There is one general setting which controls the minimum amount of time between which a new update of one single order book is attempted. In the Extension Editor, there is a setting called _quoteUpdatePeriod. This is by default set to 3,000 ms, but it can be good to lower this number to 100 ms or less, if the number of order books being quoted is not too large.

Note that the PRIME setting called preventInhouseCrossing requires that the corresponding AMAS setting is made for all markets that the user is quoting on. This means that if PRIME is not protecting against in-house crossing, the AMAS must do it instead.

There will be a positive impact if the "Underlying Price Slack" column is used to control which quotes are sent. The underlying slack makes it possible to control that many quotes are sent, or none for a certain price movement. This helps PRIME pack the mass quotes full which improves efficiency.

Refer to System Administration: AMS Configuration Reference (FCA1192) for general AMAS Settings. Also, refer to the slow-system problem in System Administration: AMS Maintenance (FCA1189).

One general tip is to keep the MarketMakingOrderHistory short, for example, approximately two to five days. Refer to System Administration: AMS Maintenance (FCA1189) for details.

11.11.2 SAX quoting The number of channels to the exchange determines the throughput and should be increased as much as possible. Increased number of channels must be requested from the exchange and configured on the AMAS.

Note: All settings must be done on both PRIME and the AMAS, because they work together. Failing to do so can cause problems.

Settings in PRIME • To allow PRIME to send new modifications before the previous is accepted by SAXESS,

set orderBookCascadeQuoteModify to "true" in the PRIME Trading settings for SAX. • To have PRIME utilise AMAS queue optimisation, set

orderBookCascadeQuoteModifyUnsynchronized to "true" under Data>Explorer>Trading Settings/<Market>/Edit default values (right-click menu) in PRIME.

• Because in-house crossing is prevented in the AMAS with these settings, it is also necessary to switch off the in-house crossing protection in PRIME:

− preventInhouseCrossing=false on the FExtensionAttribute tab in the Extension Editor

− FObject:preventInhouseCrossing=false

Page 94: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 94 of 102

Settings in AMAS Set up AMAS SAX to use Queue optimisation, where modifications are merged if PRIME sends modifications before the previous modification in the queue has been sent.

• Add value SupersedeQuotesInQueue (DWORD)=1 under <service name>\Parameters\Threadpools for AMAS to enable Supersede Functionality.

• Set value OldThreadModel (DWORD)=0 also under <service name>\Parameters\Threadpools to enable a new thread model and the delete transaction priority.

• Set InhouseCrossingProtectionActive (DWORD)=1, also under <service name>\Parameters\Threadpools.

• Set Synch Modify=0 under <service name>\MI\Parameters\Sax Com. • Set Synch Modify MM=0 also under <service name>\MI\Parameters\Sax Com.

11.11.3 OM quoting The number of channels to the exchange determines the throughput and should be increased as much as possible. Increased number of channels must be requested from the exchange and configured on the AMAS.

Refer to System Administration: AMAS-OMXD (FCA1804) for more information about the OM AMAS.

11.11.4 SWX quoting

Settings in AMAS • Add value SupersedeQuotesInQueue (DWORD)=1 under <service

name>/Parameters/Threadpools for AMAS to enable Supersede Functionality. • Set value OldThreadModel (DWORD)=0 to enable a new thread model and the delete

transaction priority. • Set InhouseCrossingProtectionActive (DWORD)=1.

Refer to System Administration: AMAS-SWXess (FCA4158) for more details about AMAS SWX settings.

11.11.5 Eurex quoting No special setting needed for Eurex quoting. Mass Quote Transactions will automatically be used if sending more than one quote at the same time.

There will be a positive impact if the Underlying Slack column is used to control which quotes are sent. The underlying slack makes it possible to control that many quotes are sent, or none for a certain price update. This helps PRIME pack the mass quotes full which improves efficiency.

11.12 Portfolio and risk performance All data and functionality affect the performance. The system should not be burdened with data or functionality that is not needed. Our intention is that the system administrators and the users should be in control. Old data should be deleted or archived; only functionality activated by choices is included in the calculations, and only the columns displayed in the sheet are calculated.

Page 95: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 95 of 102

11.12.1 Data maintenance The performance experienced by the end user is to high degree dependent on the amount of data used. There are several tools that assist in reducing the amount of data, either in the database, or in the ADS/PRIME cache. In many cases, good data maintenance is an important factor in getting good performance with the system.

Strive to minimise the quantity of business data, especially data cached by the ADS. This significantly decreases the need for memory and improves startup time and run-time performance.

Aggregation Aggregate as much data as possible, refer to Data Management: BDP Trade Aggregation (FCA1816) for more information.

The general recommendation is that there should never be more than 60,000 open trades in the database. This includes both open trades (that have not yet been aggregated) and aggregate trades. It is recommended that aggregation is scheduled to run daily with aggregation rules for number of open trades, periodic aggregates, and split criteria so that the recommendation is met. More extensive use of Trade Aggregation than outlined in this recommendation will result in even better performance.

Instrument expiry Always run the BDP Instrument Expiration handling regularly – refer to Data Management: BDP Instrument Expiry (FCA2299).

The general recommendation is that there should never be more than 500 positions in expired or matured instruments in the database.

• For organisations trading in standardised derivatives where many instruments expire on the same day, the recommendation is to remove the expired instruments from previous month well before the next expiration date.

• For organisations where most of the business is OTC, the recommendation is to divide 500 with the average amount of trades in one day to estimate the number of open days for expired positions.

It is also recommended to schedule the script to run on a daily basis, with the amount of open days for expired/matured instruments configured.

Of course, a more extensive use of the Instrument Expiry handling than what is outlined in the previous recommendations will contribute to even better performance.

Delete historical prices Historical prices are not normally cached within the ADS. Therefore, any requests for price_hst records will be expensive in performance terms.

If reading historical prices causes "startup time" or other performance problems, consider caching the historical price table in the ADS as well. Calculate to allow 25 MB for each 100,000 prices, and ensure the ADS is running on a machine with enough memory to do this.

Also, delete unwanted historical prices to minimise the amount of date in price_hst as much as possible. For more information, refer to Data Management: BDP Deleting Historical Prices (FCA2862).

Trade rollout Roll out trades regularly, using trade rollout (the FTradeRollout script).

Page 96: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 96 of 102

11.12.2 P/L and funding

P/L For more information, refer to Reference: Profit and Loss Calculations (FCA2042).

Clear P/L Calculating Profit and Loss for periods other than between "inception" and "now" are resource expensive. Using clear profit and loss is much more effective than using the Profit and Loss period functionality from the "first day of the year" until "now".

Utilise the BDP Clear Profit and Loss handling as described in User Guide: Clear Profit and Loss (FCA1818).

Forward starting P/L This is set in the Administration Console Valuation Parameters>Profit Loss tab with the Forward Start P/L option. Only use this setting if you know that you have trades with acquire day in the future, or of pay type future.

Bid/Ask Valuation This is set in the Administration Console, under Accounting Parameters. Use this functionality with caution. Consider disabling it if encountering memory problems. It uses more memory when switched on.

Historical financing/funding Using the Historical Financing Funding functionality requires a lot of CPU resources. The number of prices saved in the Historical Financing instrument affects the performance. Use this functionality only if absolutely required, if not, disable it in the Administration Console (Valuation Parameters>Profit&Loss).

11.12.3 Portfolio Sheet configuration

Restrict the number of contexts Using multiple valuation Contexts requires more memory and longer load times as reuse of valuation nodes is not possible between different valuation Contexts.

Global or local simulation Using a global simulation is better from a performance perspective than local simulation. Especially try to use global simulation when having multiple Trading Managers within same PRIME session.

To use global simulations, disable Local Calculations in Applications in Session Manager under File>Preferences.

Hide the portfolio row One way to reduce the calculation load is not displaying the top portfolio row in the Portfolio Sheet.

Update interval in a Portfolio Sheet The update interval in the Portfolio Sheet (Auto Refresh Interval) should be set either to between 0–2 sec, or to a very large number (at least several minutes). If a small number cannot be used, then manual is preferred. The reason for this is that it is not good to have a long update interval, because during that time many underlying prices will have changed, leading to

Page 97: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 97 of 102

a recalculation of most of the instruments, causing the client to freeze. Using a short update interval will let PRIME calculate the derivatives for one or a few underlying instruments at any given time, which will disturb the user as little as possible.

Using a manual command to refresh is good because the user then has total control of calculation updates.

Trade grouping When utilising customised grouping in the Portfolio Sheet, there are several things to keep in mind. The number of grouping levels affects performance, and certain attributes as well as the order among the attributes also have performance implications. Typically, grouping on trade attributes is more expensive than grouping on instrument attributes. Be careful with which attributes to group on higher up in the hierarchy.

The grouping controls the actual number of positions calculated, and the number of positions is the single most important factor when it comes to memory consumption.

Note that when grouping on trade attributes, such as the acquirer, the same instrument will show up in more than one position. With advanced grouping, the number of positions can be many times the number of instruments in a portfolio.

11.12.4 Calculation approximations There is an Extension Attribute in the setup-default group, called useBinomialSplines. It is by default set to "false", meaning that approximations are not enabled. Changing the attribute to "true" makes the binomial model return a span of results. Cubic splines are created between these points, returning the theoretical value, delta, gamma, theta, vega and rho. When the underlying price stays well within the end points of the spline span, interpolated values are returned. As soon as the underlying price gets close to the end points, the binomial model is called again creating a new span (this also happens when the volatility or interest rates are changed).

If real-time yield curves/volatility structures are not used, the speed increase of recalculations for binomial valued options will be significant. Front recommends that the Binomial Default setting in Valuation Parameters is selected, but with the exception that:

• At least 400 is entered for Binomial Steps. • Binomial Richardson Extrapolation is not selected.

11.12.5 Real-time yield curves Yield curve updates are performance costly. Limit the use of real-time updated curves as much as possible.

Use with caution – these calculations are inherently CPU intensive, and because they will invalidate most of the calculated values in the client, they cause many other calculations as well. From FRONT ARENA 2.2 it is possible to not only specify that a Yield Curve should be real-time updated, but also the update interval. In the Yield Curve Calculation window, it is possible to enter the number of seconds between each update. It is also possible to run the yield curve calculation on a server using a script.

11.12.6 FX rate updates Providers provide RICs with different update frequencies for the same instrument. Use low frequency RIC codes as much as possible.

There is also an update interval setting available for each individual Price Link Definition. This can be used to reduce the number of updates coming through an APH. For RICs which are

Page 98: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 98 of 102

updating at a rate higher than required, use this setting. Refer to System Administration: APH (FCA1386).

11.13 Hardware For hardware details, refer to System Administration: Hardware and Software Guide (FCA1129).

PRIME requires considerable hardware resources to ensure excellent operating conditions. The requirements for a mission critical real-time application, such as PRIME, are different from regular office applications, and information from hardware and software vendors, including the operating system, should be considered when purchasing and configuring client machines.

11.13.1 Memory It is very important for performance that there is sufficient physical memory available to keep PRIME from paging to disk. The easiest way to check this is in the Windows Task Manager; compare Physical Memory with Commit Charge Total, if the Commit Charge is great, then the machine is paging, and performance will be poor.

11.13.2 CPU PRIME is, due to the nature of the risk and trading business, very calculation intensive. Fast multiple core CPUs will enhance performance, especially if running more than one PRIME session at a time.

11.14 Windows

• Use the Windows setting Adjust for best performance. • Make sure the paging file/virtual memory size is not dynamic. This is done by setting

minimum and maximum size of the swap file to the same size. Adhere to Windows recommendation for size of swap file (that is, at least two times the physical memory).

• On Windows XP make sure the system is using DMA (Direct Memory Access) to write to disk. Use Dmacheck.exe (downloadable from Microsoft) to investigate your current setting. It can also be used to change this value. This is done from the Control Panel under System>Hardware>Device Manager->IDE ATA/ATAPI (or SCSI) Controllers>Properties>Advanced Settings.

11.15 Network A 100Mbit/s network is capable of roughly 10 MB/s transfer rates when used at 100 Mbit/s, full duplex. This means that under optimal conditions, transferring 100 MB of data will take at least 10 sec, which would be a small but noticeable part of the startup time for a very large portfolio. A large portfolio in this case is made up of a few hundred thousand trades.

Network latency can also be an issue when quoting or running automatic trading agents, for example, but generally, the network part of a round-trip consisting of a price change resulting in a requote (for example) is usually smaller than 0.1 ms. This number is an estimation based on a test sending 10,000 TNP messages in less than 100 ms.

A common networking performance issue is when the network interface card, or the switch it connects too, is set to "autosense" (to adjust speed and duplex automatically). It has been observed that autosense is not always capable of setting the correct speeds or duplex. These issues can arise, for example, when different hardware manufacturers are used in a network setup. A common issue is when the speed is correct (for example, 100 Mbit/s) but the duplex is

Page 99: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 99 of 102

wrong. This will result in a working network connection, but performance will be drastically reduced.

If running performance-dependent trading strategies, a high-performance network should be used.

11.16 Built-in PRIME performance enhancement technologies PRIME use several techniques to minimise the impact of CPU intensive tasks. These are built-in and rarely concern users or system administrators other than out of general interest.

11.16.1 Lazy evaluation PRIME uses a concept called "lazy evaluation" to minimise the amount of work carried out by the client. Values which are not visible on a screen and not used by any automatic functionality (such as quoting and agents) are not calculated/updated, because this saves a lot of CPU time. In addition, only the parts of a calculation that have changed since the last (re)calculation are re-evaluated when the value is displayed or used by some other functionality.

The way this behaviour is achieved is by using a notification mechanism that propagates changes and marks the nodes of valuation trees which have been changed. This is all that happens because of a change in a price or a parameter. The logic then determines how to redraw the invalidated area of the screen containing the calculated value. When this happens, a calculation is initiated and only the parts marked must be recalculated, the others will just return a cached value. The mark is restored when the calculation is done.

11.16.2 Update merging "Update Merging" is a similar and complimentary concept to lazy evaluation. If several consecutive updates of the same parameter in a calculation take place before a recalculation can be performed, only the latest update will be used. This is an obvious result of the lazy evaluation approach, but it is pointed out anyway because it has such an impact on client performance, and it makes the client capable of effectively degrading the update frequency of calculated values if the market activity grows rapidly (instead of falling behind).

11.16.3 Approximations Some calculated values can be approximated using a Taylor expansion with the delta and gamma or using splines and a vector of output values. The key to this optional feature is to use a definition of theoretical price which always adds the approximation to the latest "true" recalculated value of theoretical price. If theoretical price is already calculated, the approximation part of the expression will be equal to zero. This indicates there is no need to switch between the real theoretical price and the approximated theoretical price.

The binominal splines are created by calculating a slightly larger binominal tree, where an entire vector of values is returned instead of just the theoretical price. Using this vector and a vector of corresponding underlying prices, a spline can be created that will be used when interpolating values for underlying prices not included in the vector. Whenever the underlying price moves beyond the underlying price vector, a new call to the binominal function will be performed.

11.16.4 Instrument lot calculations Instrument lot calculations is a non-interactive built-in technique used to bundle instrument calculations to save time and memory for large portfolio calculations. Similar instruments are bundled and calculated together in "lots". The advantage is fewer ADFL nodes, which lead to reduced memory usage and reduced startup time. The lot technique also provides better performance through more effective use of multi-core processors.

For more information, refer to Reference: Instrument Lot Calculations (FCA4576).

Page 100: System Administration: PRIME

System Administration: PRIME (FCA1086-42)

11 Appendix G: Performance 100 of 102

11.16.5 Threads and event handling The PRIME client has three sources feeding the main event loop:

• Windows messages • Events from the ADS • Events from the market connections

Timer messages are fired every 20 ms, and they drive the reading of the queues from the ADS and the market connections.

Events from the queues are propagated to all dependent objects, using the lazy evaluation technique described earlier.

There are two types of Trading Manager columns:

• Simple columns, for example, market prices or persistent object attributes (Bid Price, Ask Price, Strike Price).

• Calculated values, such as theoretical prices or portfolio deltas.

Simple columns invalidate the screen immediately, resulting in a paint message being posted back to the windows queue.

The calculated value task is inserted in a job queue. When the system stops using the CPU, there will be an "On Idle" message posted on the windows queue. When this message is received, the screen area for the calculated value will be invalidated, and the value will be calculated.

If the consumer of the information or calculation is not for display, but instead used in automation, there is a slightly different mechanism. There are two types of automated techniques:

• Trading agents • Quote Sheets

The quote sheet calculations are driven using a concept called live evaluators. If a calculated value is registered as a live evaluator, if will be recalculated immediately.

The ARENA data flow language (ADFL) trees used in PRIME make it possible to handle this in a systematic way, by introducing a keyword in the ADFL called "defer ".

Time

K (Strike Price)Und

Pric

e

0

0

S - K

S - K

Current time

Time

K (Strike Price)Und

Pric

e

0

0

S - K

S - K

K (Strike Price)Und

Pric

e

0

0

S - K

S - K

K (Strike Price)Und

Pric

e

0

0

S - K

S - K

Current time

Page 101: System Administration: PRIME
Page 102: System Administration: PRIME

Contact the FIS Cross-Asset Trading and Risk Platform documentation team at: [email protected]