Bläddra i källkod

maintenance fixes

fix client_g.html to resolve hostname by function instead of hard coding
add new sets of prd file for use on vsu-longhorn envt
change .sh to make them detect the new vsu-longhorn server
laxaurus 6 år sedan
förälder
incheckning
b38a8c8425

+ 66 - 0
src/config/daily_download_prd.cfg

@@ -0,0 +1,66 @@
+[run_config]
+logconfig: {'level': logging.INFO, 'filemode': 'w', 'filename': '/tmp/daily_download.log'}
+output_path:'/home/vuser-longhorn/pyenvs/ironfly/finopt/data/'
+data_list: "{'a':['HSI options after market HTML', 'dha_url'],'b':['HSI options after market ZIP', 'dza_url'],'c':['HSI options normal hours ZIP', 'dzn_url'],'d':['HSI futures normal hours HTML', 'fhn_url'],'e':['HSI futures normal hours ZIP', 'fzn_url'],'f':['HHI CN futures normal hours HTML', 'hhn_url'],'g':['HHI CN futures normal hours ZIP', 'hzn_url'],'h':['HHI CN options normal hours HTML', 'ohn_url'],'i':['HHI CN options normal hours ZIP', 'ozn_url'],'j':['Cash market daily quotes HTML ', 'shd_url'],'k':['Cash market short sell HTML', 'shs_url'],'l':['HSI volatility HTML', 'vh_url'],'m':['HSI volatility ZIP', 'vz_url']}"
+
+
+[holiday]
+hk_holiday: "{'2019': ['0101','0205','0206','0207','0405','0419','0420','0422','0501','0513','0607','0701','0914','1001','1007','1225','1226']}"
+
+[hkex_data]
+#
+# Derivative market
+#
+# d - derivative options
+# z - zip / h - html
+# n - normal trading / a - after hours
+
+	 
+# Day Trading Session zip		
+# %s - YYMMDD
+# 
+#
+dzn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio%s.zip'
+dhn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsio%s.htm'
+
+
+# After-Hours Trading Session		
+dza_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsioa%s.zip'
+dha_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsioa%s.htm'
+
+
+#
+# Futures
+#
+# f - futures HSI
+fzn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsif%s.zip'
+fhn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hsif%s.htm'
+# 
+# h - china enterprise
+# 
+hzn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hhif%s.zip'
+hhn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hhif%s.htm'
+#
+# o - china enterprise options
+# 
+ozn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hhio%s.zip'
+ohn_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/hhio%s.htm'
+#
+# v - hsi volatility
+#
+vz_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/vhsf%s.zip'
+vh_url: 'https://www.hkex.com.hk/eng/stat/dmstat/dayrpt/vhsf%s.htm'
+
+#
+# Securities market
+#
+# s - securities
+# h - htm
+# d - daily quote | s - short sell
+#
+# https://www.hkex.com.hk/eng/stat/smstat/dayquot/d190205e.htm
+shd_url: 'https://www.hkex.com.hk/eng/stat/smstat/dayquot/d%se.htm'
+
+# short selling 
+# main board
+shs_url: 'https://www.hkex.com.hk/Market-Data/Statistics/Securities-Market/Short-Selling-Turnover-Today/Short-Selling-Turnover-(Main-Board)-up-to-morning-close-today?sc_lang=en'

+ 14 - 0
src/config/pm.cfg

@@ -0,0 +1,14 @@
+[portfolio_monitor]
+name: 'portfolio_monitor'
+bootstrap_host: 'vorsprung'
+bootstrap_port: 9092
+redis_host: 'localhost'
+redis_port: 6379
+redis_db: 0
+tws_host: 'vsu-longhorn'
+group_id: 'PM'
+session_timeout_ms: 10000
+clear_offsets:  False
+logconfig: {'level': logging.INFO, 'filemode': 'w', 'filename': '/tmp/pm.log'}
+topics: ['position', 'positionEnd', 'tickPrice', 'execDetails', 'update_portfolio_account', 'event_tm_request_table_structure', 'event_request_port_summary', AbstractTableModel.EVENT_TM_TABLE_STRUCTURE_CHANGED]
+seek_to_end: ['*']

+ 0 - 0
src/config/pm_prd.cfg


+ 0 - 45
src/config/tws_gateway.cfg

