首页 > 【薪资计算】SS Is All You Need
头像
赛文X
编辑于 04-30 11:55
+ 关注

【薪资计算】SS Is All You Need

Abstract & Intorduction

对于校招和社招,待遇是不可不关注的一大部分。

由于各个公司各方面待遇不统一,市场上出现了不同的薪酬表示方法,如到手,年包,月薪,时薪等方式

即不同行业存在一定的待遇鸿沟(Pay Gap)

为了解决这个问题,本文提出了一种新颖的待遇计算方法:赛文年包(SevenPackage, SP)和赛文薪(SevenSalary, SS),并在常见的领域进行了两者的对比计算

Related Work

先看一个网上广泛流传的段子:

公务员的的20万指的是到手现金20万,此外还有2万的年终奖,2万的精神文明奖,发的米面粮油牙膏姨妈巾折2万,免费宿舍食堂一年折合2万,公积金年金一年4万,养老保险医疗保险等2万,加起来12万。公务员因为还有隐形福利,实际上远不止20万。公务员这个收入可以赚一辈子,活到80可以赚到530万。根据1公币=3国企币,1国企币=3私企币的较为客观的换算来看,楼主的这个530万相当千华为的4800万。另外华为996,楼主1055,工作时长华为是楼主的3倍,所以楼主的4800万要相当于华为的1.4亿。更不用说楼主退休保守副部级

上述说法应该是挺多非互联网行业的算法,包括不限于一些国企银行

来看看互联网公司的待遇,以字节跳动的硕士测开白菜25k来说吧,

HR会给到一种说法:25*16+50k签字费+1.5*12房补

定义这种说法的HR包为:46.8w

Method & Experiment

这里定义赛文年包(SP)为:

SevenPackage = (Salary + Provident + Welfare) / ( Hour * Day)

赛文年包(SP) = HR包 - 个税 + 公积金 + 各类福利收入

SevenSalary

赛文待遇(SS) = SP / ((日工作时间 * 年工作天数))

先上代码:


class TaxRatio:
    def __init__(self, lower_bound, upper_bound, ratio, coupon):
        self.min = lower_bound
        self.max = upper_bound
        self.ratio = ratio
        self.coupon = coupon


class Tax:
    MAX_SALARY = 1000 * 1000 * 1000
    TAX_RATIO = [TaxRatio(0, 36000, 0.03, 0),
                 TaxRatio(36000 + 1, 144000, 0.1, 2520),
                 TaxRatio(144000 + 1, 300000, 0.2, 16920),
                 TaxRatio(300000 + 1, 420000, .25, 31920),
                 TaxRatio(420000 + 1, 660000, .3, 52920),
                 TaxRatio(660000 + 1, 960000, .35, 85920),
                 TaxRatio(960000 + 1, MAX_SALARY, .45, 181920)]
    TAX_THRESHOLD = 5000

    TAX_RATIO_BEFORE_2019 = [
        TaxRatio(0, 1500, 0.03, 0),
        TaxRatio(1500 + 1, 4500, .1, 105),
        TaxRatio(4500 + 1, 9000, .2, 555),
        TaxRatio(9000 + 1, 35000, .25, 1005),
        TaxRatio(35000 + 1, 55000, .3, 2755),
        TaxRatio(55000 + 1, 80000, .35, 5505), 
        TaxRatio(80000 + 1, MAX_SALARY, .45, 13505)
    ]
    
    def __init__(self, old_ratio=.08, medical_ratio=.02, 
                 unemployment_ratio=.005, 
                 house_funding_ratio=.07, 
                 insurance_upper_bound=31014,
                 house_found_upper_bound=31014):
        self.three_insurance_ratio = old_ratio + medical_ratio + unemployment_ratio
        self.house_funding_ratio = house_funding_ratio
        self.insurance_upper_bound = insurance_upper_bound
        self.house_found_upper_bound = house_found_upper_bound
        
    @classmethod
    def get_tax_ratio(cls, should_tax, new=True):
        ratios = cls.TAX_RATIO if new else cls.TAX_RATIO_BEFORE_2019
        for tax_ratio in ratios:
            if tax_ratio.min <= should_tax <= tax_ratio.max:
                return tax_ratio
        raise ValueError('Fail to find tax ratio for {}'.format(should_tax))

    def get_social_money(self, salary):
        insurance_base = self.insurance_upper_bound if salary > self.insurance_upper_bound else salary
        house_funding_base = self.house_found_upper_bound if salary > self.house_found_upper_bound else salary
        return insurance_base * self.three_insurance_ratio + house_funding_base * self.house_funding_ratio
        
    def get_new_tax(self, salary, taxfree):
        social_money = self.get_social_money(salary)
        total_tax_free = social_money + self.TAX_THRESHOLD + taxfree

        if salary <= total_tax_free:
            return [0 for _ in range(12)]
        
        res = list()
        for i in range(1, 13):
            already_taxed = sum(res)
            should_tax = (salary - total_tax_free) * i
            tax_ratio = self.get_tax_ratio(should_tax)
            tax = should_tax * tax_ratio.ratio - already_taxed - tax_ratio.coupon
            tax = round(tax)
            res.append(tax)
        return res

