金融商品の価格を設定していますが、各金融商品オブジェクトにはプロパティとしてデイ カウンターが必要です。2 つのメソッドのそれぞれに異なる実装を持つ 4 種類のデイ カウンターがありyear_fraction
ますday_count
。金融商品のこのデイ カウンター プロパティは、他のクラスで価格設定の際に使用され、カーブを適切に割り引く方法を知るためなどに使用されます。ただし、デイ カウント メソッドはすべて静的であり、何らかの数式を適用するだけです。
そのため、オンラインで読んだすべてのことで、静的メソッドを使用せず、代わりにモジュールレベルの関数を使用するように指示されていたにもかかわらず、このようなものを実装せずに正しい DayCounter を適切に渡す方法がわかりませんでした
class DayCounter:
__metaclass__ = abc.ABCMeta
@abc.abstractstaticmethod
def year_fraction(start_date, end_date):
raise NotImplementedError("DayCounter subclass must define a year_fraction method to be valid.")
@abc.abstractstaticmethod
def day_count(start_date, end_date):
raise NotImplementedError("DayCounter subclass must define a day_count method to be valid.")
class Actual360(DayCounter):
@staticmethod
def day_count(start_date, end_date):
# some unique formula
@staticmethod
def year_fraction(start_date, end_date):
# some unique formula
class Actual365(DayCounter):
@staticmethod
def day_count(start_date, end_date):
# some unique formula
@staticmethod
def year_fraction(start_date, end_date):
# some unique formula
class Thirty360(DayCounter):
@staticmethod
def day_count(start_date, end_date):
# some unique formula
@staticmethod
def year_fraction(start_date, end_date):
# some unique formula
class ActualActual(DayCounter):
@staticmethod
def day_count(start_date, end_date):
# some unique formula
@staticmethod
def year_fraction(start_date, end_date):
# some unique formula
そのため、パラメーターとして商品が渡される特定の商品の価格設定エンジンで、必要に応じて商品のデイ カウンター プロパティを使用できます。
Pythonでより慣用的/スタイル的に受け入れられるものが欠けていますか、それとも静的メソッドのみのクラスの適切な使用のように思えますか?
例:
私は FxPricingEngine クラスを持っています。このクラスには__init__
、FxInstrument とそれに続くunderlying_instrument
プロパティを渡すメソッドがあります。次にValue
、価格設定エンジンの方法を使用するために、特定の日数カウンターで曲線を割り引く必要があります。正しい式を適用できるように渡すメソッドを持つYieldCurve
クラスがあります。実際、クラスが提供しているのは、独自の実装に論理的な編成を提供することだけです。discount
self.underlying_instrument.day_counter.year_fraction