@@ -1,45 +0,0 @@
-[tws_gateway]
-name: 'tws_gateway_server'
-#
-# kafka settings
-#
-#bootstrap_host: 'localhost'
-bootstrap_host: 'vorsprung'
-bootstrap_port: 9092
-#
-# redis persistence
-#
-redis_host: 'localhost'
-redis_port: 6379
-redis_db: 0
-#
-# TWS gateway settings
-#
-# 7496 - production larry046, 7496 - development,  8496 production mchan927
-#
-tws_host: 'vsu-bison'
-tws_api_port: 8496
-tws_app_id: 5567
-#
-#
-#
-group_id: 'TWS_GW'
-session_timeout_ms: 10000
-topics: ['reqAccountUpdates', 'reqOpenOrders', 'reqExecutions', 'reqIds', 'reqNewsBulletins', 'cancelNewsBulletins', 'setServerLogLevel', 'reqAccountSummary', 'reqPositions', 'reqAutoOpenOrders', 'reqAllOpenOrders', 'reqManagedAccts', 'requestFA', 'reqMktData', 'reqHistoricalData', 'placeOrder', 'gw_req_subscriptions']
-clear_offsets: False
-seek_to_end:['reqAccountUpdates', 'reqPositions', 'reqMktData']
-#
-#
-subscription_manager.subscriptions.redis_key: 'subscriptions'
-subscription_manager.topics: ['reqMktData']
-#logconfig: {'filename': '/home/larry-13.04/workspace/finopt/log/tws_gateway.log', 'filemode': 'w','level': logging.INFO}
-logconfig: {'level': logging.INFO,  'filemode': 'w', 'filename':'/tmp/tws_gateway.log'}
-order_transmit: False
-reset_db_subscriptions: False
-#
-#
-ib_heartbeat.ib_port: 8496
-ib_heartbeat.appid.id: 9911
-ib_heartbeat.gateway: 'vsu-bison'
-ib_heartbeat.try_interval: 60
-ib_heartbeat.suppress_msg_interval: 120

+ 46 - 0
src/config/tws_gateway_prd.cfg

@@ -0,0 +1,46 @@
+[tws_gateway]
+name: 'tws_gateway_server'
+#
+# kafka settings
+#
+bootstrap_host: 'vorsprung'
+bootstrap_port: 9092
+#
+# redis persistence
+#
+redis_host: 'localhost'
+redis_port: 6379
+#
+# DIFFERENT REDIS DB for PRODUCTION!!!
+redis_db: 1
+#
+# TWS gateway settings
+#
+# 7496 - production larry046, 7496 - development,  8496 production mchan927
+#
+tws_host: 'vsu-longhorn'
+tws_api_port: 8496
+tws_app_id: 5567
+#
+#
+#
+group_id: 'TWS_GW'
+session_timeout_ms: 10000
+topics: ['reqAccountUpdates', 'reqOpenOrders', 'reqExecutions', 'reqIds', 'reqNewsBulletins', 'cancelNewsBulletins', 'setServerLogLevel', 'reqAccountSummary', 'reqPositions', 'reqAutoOpenOrders', 'reqAllOpenOrders', 'reqManagedAccts', 'requestFA', 'reqMktData', 'reqHistoricalData', 'placeOrder', 'gw_req_subscriptions']
+clear_offsets: False
+seek_to_end:['reqAccountUpdates', 'reqPositions', 'reqMktData']
+#
+#
+subscription_manager.subscriptions.redis_key: 'subscriptions'
+subscription_manager.topics: ['reqMktData']
+#logconfig: {'filename': '/home/larry-13.04/workspace/finopt/log/tws_gateway.log', 'filemode': 'w','level': logging.INFO}
+logconfig: {'level': logging.INFO,  'filemode': 'w', 'filename':'/tmp/tws_gateway.log'}
+order_transmit: False
+reset_db_subscriptions: False
+#
+#
+ib_heartbeat.ib_port: 8496
+ib_heartbeat.appid.id: 9911
+ib_heartbeat.gateway: 'vsu-longhorn'
+ib_heartbeat.try_interval: 60
+ib_heartbeat.suppress_msg_interval: 120

+ 1 - 1
src/config/ws.cfg

@@ -5,7 +5,6 @@ bootstrap_port: 9092
 redis_host: 'localhost'
 redis_port: 6379
 redis_db: 0
-tws_host: 'vsu-bison'
 group_id: 'WS'
 session_timeout_ms: 10000
 clear_offsets:  False
