mirror of
https://github.com/RolandWH/SIPPCompare.git
synced 2025-03-14 13:51:36 +00:00
fix bugs and add platform name opt
This commit is contained in:
parent
c20e1e9d09
commit
83c02ec4db
@ -19,7 +19,7 @@
|
|||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>461</width>
|
<width>461</width>
|
||||||
<height>191</height>
|
<height>226</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
@ -41,66 +41,76 @@
|
|||||||
<property name="verticalSpacing">
|
<property name="verticalSpacing">
|
||||||
<number>10</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="share_plat_fee_lab">
|
<widget class="QLabel" name="share_plat_fee_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Share platform fee</string>
|
<string>Share platform fee</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="2">
|
<item row="5" column="2">
|
||||||
<widget class="QLineEdit" name="share_deal_fee_box"/>
|
<widget class="QLineEdit" name="share_deal_fee_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="4" column="2">
|
||||||
<widget class="QLineEdit" name="share_plat_max_fee_box"/>
|
<widget class="QLineEdit" name="share_plat_max_fee_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="1" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="fund_deal_fee_lab">
|
<widget class="QLabel" name="fund_deal_fee_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Fund dealing fee</string>
|
<string>Fund dealing fee</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QLineEdit" name="fund_deal_fee_box"/>
|
<widget class="QLineEdit" name="fund_deal_fee_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="3" column="2">
|
||||||
<widget class="QLineEdit" name="share_plat_fee_box"/>
|
<widget class="QLineEdit" name="share_plat_fee_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="4" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="share_plat_max_fee_lab">
|
<widget class="QLabel" name="share_plat_max_fee_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Share platform fee cap</string>
|
<string>Share platform fee cap</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="2">
|
<item row="8" column="2">
|
||||||
<widget class="QLineEdit" name="share_deal_reduce_amount_box"/>
|
<widget class="QLineEdit" name="share_deal_reduce_amount_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0" colspan="2">
|
<item row="5" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="share_deal_fee_lab">
|
<widget class="QLabel" name="share_deal_fee_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Share dealing fee</string>
|
<string>Share dealing fee</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0" colspan="2">
|
<item row="8" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="share_deal_reduce_amount_lab">
|
<widget class="QLabel" name="share_deal_reduce_amount_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Share dealing fee discount</string>
|
<string>Share dealing fee discount</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="2">
|
<item row="7" column="2">
|
||||||
<widget class="QLineEdit" name="share_deal_reduce_trades_box"/>
|
<widget class="QLineEdit" name="share_deal_reduce_trades_box"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0" colspan="2">
|
<item row="7" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="share_deal_reduce_trades_lab">
|
<widget class="QLabel" name="share_deal_reduce_trades_lab">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Share dealing discount # of trades</string>
|
<string>Share dealing discount # of trades</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QLabel" name="plat_name_lab">
|
||||||
|
<property name="text">
|
||||||
|
<string>Platform name</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QLineEdit" name="plat_name_box"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QPushButton" name="save_but">
|
<widget class="QPushButton" name="save_but">
|
||||||
@ -118,6 +128,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
|
<tabstop>plat_name_box</tabstop>
|
||||||
<tabstop>fund_deal_fee_box</tabstop>
|
<tabstop>fund_deal_fee_box</tabstop>
|
||||||
<tabstop>share_plat_fee_box</tabstop>
|
<tabstop>share_plat_fee_box</tabstop>
|
||||||
<tabstop>share_plat_max_fee_box</tabstop>
|
<tabstop>share_plat_max_fee_box</tabstop>
|
||||||
|
@ -12,6 +12,7 @@ class SIPPCompare(QMainWindow):
|
|||||||
|
|
||||||
# Define class variables
|
# Define class variables
|
||||||
self.fund_plat_fee = 0.0
|
self.fund_plat_fee = 0.0
|
||||||
|
self.plat_name = ""
|
||||||
self.fund_deal_fee = 0.0
|
self.fund_deal_fee = 0.0
|
||||||
self.share_plat_fee = 0.0
|
self.share_plat_fee = 0.0
|
||||||
self.share_plat_max_fee = 0.0
|
self.share_plat_max_fee = 0.0
|
||||||
@ -39,6 +40,7 @@ class SIPPCompare(QMainWindow):
|
|||||||
self.mix_lab.setText(mix_lab_str)
|
self.mix_lab.setText(mix_lab_str)
|
||||||
|
|
||||||
def init_variables(self):
|
def init_variables(self):
|
||||||
|
self.plat_name = self.platform_win.get_plat_name()
|
||||||
self.fund_plat_fee = self.platform_win.get_fund_plat_fee()
|
self.fund_plat_fee = self.platform_win.get_fund_plat_fee()
|
||||||
self.fund_deal_fee = self.platform_win.get_fund_deal_fee()
|
self.fund_deal_fee = self.platform_win.get_fund_deal_fee()
|
||||||
self.share_plat_fee = self.platform_win.get_share_plat_fee()
|
self.share_plat_fee = self.platform_win.get_share_plat_fee()
|
||||||
@ -50,6 +52,7 @@ class SIPPCompare(QMainWindow):
|
|||||||
# Calculate fees
|
# Calculate fees
|
||||||
def calculate_fees(self):
|
def calculate_fees(self):
|
||||||
self.init_variables()
|
self.init_variables()
|
||||||
|
self.fund_plat_fees = 0
|
||||||
value_num = float(self.value_input.text()[1:])
|
value_num = float(self.value_input.text()[1:])
|
||||||
slider_val = self.mix_slider.value()
|
slider_val = self.mix_slider.value()
|
||||||
funds_value = (slider_val / 100) * value_num
|
funds_value = (slider_val / 100) * value_num
|
||||||
@ -57,10 +60,10 @@ class SIPPCompare(QMainWindow):
|
|||||||
self.fund_deal_fees = fund_trades_num * self.fund_deal_fee
|
self.fund_deal_fees = fund_trades_num * self.fund_deal_fee
|
||||||
remaining = funds_value
|
remaining = funds_value
|
||||||
|
|
||||||
for i in range(1, len(self.tiered_fees[0])):
|
for i in range(1, len(self.fund_plat_fee[0])):
|
||||||
band = self.tiered_fees[0][i]
|
band = self.fund_plat_fee[0][i]
|
||||||
prev_band = self.tiered_fees[0][i - 1]
|
prev_band = self.fund_plat_fee[0][i - 1]
|
||||||
fee = self.tiered_fees[1][i]
|
fee = self.fund_plat_fee[1][i]
|
||||||
gap = (band - prev_band)
|
gap = (band - prev_band)
|
||||||
|
|
||||||
if remaining > gap:
|
if remaining > gap:
|
||||||
@ -88,7 +91,7 @@ class SIPPCompare(QMainWindow):
|
|||||||
def show_output_win(self):
|
def show_output_win(self):
|
||||||
# Refresh the results when new fees are calculated
|
# Refresh the results when new fees are calculated
|
||||||
self.output_win.display_output(self.fund_plat_fees, self.fund_deal_fees,
|
self.output_win.display_output(self.fund_plat_fees, self.fund_deal_fees,
|
||||||
self.share_plat_fees, self.share_deal_fees)
|
self.share_plat_fees, self.share_deal_fees, self.plat_name)
|
||||||
self.output_win.show()
|
self.output_win.show()
|
||||||
|
|
||||||
# Show the platform editor window (currently useless)
|
# Show the platform editor window (currently useless)
|
||||||
|
@ -14,20 +14,21 @@ class OutputWindow(QWidget):
|
|||||||
|
|
||||||
self.res_save_but.clicked.connect(self.save_results)
|
self.res_save_but.clicked.connect(self.save_results)
|
||||||
self.results_str = ""
|
self.results_str = ""
|
||||||
|
self.platform_name = ""
|
||||||
|
|
||||||
def save_results(self):
|
def save_results(self):
|
||||||
cur_time = datetime.datetime.now()
|
cur_time = datetime.datetime.now()
|
||||||
if not os.path.exists("output"):
|
if not os.path.exists("output"):
|
||||||
os.makedirs("output")
|
os.makedirs("output")
|
||||||
filename_str = (f"output/{cur_time.year}-{cur_time.month}-{cur_time.day}"
|
filename_str = f"output/{self.platform_name}-{cur_time.year}.{cur_time.month}.{cur_time.day}.txt"
|
||||||
f".{cur_time.hour}-{cur_time.minute}-{cur_time.second}.txt")
|
|
||||||
output_file = open(filename_str, "wt")
|
output_file = open(filename_str, "wt")
|
||||||
output_file.write(self.results_str)
|
output_file.write(self.results_str)
|
||||||
|
|
||||||
|
|
||||||
def display_output(self, fund_plat_fees: float, fund_deal_fees: float,
|
def display_output(self, fund_plat_fees: float, fund_deal_fees: float,
|
||||||
share_plat_fees: float, share_deal_fees: float):
|
share_plat_fees: float, share_deal_fees: float, plat_name: str):
|
||||||
self.results_str = "Fees breakdown:"
|
self.platform_name = plat_name
|
||||||
|
self.results_str = f"Fees breakdown (Platform \"{self.platform_name}\"):"
|
||||||
|
|
||||||
self.results_str += "\n\nPlatform fees:"
|
self.results_str += "\n\nPlatform fees:"
|
||||||
self.results_str += f"\n\tFund platform fees: £{round(fund_plat_fees, 2):.2f}"
|
self.results_str += f"\n\tFund platform fees: £{round(fund_plat_fees, 2):.2f}"
|
||||||
|
@ -11,6 +11,7 @@ class PlatformEdit(QWidget):
|
|||||||
[0, 250000, 1000000, 2000000],
|
[0, 250000, 1000000, 2000000],
|
||||||
[0, 0.25, 0.1, 0.05]
|
[0, 0.25, 0.1, 0.05]
|
||||||
]
|
]
|
||||||
|
self.plat_name = ""
|
||||||
self.fund_deal_fee = 0.0
|
self.fund_deal_fee = 0.0
|
||||||
self.share_plat_fee = 0.0
|
self.share_plat_fee = 0.0
|
||||||
self.share_plat_max_fee = 0.0
|
self.share_plat_max_fee = 0.0
|
||||||
@ -21,6 +22,7 @@ class PlatformEdit(QWidget):
|
|||||||
self.save_but.clicked.connect(self.init_variables)
|
self.save_but.clicked.connect(self.init_variables)
|
||||||
|
|
||||||
def init_variables(self):
|
def init_variables(self):
|
||||||
|
self.plat_name = self.plat_name_box.text()
|
||||||
self.fund_deal_fee = float(self.fund_deal_fee_box.text())
|
self.fund_deal_fee = float(self.fund_deal_fee_box.text())
|
||||||
self.share_plat_fee = float(self.share_plat_fee_box.text()) / 100
|
self.share_plat_fee = float(self.share_plat_fee_box.text()) / 100
|
||||||
self.share_plat_max_fee = float(self.share_plat_max_fee_box.text())
|
self.share_plat_max_fee = float(self.share_plat_max_fee_box.text())
|
||||||
@ -28,6 +30,9 @@ class PlatformEdit(QWidget):
|
|||||||
self.share_deal_reduce_trades = float(self.share_deal_reduce_trades_box.text())
|
self.share_deal_reduce_trades = float(self.share_deal_reduce_trades_box.text())
|
||||||
self.share_deal_reduce_amount = float(self.share_deal_reduce_amount_box.text())
|
self.share_deal_reduce_amount = float(self.share_deal_reduce_amount_box.text())
|
||||||
|
|
||||||
|
def get_plat_name(self):
|
||||||
|
return self.plat_name
|
||||||
|
|
||||||
def get_fund_plat_fee(self):
|
def get_fund_plat_fee(self):
|
||||||
return self.fund_plat_fee
|
return self.fund_plat_fee
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user