From 359fc2e336547750b32f5cae742c897db8d94473 Mon Sep 17 00:00:00 2001 From: Emre Tezel Date: Fri, 7 Apr 2023 16:09:09 +0100 Subject: [PATCH 1/3] changing spelling of Asia to all upper case --- syscontrol/control_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syscontrol/control_config.yaml b/syscontrol/control_config.yaml index 702b4dbde7..e9d2256c51 100644 --- a/syscontrol/control_config.yaml +++ b/syscontrol/control_config.yaml @@ -27,7 +27,7 @@ process_configuration_stop_time: # run_daily_prices_updates: # update_historical_prices: # everything in this block is passed as **kwargs to this method # download_by_zone: -# Asia: '07:00' +# ASIA: '07:00' # EMEA: '18:00' # US: '20:00' # _methods_on_completion: # and this block is passed to all methods that run on completion only From 4cd80861494b459af9e0d38b77bf8a2e061e59e0 Mon Sep 17 00:00:00 2001 From: zhangjing <409188013@qq.com> Date: Wed, 19 Apr 2023 16:37:14 +0800 Subject: [PATCH 2/3] Update instrumentconfig.csv cad5 : Canadian 5 year bond --- data/futures/csvconfig/instrumentconfig.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/futures/csvconfig/instrumentconfig.csv b/data/futures/csvconfig/instrumentconfig.csv index ad560c0d20..52e11660cc 100644 --- a/data/futures/csvconfig/instrumentconfig.csv +++ b/data/futures/csvconfig/instrumentconfig.csv @@ -45,7 +45,7 @@ CAD,CADUSD currency,100000,USD,FX,2.47,0,0,US CAD_micro,CADUSD_micro,10000,USD,FX,0.85,0,0,US CAD10,Canadian 10 year bond,1000,CAD,Bond,2,0,0,US CAD2,Canadian 2 year bond,1000,CAD,Bond,2,0,0,US -CAD5,Canadian 10 year bond,1000,CAD,Bond,2,0,0,US +CAD5,Canadian 5 year bond,1000,CAD,Bond,2,0,0,US CADJPY,CAD.JPY,200000,JPY,FX,0,0,0,US CADJPY2,CAD.JPY,200000,JPY,FX,0,0,0,US CADSTIR,Canadian STIR Bank acceptance,2500,CAD,STIR,2,0,0,US From d092a91841f573fbe6c5be69e03200279205cb44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthijs=20V=C3=A1k=C3=A1r?= Date: Tue, 6 Jun 2023 11:33:16 -0400 Subject: [PATCH 3/3] Adding absolute volume check in change roll status --- .../interactive_update_roll_status.py | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/sysproduction/interactive_update_roll_status.py b/sysproduction/interactive_update_roll_status.py index 432403e897..012dc11ced 100644 --- a/sysproduction/interactive_update_roll_status.py +++ b/sysproduction/interactive_update_roll_status.py @@ -42,6 +42,7 @@ from sysproduction.reporting.data.rolls import ( rollingAdjustedAndMultiplePrices, relative_volume_in_forward_contract_versus_price, + volume_contracts_in_forward_contract, ) @@ -91,6 +92,7 @@ class RollDataWithStateReporting(object): allowable_roll_states_as_list_of_str: list days_until_roll: int relative_volume: float + absolute_volume: float @property def original_roll_status_as_string(self): @@ -241,18 +243,26 @@ def days_until_earliest_expiry(data: dataBlob, instrument_code: str) -> int: @dataclass class autoRollParameters: - min_volume: float + min_rel_volume: float + min_abs_volume: float manual_prompt_for_position: bool state_when_position_held: RollState def get_auto_roll_parameters() -> autoRollParameters: - min_volume = get_input_from_user_and_convert_to_type( + min_rel_volume = get_input_from_user_and_convert_to_type( "Minimum relative volume before rolling", type_expected=float, allow_default=True, default_value=0.1, ) + + min_abs_volume = get_input_from_user_and_convert_to_type( + "Minimum absolute volume before rolling", + type_expected=float, + allow_default=True, + default_value=100, + ) manual_prompt_for_position = true_if_answer_is_yes( "Manually prompt for state if have position? (y/n)" @@ -264,7 +274,8 @@ def get_auto_roll_parameters() -> autoRollParameters: state_when_position_held = get_state_to_use_for_held_position() auto_parameters = autoRollParameters( - min_volume=min_volume, + min_rel_volume=min_rel_volume, + min_abs_volume=min_abs_volume, manual_prompt_for_position=manual_prompt_for_position, state_when_position_held=state_when_position_held, ) @@ -304,7 +315,7 @@ def auto_selected_roll_state_instrument( auto_parameters: autoRollParameters, ) -> RollState: - if roll_data.relative_volume < auto_parameters.min_volume: + if roll_data.relative_volume < auto_parameters.min_rel_volume: run_roll_report(data, roll_data.instrument_code) print_with_landing_strips_around( @@ -312,11 +323,25 @@ def auto_selected_roll_state_instrument( % ( roll_data.instrument_code, roll_data.relative_volume, - auto_parameters.min_volume, + auto_parameters.min_rel_volume, ) ) return no_change_required + + if roll_data.absolute_volume < auto_parameters.min_abs_volume: + + run_roll_report(data, roll_data.instrument_code) + print_with_landing_strips_around( + "For %s absolute volume of %f is less than minimum of %s : NOT AUTO ROLLING" + % ( + roll_data.instrument_code, + roll_data.absolute_volume, + auto_parameters.min_abs_volume, + ) + ) + return no_change_required + no_position_held = roll_data.position_priced_contract == 0 if no_position_held: @@ -451,8 +476,13 @@ def setup_roll_data_with_state_reporting( relative_volume = relative_volume_in_forward_contract_versus_price( data=data, instrument_code=instrument_code ) + absolute_volume = volume_contracts_in_forward_contract( + data=data, instrument_code=instrument_code + ) if np.isnan(relative_volume): relative_volume = 0.0 + if np.isnan(absolute_volume): + absolute_volume = 0.0 roll_data_with_state = RollDataWithStateReporting( instrument_code=instrument_code, @@ -461,6 +491,7 @@ def setup_roll_data_with_state_reporting( allowable_roll_states_as_list_of_str=allowable_roll_states, days_until_roll=days_until_roll, relative_volume=relative_volume, + absolute_volume=absolute_volume ) return roll_data_with_state