@@ -16,3 +15,4 @@ ws_flush_timeout: 2000
 ws_dirty_count: 20
 ws_port: 9001
 ws_webserver_cfg_path:'/home/laxaurus/workspace/finopt/src/config/ws_webserver.cfg'
+#ws_webserver_cfg_path:'/home/vuser-longhorn/pyenvs/ironfly/finopt/src/config/ws_webserver.cfg'

+ 0 - 0
src/config/ws_prd.cfg


+ 18 - 0
src/config/ws_webserver_prd.cfg

@@ -0,0 +1,18 @@
+[global]
+server.socket_host: "0.0.0.0"
+server.socket_port: 8091
+log.screen: False
+log.error_file': '',
+log.access_file': ''
+[/]
+tools.sessions.on : True
+tools.staticdir.root : '/home/vuser-longhorn/pyenvs/ironfly/finopt/src/'
+
+[/static]
+tools.staticdir.on : True
+tools.staticdir.tmpl : './html'
+#tools.staticdir : './html'
+
+[/public]
+tools.staticdir.on: True
+tools.staticdir.dir : './html/public'                                        

+ 2 - 2
src/finopt/optcal.py

@@ -364,9 +364,9 @@ if __name__ == '__main__':
     #spot 24119.0, X 25000, right: P, evaldate: 20150812, expiry: 20150828, rate: 0.0005, div: 0.0005, vol: 0.2000, premium: 334.0000
     #spot 24149.0, X 25200, right: P, evaldate: 20150812, expiry: 20150828, rate: 0.0005, div: 0.0005, vol: 0.2000, premium: 437.5000
     
-#     test()
+    
 #     test2()
-#     test3(100, 24200, 'C', '20170327', '20170330', 0.00012, 0.0328, 0.120)
+    test3(100, 24200, 'C', '20170327', '20170330', 0.00012, 0.0328, 0.120)
 #     results = cal_option(23067.0, 22000, 'P', '20151018', '20151029', 0.0009, 0.0328, 0.2918)
 #     npv1 = results['npv']
 #     v1 = 0.2918

+ 2 - 1
src/html/client_g.html

