Skip to content

Instantly share code, notes, and snippets.

@jrdnh
jrdnh / loan_components.py
Created February 7, 2024 13:15
Loan model
# Created by jrdnh 2024-02-06
# jrdnh.github.io
import random
from abc import abstractmethod
from datetime import date
from functools import cache
from itertools import islice, pairwise, takewhile
from typing import Generator
@jrdnh
jrdnh / companion.py
Created January 16, 2024 03:02
Multifamily financial model
# Created by jrdnh 2024-01-15
# jrdnh.github.io
from datetime import date
from itertools import islice, pairwise, takewhile
from models import RelativeDelta
from pydantic import Field
from utils import YF, FixedIntervalSeries, sumproduct
@jrdnh
jrdnh / noi.json
Last active January 15, 2024 21:48
Assumptions for multifamily financial model
{
"ref_date": "2019-12-31",
"freq": {
"months": 1
},
"effective_gross_income": {
"ref_date": "2019-12-31",
"freq": {
"years": 1
},
# jrdnh 2024-01-07
#########
# Definition for Pydantic-compatible relativedelta
from typing import Annotated, Any, Optional
from datetime import date
from dateutil.relativedelta import relativedelta, weekday
from pydantic import BaseModel, Field, model_serializer, model_validator
from pydantic_core import core_schema
@jrdnh
jrdnh / relativedelta.py
Created January 7, 2024 22:18
Pydantic-compatible wrapper for dateutil.relativedelta.relativedelta
# https://github.com/jrdnh
# Pydantic-compatible wrapper for dateutil.relativedelta.relativedelta
from typing import Annotated, Any, Optional
from datetime import date
from dateutil.relativedelta import relativedelta, weekday
from pydantic import BaseModel, Field, model_serializer, model_validator
from pydantic_core import core_schema
@jrdnh
jrdnh / ca primary employment h_county.json
Created October 24, 2017 03:31
California-LODES-Map
[{"h_county":"c001","connections":[{"w_county":"c001","jobScale":0.8481},{"w_county":"c003","jobScale":0.1902},{"w_county":"c005","jobScale":0.3197},{"w_county":"c007","jobScale":0.418},{"w_county":"c009","jobScale":0.2852},{"w_county":"c011","jobScale":0.2424},{"w_county":"c013","jobScale":0.7208},{"w_county":"c015","jobScale":0.2105},{"w_county":"c017","jobScale":0.4568},{"w_county":"c019","jobScale":0.5249},{"w_county":"c021","jobScale":0.2477},{"w_county":"c023","jobScale":0.3407},{"w_county":"c025","jobScale":0.2599},{"w_county":"c027","jobScale":0.1546},{"w_county":"c029","jobScale":0.4323},{"w_county":"c031","jobScale":0.3475},{"w_county":"c033","jobScale":0.3258},{"w_county":"c035","jobScale":0.1772},{"w_county":"c037","jobScale":0.6368},{"w_county":"c039","jobScale":0.3849},{"w_county":"c041","jobScale":0.5866},{"w_county":"c043","jobScale":0.2284},{"w_county":"c045","jobScale":0.4128},{"w_county":"c047","jobScale":0.4479},{"w_county":"c051","jobScale":0.1861},{"w_county":"c053","jobScale":0.5174},{"