def calSevenSalary(infos, monthSalary, yearAwardCnt, providentRatio, otherIncome, workHourPerDay, annualHoliday, remarks=''):
    tax = Tax()

    income = monthSalary * (12+yearAwardCnt)
    pFund = providentRatio*monthSalary
    tax_per_month = tax.get_new_tax(income, 3000+pFund)
    total_tax = sum(tax_per_month)
    wage = income - total_tax
    #print(f"收入: {income}")
    #print(f"每月税: {tax_per_month}")
    #print(f"年税: {total_tax}")
    SevenPKG = wage + pFund + otherIncome
    SevenSalary = 1000 * SevenPKG / (60*workHourPerDay*(250-annualHoliday)) 
    print(infos, f"\t{SevenPKG/10:.2f}w", f"\t{SevenSalary:.2f}", '\t' ,remarks)
    return SevenSalary

if __name__ == '__main__':
    
    calSevenSalary('体制', 12, 2, 0.48, 50, 5, 5, '一线城市公务员')
    calSevenSalary('字节', 25, 3, 0.12, 1.5*12+2*12+10, 8, 8, '测开,房补包三餐')
    calSevenSalary('字节', 28, 3, 0.12, 1.5*12+2*12+10, 8.5, 8, '开发,房补包三餐,开发比测开累一点')
    calSevenSalary('腾讯', 23, 2.5, 0.12, 4*12+2*12+10, 7.5, 8, '开发,养老部门版,4k房补')
    calSevenSalary('华为', 25, 4, 0.04, 25*200/1000, 9, 0, '公积金按照20而不是25,换算公积金比例为4%,年终可能也是基本工资,不过考虑到加班费,这里多给点')
    calSevenSalary('中兴', 18, 3, 0.05, 10, 9, 5, '一般是996,这里时间都算少了')
    calSevenSalary('银行', 10, 6, 0.48, 30, 6, 5, '一般银行hr说总包都是15w左右,年终占比大')
    calSevenSalary('国企', 15, 2, 0.12, 10, 7, 5, '国企hr总包一般为25w')



Result

根据上述段子:

公务员年收入:20w现金+12w福利 = 32w,这里定义为:

公务员的赛文包为32w,根据现金推测应该是一线城市收入

那么如果用公务员算法:

上面这位大厂测开硕士的赛文包是:

到手31w+7.2w公积金+餐补2*12k+房补1*12k+商业保险1w

这里对比常见的工作的SP与SS:

职位 赛文包 赛文待遇 备注

----------------------------

体制 22.38w 3.04 一线城市公务员

字节 43.00w 3.70 测开,房补包三餐

字节 47.54w 3.85 开发,房补包三餐,开发比测开累一点

腾讯 41.83w 3.84 开发,养老部门版,4k房补

华为 40.60w 3.01 公积金按照20而不是25,换算公积金比例为4%,年终可能也是基本工资,不过考虑到加班费,这里多给点

中兴 28.09w 2.12 一般是996,这里时间都算少了

银行 21.48w 2.44 一般银行hr说总包都是15w左右,年终占比大

国企 22.18w 2.16 国企hr总包一般为25w

Conclusion

先跪求盲审老师放过毕设

娱乐向文章

点赞关注收藏 超50 持续完善本篇Thesis

全部评论

(15) 回帖
加载中...
话题 回帖