@@ -256,7 +256,8 @@ table.minimalistBlack tfoot td {
 	   
 
     var ws;
-    var ws_url = "ws://localhost:9001/";
+    //var ws_url = "ws://localhost:9001/";
+    var ws_url = "ws://"+window.location.hostname + ":9001";
     var tableChart;
 	
 	  function init() {

+ 25 - 6
src/rethink/portfolio_monitor.py

@@ -12,7 +12,7 @@ from dateutil.relativedelta import relativedelta
 from ib.ext.Execution import Execution
 from ib.ext.ExecutionFilter import ExecutionFilter
 from finopt import optcal
-from misc2.helpers import ContractHelper, LoggerNoBaseMessagingFilter, ExecutionFilterHelper
+from misc2.helpers import ContractHelper, LoggerNoBaseMessagingFilter, ExecutionFilterHelper, ConfigMap 
 from finopt.instrument import Symbol, Option, InstrumentIdMap, ExecFill
 from rethink.option_chain import OptionsChain
 from rethink.tick_datastore import TickDataStore
@@ -606,14 +606,14 @@ if __name__ == '__main__':
     
     kwargs = {
       'name': 'portfolio_monitor',
-      'bootstrap_host': 'vorsprung',
+      'bootstrap_host': 'localhost',
       'bootstrap_port': 9092,
       'redis_host': 'localhost',
       'redis_port': 6379,
       'redis_db': 0,
-      'tws_host': 'vsu-bison',
-      'tws_api_port': 8496,
-      'tws_app_id': 38868,
+#      'tws_host': 'vsu-bison',
+#      'tws_api_port': 8496,
+#      'tws_app_id': 38868,
       'group_id': 'PM',
       'session_timeout_ms': 10000,
       'clear_offsets':  False,
@@ -635,16 +635,35 @@ if __name__ == '__main__':
     parser.add_option("-e", "--evaluation_date",
                      action="store", dest="evaluation_date", 
                      help="specify evaluation date for option calculations")   
+    parser.add_option("-f", "--config_file",
+                      action="store", dest="config_file", 
+                      help="path to the config file")        
+    
+
+
     
     (options, args) = parser.parse_args()
+  
+    fargs = ConfigMap().kwargs_from_file(options.config_file)
     if options.evaluation_date == None:
         options.evaluation_date = time.strftime('%Y%m%d') 
     
+    # copy all command line options into fargs
     for option, value in options.__dict__.iteritems():
         if value <> None:
-            kwargs[option] = value
+            fargs[option] = value
+            
+    # compare default config with fargs
+    # replace the default values with values found in fargs
+    # update the final config into kwargs
+    temp_kwargs = copy.copy(fargs)            
+    for key in kwargs:
+        if key in temp_kwargs:
+            kwargs[key] = temp_kwargs.pop(key)        
+    kwargs.update(temp_kwargs)                
     
     
+        
             
   
       

+ 6 - 5
src/sh/pm.sh

@@ -1,17 +1,18 @@
 #!/bin/bash
 
 
-
+PM_CFG=pm.cfg
 HOST=$(hostname)
 echo $HOST
 if [ $HOST == 'hkc-larryc-vm1' ]; then
 	FINOPT_HOME=~/ironfly-workspace/finopt/src
 elif [ $HOST == 'astron' ]; then
 	FINOPT_HOME=~/workspace/finopt/src
-else
-	FINOPT_HOME=~/l1304/workspace/finopt-ironfly/finopt/src
-				
+elif [ $HOST == 'vsu-longhorn' ]; then
+    FINOPT_HOME=~/pyenvs/ironfly/finopt/src
+    source /home/vuser-longhorn/pyenvs/finopt/bin/activate
+    PM_CFG=pm_prd.cfg						
 fi
 export PYTHONPATH=$FINOPT_HOME:$PYTHONPATH
-python $FINOPT_HOME/rethink/portfolio_monitor.py  -c -g PM1  
+python $FINOPT_HOME/rethink/portfolio_monitor.py  -c -g PM1  -f ../config/$PM_CFG
 #python $FINOPT_HOME/rethink/portfolio_monitor.py -g PM1

+ 10 - 5
src/sh/start_twsgw.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-
+TWS_GATEWAY_CFG=tws_gateway.cfg 
 HOST=$(hostname)
 echo $HOST
 if [ $HOST == 'hkc-larryc-vm1' ]; then
@@ -9,14 +9,19 @@ elif [ $HOST == 'vorsprung' ]; then
 	FINOPT_HOME=~/workspace/finopt/src
 elif [ $HOST == 'astron' ]; then
 	FINOPT_HOME=~/workspace/finopt/src
-		
-else
-	FINOPT_HOME=~/l1304/workspace/finopt-ironfly/finopt/src
+elif [ $HOST == 'vsu-longhorn' ]; then
+        FINOPT_HOME=~/pyenvs/ironfly/finopt/src
+        source /home/vuser-longhorn/pyenvs/finopt/bin/activate
+        TWS_GATEWAY_CFG=tws_gateway_prd.cfg
 fi
+					
+						
 export PYTHONPATH=$FINOPT_HOME:$PYTHONPATH
 #  
 # clear all topic offsets and erased saved subscriptions
-python $FINOPT_HOME/comms/ibgw/tws_gateway.py -r -c -f $FINOPT_HOME/config/tws_gateway.cfg 
+
+
+python $FINOPT_HOME/comms/ibgw/tws_gateway.py -r -c -f $FINOPT_HOME/config/$TWS_GATEWAY_CFG
 
 
 #

+ 8 - 5
src/sh/ws.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-
+WS_CFG=ws.cfg
 
 HOST=$(hostname)
 echo $HOST
@@ -11,11 +11,14 @@ elif [ $HOST == 'astron' ]; then
 elif [ $HOST == 'vorsprung' ]; then
 	FINOPT_HOME=~/workspace/finopt/src	
 		
-else
-	FINOPT_HOME=~/l1304/workspace/finopt-ironfly/finopt/src
+elif [ $HOST == 'vsu-longhorn' ]; then
+    FINOPT_HOME=~/pyenvs/ironfly/finopt/src
+    source /home/vuser-longhorn/pyenvs/finopt/bin/activate
+    WS_CFG=ws_prd.cfg
+							
 fi
 
 
 export PYTHONPATH=$FINOPT_HOME:$PYTHONPATH
-python $FINOPT_HOME/ws/ws_server.py  -c  -g AE1 -f ../config/ws.cfg 
-#python $FINOPT_HOME/ws/ws_server.py   -g AE1 -f ../config/ws.cfg 
+python $FINOPT_HOME/ws/ws_server.py  -c  -g AE1 -f ../config/$WS_CFG 
+