Skip to content

Commit

Permalink
finalised? commission report
Browse files Browse the repository at this point in the history
  • Loading branch information
Rob Carver committed Mar 20, 2024
1 parent 0ae5e96 commit e102550
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 22 deletions.
4 changes: 2 additions & 2 deletions sysproduction/reporting/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
get_position_limits_as_df,
)
from sysproduction.reporting.data.volume import get_liquidity_data_df
from sysproduction.reporting.data.commissions import df_of_configure_and_broker_block_cost_with_ratio_sorted
from sysproduction.reporting.data.commissions import df_of_configure_and_broker_block_cost_sorted_by_diff

REPORT_DATETIME_FORMAT = "%d/%m/%Y %H:%M"

Expand Down Expand Up @@ -953,7 +953,7 @@ def df_commissions(self):
return self.cache.get(self._df_commissions)

def _df_commissions(self):
combined_df_costs = df_of_configure_and_broker_block_cost_with_ratio_sorted(self.data)
combined_df_costs = df_of_configure_and_broker_block_cost_sorted_by_diff(self.data)

return combined_df_costs

Expand Down
48 changes: 28 additions & 20 deletions sysproduction/reporting/data/commissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,51 @@

import pandas as pd
import numpy as np
from syscore.genutils import list_intersection
from sysobjects.spot_fx_prices import currencyValue
from sysproduction.data.instruments import diagInstruments
from sysproduction.data.broker import dataBroker
from sysproduction.data.contracts import dataContracts
from sysobjects.contracts import futuresContract
from sysdata.data_blob import dataBlob

def df_of_configure_and_broker_block_cost_with_ratio_sorted(data: dataBlob) -> pd.DataFrame:
df = df_of_configure_and_broker_block_cost(data)
diff = df[BROKER_COLUMN] - df[CONFIGURED_COLUMN]
df[RATIO_COLUMN] = ratio
missing = currencyValue(currency='missing', value=0)

df.sort_values(by=RATIO_COLUMN)

return df

def df_of_configure_and_broker_block_cost(data: dataBlob) -> pd.DataFrame:
def df_of_configure_and_broker_block_cost_sorted_by_diff(data: dataBlob) -> pd.DataFrame:
list_of_instrument_codes = get_instrument_list(data)

configured_costs = get_current_configured_block_costs(data=data, list_of_instrument_codes=list_of_instrument_codes)
broker_costs = get_broker_block_costs(data=data, list_of_instrument_codes=list_of_instrument_codes)

both = []
valid_costs = {}
missing_values = {}
for instrument_code in list_of_instrument_codes:
configured_cost = configured_costs[instrument_code]
broker_cost = broker_costs[instrument_code]

if configured_cost.currency==broker_cost.currency:
both.append([configured_cost.value, broker_cost.value])
configured_cost = configured_costs.get(instrument_code, missing)
broker_cost = broker_costs.get(instrument_code, missing)
if configured_cost is missing or broker_cost is missing:
missing_values[instrument_code] =[configured_cost.currency, broker_cost.currency, "One or both missing"]
elif configured_cost.currency==broker_cost.currency:
configured_cost_instrument=configured_cost.value
broker_cost_instrument = broker_cost.value
diff = broker_cost_instrument -configured_cost_instrument
valid_costs[instrument_code]=[ configured_cost_instrument, broker_cost_instrument, diff]
else:
missing_values[instrument_code]=[configured_cost.currency, broker_cost.currency, "Currency doesn't match"]

valid_costs_df = pd.DataFrame(valid_costs)
missing_values_df = pd.DataFrame(missing_values)
valid_costs_df = valid_costs_df.transpose()
missing_values_df = missing_values_df.transpose()
valid_costs_df.columns = missing_values_df.columns = [CONFIGURED_COLUMN, BROKER_COLUMN, DIFF_COLUMN]
valid_costs_df = valid_costs_df.sort_values(DIFF_COLUMN)

both = pd.concat([valid_costs_df, missing_values_df], axis=0)

both = pd.DataFrame(both)
both.columns = [CONFIGURED_COLUMN, BROKER_COLUMN]
return both

CONFIGURED_COLUMN = 'configured'
BROKER_COLUMN = 'broker'
RATIO_COLUMN = 'ratio'
DIFF_COLUMN = 'diff'

def get_instrument_list(data: dataBlob)-> list:
db = dataBroker(data)
Expand All @@ -54,7 +61,7 @@ def get_current_configured_block_costs(data: dataBlob, list_of_instrument_codes:
try:
costs = diag_instruments.get_block_commission_for_instrument_as_currency_value(instrument_code)
except:
costs = np.nan
costs = missing
block_costs_from_config[instrument_code] = costs

return block_costs_from_config
Expand Down Expand Up @@ -82,6 +89,7 @@ def get_costs_given_priced_contracts(data: dataBlob, priced_contracts: pd.Series
try:
costs = db.get_commission_for_contract_in_currency_value(contract)
except:
costs = np.nan
costs = missing
block_costs_from_broker[instrument_code] = costs
return block_costs_from_broker

0 comments on commit e102550

Please sign in to comment.