Skip to content

Commit

Permalink
v0.6.1 (full sflp load)
Browse files Browse the repository at this point in the history
  • Loading branch information
open-risk committed Apr 3, 2023
1 parent 8adf7d8 commit 6ed3888
Show file tree
Hide file tree
Showing 13 changed files with 377 additions and 266 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@ ChangeLog
===========================
PLEASE NOTE THIS IS ONLY A BETA RELEASE. THE OPENNPL API IS STILL UNSTABLE

v0.6.1 (03-04-2023)
-------------------
* Functionality: Complete SFLP Template Loading

v0.6.0 (13-03-2023)
-------------------
* Functionality: Almost complete Single Family Loan Performance Templates (SFLP) (except repayment strings)
* Functionality: Almost complete Single Family Loan Performance Templates (SFLP) (except forbearance, enforcement and repayment strings)
* Documentation: SFLP Data Models

v0.5.3 (18-01-2023)
Expand Down
31 changes: 19 additions & 12 deletions sflp_portfolio/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,62 +44,69 @@ class PortfolioAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
# search_fields = ['name']
# list_display = ('name', 'creation_date', 'last_change_date')
list_display = ('name', 'creation_date', 'last_change_date')


class Portfolio_SnapshotAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
# search_fields = ['name']
# list_display = ('name', 'creation_date', 'cutoff_date')
# search_fields = ['monthly_reporting_period']
list_display = ('monthly_reporting_period',)


class CounterpartyAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
list_display = ('counterparty_identifier', 'loan_identifier', 'debt_to_income', 'number_of_borrowers',
'borrower_credit_score_at_origination')


class CounterpartyStateAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
# TODO date_hierarchy = ('portfolio_snapshot_id')
list_display = ('counterparty_identifier', 'portfolio_snapshot_id')


class LoanAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
search_fields = ['loan_identifier']
list_display = (
'loan_identifier', 'channel', 'original_loan_term', 'original_upb', 'original_loan_to_value_ratio',
'loan_purpose')


class LoanStateAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
list_display = ('loan_id', 'portfolio_snapshot_id')
list_display = ('loan_identifier', 'portfolio_snapshot_id', 'servicer_name', 'total_principal_current',
'remaining_months_to_legal_maturity')


class PropertyCollateralAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
list_display = (
'property_type', 'number_of_units', 'metropolitan_statistical_area', 'property_state', 'zip_code_short')


class PropertyCollateralStateAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False


class ExternalCollectionAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False
list_display = ('property_collateral_id', 'portfolio_snapshot_id', 'property_valuation_method')


class EnforcementAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False

list_display = ('property_collateral_identifier', 'portfolio_snapshot_id',
'net_sales_proceeds', 'asset_recovery_costs', 'foreclosure_costs')

class ForbearanceAdmin(admin.ModelAdmin):
save_as = True
view_on_site = False

list_display = ('loan_identifier', 'portfolio_snapshot_id', 'modification_flag',
'noninterest_bearing_upb', 'principal_forgiveness_amount')


admin.site.register(Portfolio, PortfolioAdmin)
Expand Down
10 changes: 5 additions & 5 deletions sflp_portfolio/management/commands/load_core_sflp_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class Command(BaseCommand):
# print('LoanState: ', i)
loan_state = LoanState(
id=i,
loan_id=loan_dict[entry[0]],
loan_identifier=loan_dict[entry[0]],
portfolio_snapshot_id=portfolio_snapshot_dict[entry[1]],
high_loan_to_value_refinance_option_indicator=entry[2],
zero_balance_code=entry[3],
Expand Down Expand Up @@ -192,8 +192,8 @@ class Command(BaseCommand):
for index, entry in counterparty_data.iterrows():
counterparty = Counterparty(
id=i,
loan_id=loan_dict[entry[0]], # loan FK reference
counterparty_id=entry[0], # counterparty ID is identical to loan ID
loan_identifier=loan_dict[entry[0]], # loan FK reference
counterparty_identifier=entry[0], # counterparty ID is identical to loan ID
number_of_borrowers=entry[1],
debt_to_income=entry[2],
borrower_credit_score_at_origination=entry[3],
Expand Down Expand Up @@ -222,7 +222,7 @@ class Command(BaseCommand):
for index, entry in counterparty_state_data.iterrows():
counterparty_state = CounterpartyState(
id=i,
counterparty_id=counterparty_dict[entry[0]],
counterparty_identifier=counterparty_dict[entry[0]],
portfolio_snapshot_id=portfolio_snapshot_dict[entry[1]],
borrower_credit_score_current=entry[2],
coborrower_credit_score_current=entry[3],
Expand All @@ -248,7 +248,7 @@ class Command(BaseCommand):
for index, entry in property_collateral_data.iterrows():
property_collateral = PropertyCollateral(
id=i,
loan_id=loan_dict[entry[0]], # loan FK reference
loan_identifier=loan_dict[entry[0]], # loan FK reference
property_type=entry[1],
number_of_units=entry[2],
occupancy_status=entry[3],
Expand Down

0 comments on commit 6ed3888

Please sign in to comment.